Call Activity and CMMN Exit Criteria

Have a simple process diagram with a call activity to a cmmn.
We implemented exit criteria in the cmmn with a simple boolean variable ${remediationCompleted} which is set to true when our Review Task is completed.
Our case execution listener is working and we can see that the “GAP ACCEPTED” milestone is reached.

However, in cockpit, our instance does not progress out of the call activity to the “Remediation Completed” task.

Any suggestions?

remediation.v4.bpmn (5.1 KB)

remediate-case.v4.cmmn (6.5 KB)

Hi @davekant,

This is the intended behavior. The call activity completes as soon as the created case instance reaches the state COMPLETED for the first time (see 1).

You are able to solve that by adding a CaseExecutionListener 2 to the case plan model which should be executed on the event terminate. The CaseExecutionListener could then signal the call activity to complete.

Does this help you?

Cheers,
Roman

Thanks Roman.
Do you know if there is any example code where this is done (signal call
activity to complete).

Hi @davekant,

This could look as follows

public class SignalProcessInstanceListener implements CaseExecutionListener {

  @Override
  public void notify(DelegateCaseExecution ctx) throws Exception {
    CaseExecutionEntity execution = (CaseExecutionEntity) ctx;
    ExecutionEntity superExecution = execution.getSuperExecution();

    SubProcessActivityBehavior behavior = (SubProcessActivityBehavior) getActivityBehavior(superExecution);

    superExecution.setSubCaseInstance(null);
    behavior.completed(superExecution);
    execution.setSuperExecution(null);
  }

}

Cheers,
Roman

Hi @roman.smirnov,

I have the same problem, I understand that with CMM we must explicitly to terminate the case, but how to do that? I tried to add your code into my project and I have a compilation error related to the “getActivityBehavior” method

“The method getActivityBehavior(ExecutionEntity) is undefined for the type SignalProcessInstanceListener”

Is there something missing in the class declaration? I’m using the camunda-engine-7.10.0.jar

Thank you