cancel
Showing results for 
Search instead for 
Did you mean: 

Records management record cut-off and automatic destruction

aw560
Champ in-the-making
Champ in-the-making
I'm having trouble getting record cut-off and automatic destruction working with the Alfresco records management module.
I'm using the Alfresco 2.1.0 community tomcat bundle and version 2.1.0 of the records management AMP, i.e.

alfresco-community-tomcat-2.1.0.zip from http://sourceforge.net/project/showfiles.php?group_id=143373&package_id=157460&release_id=524558

and

alfresco-recordsmanagement-2.1.0.amp from http://sourceforge.net/project/showfiles.php?group_id=143373&package_id=223198&release_id=524559

and I'm running Java 1.6 on windows XP.

I followed the following steps to install Alfresco and test the records management module:

1) Extract and start alfresco.
2) Stop alfresco and install records management module.
3) Start alfresco login as admin and create a file plan space from scratch.
4) Add destroy instructions to the file plan.
5) Modify the file plan, fill in required fields, check 'Process Cutoff' check box.
6) Create new content in the new file plan space and set 'Cutoff Date' to the current date/time.
7) Roll the system time forward to 2.30 am the next morning to activate the records management scheduled actions.

This results in the record remaining in the file plan space, without being flagged as cut off, and not being destroyed.

The alfresco.log shows the following stack trace:
02:30:00,015 ERROR [org.quartz.core.JobRunShell] Job DEFAULT.org_alfresco_module_RecordsManagement_scheduledCutoffJobDetail threw an unhandled Exception:
org.alfresco.service.cmr.repository.ScriptException: Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_cutoff.js': Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_cutoff.js': null
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScript(ScriptServiceImpl.java:222)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
   at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:40)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.alfresco.repo.audit.AuditComponentImpl.auditImpl(AuditComponentImpl.java:256)
   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:191)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
   at $Proxy48.executeScript(Unknown Source)
   at org.alfresco.repo.jscript.ExecuteScriptJob.execute(ExecuteScriptJob.java:86)
   at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
   at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
Caused by: org.alfresco.service.cmr.repository.ScriptException: Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_cutoff.js': null
   at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:116)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScript(ScriptServiceImpl.java:218)
   … 22 more
Caused by: java.lang.NullPointerException
   at org.alfresco.repo.jscript.RhinoScriptProcessor.convertToRhinoModel(RhinoScriptProcessor.java:541)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:468)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:112)
   … 23 more
02:30:00,015 ERROR [org.quartz.core.JobRunShell] Job DEFAULT.org_alfresco_module_RecordsManagement_scheduledRemoveHoldJobDetail threw an unhandled Exception:
org.alfresco.service.cmr.repository.ScriptException: Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_removeHold.js': Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_removeHold.js': null
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScript(ScriptServiceImpl.java:222)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
   at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:40)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.alfresco.repo.audit.AuditComponentImpl.auditImpl(AuditComponentImpl.java:256)
   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:191)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
   at $Proxy48.executeScript(Unknown Source)
   at org.alfresco.repo.jscript.ExecuteScriptJob.execute(ExecuteScriptJob.java:86)
   at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
   at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
Caused by: org.alfresco.service.cmr.repository.ScriptException: Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_removeHold.js': null
   at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:116)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScript(ScriptServiceImpl.java:218)
   … 22 more
Caused by: java.lang.NullPointerException
   at org.alfresco.repo.jscript.RhinoScriptProcessor.convertToRhinoModel(RhinoScriptProcessor.java:541)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:468)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:112)
   … 23 more
02:30:00,078 ERROR [org.quartz.core.ErrorLogger] Job (DEFAULT.org_alfresco_module_RecordsManagement_scheduledCutoffJobDetail threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: org.alfresco.service.cmr.repository.ScriptException: Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_cutoff.js': Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_cutoff.js': null]
   at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
   at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
