Uploaded image for project: 'jBPM'
  1. jBPM
  2. JBPM-2033 signal ended token should result in an exception
  3. JBPM-1471

Do not signal ENDED super process token when ending process instance

XMLWordPrintable

      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);
      }
      }

            camunda_jira Bernd Ruecker (Inactive)
            kadlecp Pavel Kadlec (Inactive)
            Votes:
            4 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: