// an active case instance
CmmnCaseInstance caseInstance = caseDefinition.createCaseInstance();
caseInstance.create();
// a case execution associated with Stage X
CmmnActivityExecution stageX = caseInstance.findCaseExecution("X");
// an active stage X
stageX.manualStart();
// a case execution associated with Task A
CmmnActivityExecution taskA = caseInstance.findCaseExecution("A");
// an active task A
taskA.manualStart();
// a case execution associated with Task B
CmmnActivityExecution taskB = caseInstance.findCaseExecution("B");
// an active task B
taskB.manualStart();
// when ////////////////////////////////////////////////////////////////
// complete task A
taskA.complete();
// complete task B
taskB.complete();
// then ////////////////////////////////////////////////////////////////
List<String> expectedStateTransitions = new ArrayList<String>();
// expected state transitions:
// active --complete(A)--> completed
// active --complete(B)--> completed
// active --complete(X)--> completed
// active --complete(Case1)--> completed
expectedStateTransitions.add("active --complete(A)--> completed");
expectedStateTransitions.add("active --complete(B)--> completed");
expectedStateTransitions.add("active --complete(X)--> completed");
expectedStateTransitions.add("active --complete(Case1)--> completed");
assertEquals(expectedStateTransitions, stateTransitionCollector.stateTransitions);
// clear lists
expectedStateTransitions.clear();
stateTransitionCollector.stateTransitions.clear();
// task A is completed
assertTrue(taskA.isCompleted());
// task B is completed
assertTrue(taskB.isCompleted());
// stage X is completed
assertTrue(stageX.isCompleted());
// stage X does not contain task A anymore