Caused by: org.alfresco.service.cmr.repository.ScriptException: Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_cutoff.js': Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_cutoff.js': null
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScript(ScriptServiceImpl.java:222)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
   at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:40)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.alfresco.repo.audit.AuditComponentImpl.auditImpl(AuditComponentImpl.java:256)
   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:191)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
   at $Proxy48.executeScript(Unknown Source)
   at org.alfresco.repo.jscript.ExecuteScriptJob.execute(ExecuteScriptJob.java:86)
   at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
   … 1 more
Caused by: org.alfresco.service.cmr.repository.ScriptException: Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_cutoff.js': null
   at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:116)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScript(ScriptServiceImpl.java:218)
   … 22 more
Caused by: java.lang.NullPointerException
   at org.alfresco.repo.jscript.RhinoScriptProcessor.convertToRhinoModel(RhinoScriptProcessor.java:541)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:468)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:112)
   … 23 more
02:30:00,125 ERROR [org.quartz.core.ErrorLogger] Job (DEFAULT.org_alfresco_module_RecordsManagement_scheduledRemoveHoldJobDetail threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: org.alfresco.service.cmr.repository.ScriptException: Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_removeHold.js': Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_removeHold.js': null]
   at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
   at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
Caused by: org.alfresco.service.cmr.repository.ScriptException: Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_removeHold.js': Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_removeHold.js': null
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScript(ScriptServiceImpl.java:222)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
   at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:40)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.alfresco.repo.audit.AuditComponentImpl.auditImpl(AuditComponentImpl.java:256)
   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:191)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
   at $Proxy48.executeScript(Unknown Source)
   at org.alfresco.repo.jscript.ExecuteScriptJob.execute(ExecuteScriptJob.java:86)
   at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
   … 1 more
Caused by: org.alfresco.service.cmr.repository.ScriptException: Failed to execute script 'alfresco/module/org.alfresco.module.RecordsManagement/script/scheduled/scheduled_removeHold.js': null
   at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:116)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScript(ScriptServiceImpl.java:218)
   … 22 more
Caused by: java.lang.NullPointerException
   at org.alfresco.repo.jscript.RhinoScriptProcessor.convertToRhinoModel(RhinoScriptProcessor.java:541)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:468)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:112)
   … 23 more

What appears to be an identical problem has a ticket in the Alfresco issue tracking system:

http://issues.alfresco.com/browse/RM-24

The issue was apparently fixed by Roy Wetherall on 20-Jul-07, and the records management module is dated at 24-Jul-07 on SourceForge.
If it is the same problem, why are binaries with critical bugs being distributed after the source code has been amended to resolve the problem?

This morning I grabbed the latest version of the source from the SVN repository (http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD), revision 2056, and compiled the records management module using Java 1.6.0_05.

Again I unzipped a fresh copy of Alfresco 2.1.0 community tomcat bundle, installed the records management module I compiled, and attempted to start Alfresco but failed with the following stack trace:

11:59:42,765 ERROR [org.springframework.web.context.ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org_alfresco_module_RecordsManagement_ConfigBootstrap' defined in file [C:\alfresco\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\module\org.alfresco.module.RecordsManagement\module-context.xml]: Invocation of init method failed; nested exception is org.alfresco.config.ConfigException: Unable to construct action 'add_transfer_instructions' evaluator classname: org.alfresco.module.recordsManagement.ui.AddTransferInstructionsEvaluator
Caused by:
org.alfresco.config.ConfigException: Unable to construct action 'add_transfer_instructions' evaluator classname: org.alfresco.module.recordsManagement.ui.AddTransferInstructionsEvaluator
   at org.alfresco.web.config.ActionsElementReader.parseActionDefinition(ActionsElementReader.java:222)
   at org.alfresco.web.config.ActionsElementReader.parse(ActionsElementReader.java:92)
   at org.alfresco.config.xml.XMLConfigService.parseConfigElement(XMLConfigService.java:258)
   at org.alfresco.config.xml.XMLConfigService.parse(XMLConfigService.java:114)
   at org.alfresco.config.BaseConfigService.appendConfig(BaseConfigService.java:204)
   at org.alfresco.web.config.WebClientConfigBootstrap.init(WebClientConfigBootstrap.java:72)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1160)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1122)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1085)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:429)
   at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:250)
   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:247)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:161)
   at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:273)
   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:346)
   at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:156)
   at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
   at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
   at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
   at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825)
   at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:714)
   at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
   at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
   at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
   at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
   at org.apache.catalina.core.StandardService.start(StandardService.java:448)
   at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
   at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
