CMDBuild Forum

Openmaint 2.4.3 - Maintenance Calendar Generator

Hello,

I create a new process of maintenance calendar generator in the management module and it seem work fine. The calendar was generated.

But when I try to perform a new process in the task manager from administrator module I get the error "Not just one activity to advance! " and the calendar is not generated.

 

Can I configure an automatic process for the calendar generator?

I have noticed that when generating a calendar it replaces the one generated previously, then if an work order had already been generated for an activity, when re-generating the calendar another work order is recreated for the same task, since the "Starting WO" attribute returns to take the value "No". 

Can I automatically generate every day the calendar only for the new schedules added, without regenerating all?

 

The attributes that I set:

  -  AllActivitys -> true

  - DateFrom -> 2018-01-01

  - DateTo -> 2018-06-30

  - Simple mode -> “every day”,“

The log:

INFO  2018-05-17 14:39:02 [jsonrpc ] Calling url /schema/taskmanager/startworkflow/read

INFO  2018-05-17 14:39:02 [cmdbuild] reading task's details of 'StartWorkflowTask[id=443031,description=<null>,active=false,cronExpression=<null>,lastExecution=<null>,processClass=<null>,attributes={}]'

INFO  2018-05-17 14:39:02 [cmdbuild] converting logic task 'StartWorkflowTask[id=443031,description=<null>,active=false,cronExpression=<null>,lastExecution=<null>,processClass=<null>,attributes={}]' to store task

INFO  2018-05-17 14:39:02 [jsonrpc ] Calling url /schema/taskmanager/execute

INFO  2018-05-17 14:39:02 [cmdbuild] executing the existing task '443031'

INFO  2018-05-17 14:39:02 [cmdbuild] converting store task 'StartWorkflowTask[id=443031,description=Generacion de calendario,running=true,lastExecution=<null>,cronExpression=0 0 * * ?,parameters={classname=MaintCalGenerator, attributes=AllActivities=true&#124;Description=calendario primer semestre&#124;DateFrom=01/01/2018&#124;DateTo=31/06/2018}]' to logic task

INFO  2018-05-17 14:39:02 [cmdbuild] converting store task 'StartWorkflowTask[id=443031,description=Generacion de calendario,running=true,lastExecution=<null>,cronExpression=0 0 * * ?,parameters={classname=MaintCalGenerator, attributes=AllActivities=true&#124;Description=calendario primer semestre&#124;DateFrom=01/01/2018&#124;DateTo=31/06/2018}]' to logic task

INFO  2018-05-17 14:39:02 [cmdbuild] executing an existing scheduled task 'StartWorkflowTask[id=443031,description=Generacion de calendario,active=true,cronExpression=0 0 * * ?,lastExecution=<null>,processClass=MaintCalGenerator,attributes={AllActivities=true, Description=calendario primer semestre, DateFrom=01/01/2018, DateTo=31/06/2018}]'

INFO  2018-05-17 14:39:02 [cmdbuild] starting job '443031'

INFO  2018-05-17 14:39:02 [workflow] getting process class with name 'MaintCalGenerator'

INFO  2018-05-17 14:39:02 [workflow] starting process for class 'MaintCalGenerator' with variables '{}'

INFO  2018-05-17 14:39:02 [cmdbuild] trying to login user workflow with group null

INFO  2018-05-17 14:39:02 [workflow] pushing event 'WorkflowEvent[type=START,processDefinitionId=Process_maintcalgenerator,processInstanceId=501_Package_maintcalgenerator_Process_maintcalgenerator]' for session '170'

INFO  2018-05-17 14:39:02 [cmdbuild] trying to login user workflow with group null

INFO  2018-05-17 14:39:02 [workflow] pushing event 'WorkflowEvent[type=UPDATE,processDefinitionId=Process_maintcalgenerator,processInstanceId=501_Package_maintcalgenerator_Process_maintcalgenerator]' for session '170'

WARN  2018-05-17 14:39:03 [sql     ] cannot get content of column 'MaintCalGenerator#FlowStatus#Description'

