[jbpm-issues] [JBoss JIRA] Commented: (JBPM-1471) Do not signal ENDED super process token when ending process instance

Pavel Kadlec (JIRA) jira-events at lists.jboss.org
Wed Aug 13 14:36:40 EDT 2008


    [ https://jira.jboss.org/jira/browse/JBPM-1471?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12424858#action_12424858 ] 

Pavel Kadlec commented on JBPM-1471:
------------------------------------

I encouter this issue when ending process that have running subprocess. At first the root token is ended and then subprocess is ended. But subprocess then signals the super process root token which is already ended and the main path of execution continues.

> Do not signal ENDED super process token when ending process instance
> --------------------------------------------------------------------
>
>                 Key: JBPM-1471
>                 URL: https://jira.jboss.org/jira/browse/JBPM-1471
>             Project: JBoss jBPM
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: jPDL 3.2.3
>            Reporter: Pavel Kadlec
>
> The path of execution of the super process token should not continue when the token was ended. If it is not tested, the ended super process token is signalled and the path of execution continues. I think it should not. 
> I suggest following fix to org.jbpm.graph.exe.ProcessInstance.end() method. There is one change in if statement bellow...
>   /**
>    * ends (=cancels) this process instance and all the tokens in it.
>    */
>   public void end() {
>     // end the main path of execution
>     rootToken.end();
>     
>     if (end==null) {
>       // mark this process instance as ended
>       end = Clock.getCurrentTime();
>       
>       // fire the process-end event
>       ExecutionContext executionContext = new ExecutionContext(rootToken);
>       processDefinition.fireEvent(Event.EVENTTYPE_PROCESS_END, executionContext);
>       
>       // add the process instance end log
>       rootToken.addLog(new ProcessInstanceEndLog());
>       // check if this process was started as a subprocess of a super process
>       if (superProcessToken!=null && !superProcessToken.hasEnded()) {    // THIS IS THE FIX, TEST IF SUPER PROCESS TOKEN HAS ENDED
>         addCascadeProcessInstance(superProcessToken.getProcessInstance());
>         
>         ExecutionContext superExecutionContext = new ExecutionContext(superProcessToken);
>         superExecutionContext.setSubProcessInstance(this);
>         superProcessToken.signal(superExecutionContext);
>       }
>       // make sure all the timers for this process instance are cancelled when the process end updates get saved in the database.
>       // TODO route this directly through the jobSession.  just like the suspend and resume.
>       // NOTE Only timers should be deleted, messages-type of jobs should be kept. 
>       SchedulerService schedulerService = (SchedulerService) Services.getCurrentService(Services.SERVICENAME_SCHEDULER, false);
>       if (schedulerService!=null) schedulerService.deleteTimersByProcessInstance(this);
>     }
>   }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jbpm-issues mailing list