11:59:42,812 ERROR [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/alfresco]] Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org_alfresco_module_RecordsManagement_ConfigBootstrap' defined in file [C:\alfresco\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\module\org.alfresco.module.RecordsManagement\module-context.xml]: Invocation of init method failed; nested exception is org.alfresco.config.ConfigException: Unable to construct action 'add_transfer_instructions' evaluator classname: org.alfresco.module.recordsManagement.ui.AddTransferInstructionsEvaluator
Caused by:
org.alfresco.config.ConfigException: Unable to construct action 'add_transfer_instructions' evaluator classname: org.alfresco.module.recordsManagement.ui.AddTransferInstructionsEvaluator
   at org.alfresco.web.config.ActionsElementReader.parseActionDefinition(ActionsElementReader.java:222)
   at org.alfresco.web.config.ActionsElementReader.parse(ActionsElementReader.java:92)
   at org.alfresco.config.xml.XMLConfigService.parseConfigElement(XMLConfigService.java:258)
   at org.alfresco.config.xml.XMLConfigService.parse(XMLConfigService.java:114)
   at org.alfresco.config.BaseConfigService.appendConfig(BaseConfigService.java:204)
   at org.alfresco.web.config.WebClientConfigBootstrap.init(WebClientConfigBootstrap.java:72)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1160)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1122)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1085)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:429)
   at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:250)
   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:247)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:161)
   at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:273)
   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:346)
   at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:156)
   at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
   at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
   at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
   at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825)
   at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:714)
   at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
   at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
   at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
   at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
   at org.apache.catalina.core.StandardService.start(StandardService.java:448)
   at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
   at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
11:59:42,875 ERROR [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/alfresco]] Exception sending context initialized event to listener instance of class org.alfresco.web.app.ContextListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org_alfresco_module_RecordsManagement_ConfigBootstrap' defined in file [C:\alfresco\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\module\org.alfresco.module.RecordsManagement\module-context.xml]: Invocation of init method failed; nested exception is org.alfresco.config.ConfigException: Unable to construct action 'add_transfer_instructions' evaluator classname: org.alfresco.module.recordsManagement.ui.AddTransferInstructionsEvaluator
Caused by:
org.alfresco.config.ConfigException: Unable to construct action 'add_transfer_instructions' evaluator classname: org.alfresco.module.recordsManagement.ui.AddTransferInstructionsEvaluator
   at org.alfresco.web.config.ActionsElementReader.parseActionDefinition(ActionsElementReader.java:222)
   at org.alfresco.web.config.ActionsElementReader.parse(ActionsElementReader.java:92)
   at org.alfresco.config.xml.XMLConfigService.parseConfigElement(XMLConfigService.java:258)
   at org.alfresco.config.xml.XMLConfigService.parse(XMLConfigService.java:114)
   at org.alfresco.config.BaseConfigService.appendConfig(BaseConfigService.java:204)
   at org.alfresco.web.config.WebClientConfigBootstrap.init(WebClientConfigBootstrap.java:72)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1160)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1122)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1085)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:429)
   at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:250)
   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:247)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:161)
   at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:273)
   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:346)
   at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:156)
   at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
   at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
   at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
   at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825)
   at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:714)
   at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
   at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
   at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
   at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
   at org.apache.catalina.core.StandardService.start(StandardService.java:448)
   at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
   at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
   
Any help would be most appreciated.

Thanks in advance.

Adrian
3 REPLIES 3

aw560
Champ in-the-making
Champ in-the-making
Further to my original post, Alfresco 2.1 with the additional Records Management module seems to be very broken with regard to the cut-off and automatic document destruction functionality.