WARN  2018-05-17 14:39:03 [sql     ] cannot get content of column 'MaintCalGenerator#FlowStatus#Description'

ERROR 2018-05-17 14:39:03 [cmdbuild] error on job '443031'

java.lang.UnsupportedOperationException: Not just one activity to advance! (0 activities)

at org.cmdbuild.logic.workflow.DefaultWorkflowLogic.startProcess(DefaultWorkflowLogic.java:378)

at org.cmdbuild.logic.workflow.DefaultWorkflowLogic.startProcess(DefaultWorkflowLogic.java:347)

at org.cmdbuild.logic.workflow.StartProcess.execute(StartProcess.java:146)

at org.cmdbuild.logic.taskmanager.commons.SchedulerCommandWrapper.execute(SchedulerCommandWrapper.java:20)

at org.cmdbuild.scheduler.command.BuildableCommandBasedJob.execute(BuildableCommandBasedJob.java:62)

at org.cmdbuild.scheduler.ForwardingJob.execute(ForwardingJob.java:23)

at org.cmdbuild.logic.taskmanager.scheduler.DefaultSchedulerFacade$JobWithCallback.execute(DefaultSchedulerFacade.java:64)

at org.cmdbuild.scheduler.ForwardingJob.execute(ForwardingJob.java:23)

at org.cmdbuild.logic.taskmanager.scheduler.DefaultSchedulerFacade$JobWithCallback.execute(DefaultSchedulerFacade.java:64)

at org.cmdbuild.logic.taskmanager.scheduler.DefaultSchedulerFacade.execute(DefaultSchedulerFacade.java:108)

at org.cmdbuild.logic.taskmanager.DefaultTaskManagerLogic$Execute.execute(DefaultTaskManagerLogic.java:565)

at org.cmdbuild.logic.taskmanager.DefaultTaskManagerLogic$Execute.visit(DefaultTaskManagerLogic.java:561)

at org.cmdbuild.logic.taskmanager.task.process.StartWorkflowTask.accept(StartWorkflowTask.java:105)

at org.cmdbuild.logic.taskmanager.DefaultTaskManagerLogic$Execute.execute(DefaultTaskManagerLogic.java:535)

at org.cmdbuild.logic.taskmanager.DefaultTaskManagerLogic$Execute.execute(DefaultTaskManagerLogic.java:507)

at org.cmdbuild.logic.taskmanager.DefaultTaskManagerLogic.execute(DefaultTaskManagerLogic.java:737)

at org.cmdbuild.logic.taskmanager.DefaultTaskManagerLogic.execute(DefaultTaskManagerLogic.java:686)

at org.cmdbuild.logic.taskmanager.ForwardingTaskManagerLogic.execute(ForwardingTaskManagerLogic.java:58)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)

at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

at com.sun.proxy.$Proxy230.execute(Unknown Source)

at org.cmdbuild.servlets.json.schema.TaskManager.execute(TaskManager.java:213)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.cmdbuild.servlets.JSONDispatcher.dispatch(JSONDispatcher.java:104)

at org.cmdbuild.servlets.JSONDispatcher.doPost(JSONDispatcher.java:64)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:183)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.cmdbuild.filters.PatchManagerFilter.doFilter(PatchManagerFilter.java:48)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:52)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.cmdbuild.filters.LocalizationFilter.doFilter(LocalizationFilter.java:127)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

ERROR 2018-05-17 14:39:03 [jsonrpc ] A org.cmdbuild.exception.TaskManagerException occurred calling method class org.cmdbuild.servlets.json.schema.TaskManager.execute: TASK_EXECUTION_ERROR 443031

org.cmdbuild.exception.TaskManagerException: TASK_EXECUTION_ERROR 443031

at org.cmdbuild.exception.TaskManagerException$TaskManagerExceptionType.createException(TaskManagerException.java:14)

at org.cmdbuild.logic.taskmanager.DefaultTaskManagerLogic.execute(DefaultTaskManagerLogic.java:688)

