@Test public void testNestedSubprocesses() { ExecutableWorkflow innerWorkflow = new ExecutableWorkflow() .activity("inner", msgValue("inner")); deploy(innerWorkflow); ExecutableWorkflow intermediateWorkflow = new ExecutableWorkflow() .activity("intermediate before inner", msgValue("intermediate before inner").transitionToNext()) .activity("call-inner", new SubProcess() .subWorkflowId(innerWorkflow.getId()) .transitionToNext()) .activity("intermediate after inner", msgValue("intermediate after inner")); deploy(intermediateWorkflow); ExecutableWorkflow outerWorkflow = new ExecutableWorkflow() .activity("outer before intermediate", msgValue("outer before intermediate").transitionToNext()) .activity("call-intermediate", new SubProcess() .subWorkflowId(intermediateWorkflow.getId()) .transitionToNext()) .activity("outer after intermediate", msgValue("outer after intermediate")); deploy(outerWorkflow); workflowEngine.start(new TriggerInstance() .workflowId(outerWorkflow.getId()) ); List<String> expectedMessages = new ArrayList<>(); expectedMessages.add("outer before intermediate"); expectedMessages.add("intermediate before inner"); expectedMessages.add("inner"); expectedMessages.add("intermediate after inner"); expectedMessages.add("outer after intermediate"); assertEquals(expectedMessages, getMessages()); }