Alfresco 2.9B Community tomcat bundle (available here http://sourceforge.net/project/showfiles.php?group_id=143373&package_id=157460) using the latest version of the Records Management module available from the SVN repository (https://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD) is slightly less broken.

If you extract Alfresco, install the records management module, create a file plan space, then attempt to add destroy instructions, an error will appear on the web interface:

javax.faces.el.EvaluationException: Exception while invoking expression #{org_alfresco_module_RecordsManagement_ActionListener.executeScript}
caused by:
java.lang.NullPointerException

and in the alfresco.log log file:

10:01:23,375 ERROR [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/alfresco].[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
   at org.alfresco.module.recordsManagement.ui.RecordsManagementActionListener.executeScript(RecordsManagementActionListener.java:100)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
   at javax.faces.component.UICommand.broadcast(UICommand.java:89)
   at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
   at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
   at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
   at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
   at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:81)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
   at java.lang.Thread.run(Thread.java:619)

If you return to the application you will notice that the 'Destroy Instructions' has been added to the file plan.

Modify the file plan, fill in the required fields and check the 'Process Cutoff' check box.  Add some content to the space and specify a cut off date, roll the system time forward to the next day and have a look at the content you just created in the file plan.  The record will be flagged as cutoff, but will still remain in the space, and an error will have been logged to alfresco.log:

10:16:00,109 ERROR [org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl] Failed to execute asynchronous action: Action[ id=034ffe70-32e0-11dd-9c34-65a0c42add28, node=null ]
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.alfresco.module.recordsManagement.action.DestroyDispositionAction' is defined
   at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:340)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedBeanDefinition(AbstractBeanFactory.java:906)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:161)
   at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:642)
   at org.alfresco.repo.action.ActionServiceImpl.directActionExecution(ActionServiceImpl.java:536)
   at org.alfresco.repo.action.ActionServiceImpl.executeActionImpl(ActionServiceImpl.java:472)
   at org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl$ActionExecutionWrapper$1.execute(AsynchronousActionExecutionQueueImpl.java:258)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:236)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:166)
   at org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl$ActionExecutionWrapper.run(AsynchronousActionExecutionQueueImpl.java:267)
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
   at java.lang.Thread.run(Thread.java:619)

To get rid of the first exception modify RecordsManagementActionListener.java, which can be found in HEAD\root\modules\records-mgmt\source\java\org\alfresco\module\recordsManagement\ui

Edit lines 94 and 100, which both contain the same code:


comp.getChildren().clear();

change this to:


if(null != comp) {
    comp.getChildren().clear();
}

To fix the second exception you will need to modify RecordsManagementScript.java, which can be found in HEAD\root\modules\records-mgmt\source\java\org\alfresco\module\recordsManagement

Edit line 54:


public static final String DESTROY_DISPOSITION_ACTION = "org.alfresco.module.recordsManagement.action.DestroyDispositionAction";

change this to:


public static final String DESTROY_DISPOSITION_ACTION = "org_alfresco_module_RecordsManagement_destroyDispositionAction";

After rebuilding the module and applying it to Alfresco 2.9B, Records Management with scheduled cut-off and record destruction should be working.

kiem_tra
Champ in-the-making
Champ in-the-making
Hey!

Thanks aw560, this is exaclty why i was looking for. My only problem (i'm quite new with Alfresco) is that i can't find the path you talk about (HEAD\root\modules\records-mgmt\source\java\org\alfresco\module\recordsManagement\) Where the hell are the java files? In the amp package? There aren't in the tomcat folder for sure. Can someone help?

I'll continue searching and will post when i'll have a solution.

I'm using Alfresco 3.0 with Records Management 2.1.

Thank you!

Pierre

kiem_tra
Champ in-the-making
Champ in-the-making
Allright. The source files are available in SVN. Seems obvious when you know.

Another question: Do I have to set up the entire SDK structure to rebuild the Record-Management module or can I rebuild the module independently?

And… is it me or there is few documentation about RM (for dev). The Records Management User Guide is helpful for a user, but not for a developper. If someone has good links, help me out!

Thank you!