at org.cmdbuild.logic.taskmanager.ForwardingTaskManagerLogic.execute(ForwardingTaskManagerLogic.java:58)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)

at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

at com.sun.proxy.$Proxy230.execute(Unknown Source)

at org.cmdbuild.servlets.json.schema.TaskManager.execute(TaskManager.java:213)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.cmdbuild.servlets.JSONDispatcher.dispatch(JSONDispatcher.java:104)

at org.cmdbuild.servlets.JSONDispatcher.doPost(JSONDispatcher.java:64)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:183)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.cmdbuild.filters.PatchManagerFilter.doFilter(PatchManagerFilter.java:48)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:52)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.cmdbuild.filters.LocalizationFilter.doFilter(LocalizationFilter.java:127)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

INFO  2018-05-17 14:39:03 [jsonrpc ] Calling url /schema/taskmanager/startworkflow/readall

INFO  2018-05-17 14:39:03 [cmdbuild] reading all existing tasks for type 'class org.cmdbuild.logic.taskmanager.task.process.StartWorkflowTask'

INFO  2018-05-17 14:39:03 [cmdbuild] converting store task 'StartWorkflowTask[id=248691,description=WOGeneration,running=false,lastExecution=<null>,cronExpression=0 * * * ?,parameters={}]' to logic task

INFO  2018-05-17 14:39:03 [cmdbuild] converting store task 'StartWorkflowTask[id=443031,description=Generacion de calendario,running=true,lastExecution=<null>,cronExpression=0 0 * * ?,parameters={classname=MaintCalGenerator, attributes=AllActivities=true&#124;Description=calendario primer semestre&#124;DateFrom=01/01/2018&#124;DateTo=31/06/2018}]' to logic task

 
Best Regards.
Dear Matias,
The calendar generator process was not intended to be automatically run. However, you can make it work from a task. You need to modify the xpdl file replacing the "expression lane" to a lane assigned to the performer "SuperUser".
 
>I have noticed that when generating a calendar it replaces the one generated previously, then if an work order had already been generated for an >activity, when re-generating the calendar another work order is recreated for the same task, since the "Starting WO" attribute returns to take the >value "No".Can I automatically generate every day the calendar only for the new schedules added, without regenerating all?
 
There is a flag on the process called "Update policy". By default this is hidden and it is set to "regenerate all", but you can also make it visibile on the input form (changing the xpdl file) and set it to "regenerate just the entries in the interval". This should do what you are asking for.
 
Best regards
CMDBuild Team
Hello,
 Thanks for your reply.
 About th calendar generator policy. I want to generate a calendar every day with the same date interval, such as "from 2018-01-01 to 2018-01-07" , but including only the new entries added in "Prev. maint. scheduling" class. So, first it should check if the activity already has a calendar generated for that interval, and if not, genereate the calendar. This way, each scheduling added by the user would be included in the next calendar generator process without replace all already generated.
 
Can I do this? Will I need to edit code?
 
I hope I was clear.
 
Best regards.
 
Previously Tecnoteca wrote:
Dear Matias,
The calendar generator process was not intended to be automatically run. However, you can make it work from a task. You need to modify the xpdl file replacing the "expression lane" to a lane assigned to the performer "SuperUser".
 
>I have noticed that when generating a calendar it replaces the one generated previously, then if an work order had already been generated for an >activity, when re-generating the calendar another work order is recreated for the same task, since the "Starting WO" attribute returns to take the >value "No".Can I automatically generate every day the calendar only for the new schedules added, without regenerating all?
 
There is a flag on the process called "Update policy". By default this is hidden and it is set to "regenerate all", but you can also make it visibile on the input form (changing the xpdl file) and set it to "regenerate just the entries in the interval". This should do what you are asking for.
 
Best regards
CMDBuild Team

 

Hello,
yes, you need to modify the xpdl file making the flag "Update policy" visible and editable from the user interface.
If you choose the option "regenerate just the entries in the interval" this should leave unchanged the entries of previous days.
 
CMDBuild Team