@Test
public void testGetChildExecutions() throws Exception {
// Deploy child Process
File processFile =
new File(TestUtil.getSrcDir() + TEST_PROCESS_FOLDER + "test_sub_call_activity_process.bpmn");
String processStr = readFile(processFile);
DeploymentBuilder builder = repositoryService.createDeployment()
.name(DEPLOYMENT_NAME).addString(DEPLOYMENT_NAME, processStr);
builder.deploy();
// Deploy parent Process
processFile =
new File(TestUtil.getSrcDir() + TEST_PROCESS_FOLDER + "test_call_activity_process.bpmn");
processStr = readFile(processFile);
builder = repositoryService.createDeployment()
.name(DEPLOYMENT_NAME).addString(DEPLOYMENT_NAME, processStr);
String deploymentId = builder.deploy().getId();
// Start parent process instance
List<ProcessDefinition> definitions = repositoryService.createProcessDefinitionQuery()
.deploymentId(deploymentId)
.orderByProcessDefinitionVersion()
.desc()
.list();
ProcessDefinition definition = definitions.get(0);
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(definition.getKey());
List<Execution> executions = runtimeService.createNativeExecutionQuery().sql("SELECT * FROM "
+ managementService.getTableName(Execution.class) + " WHERE PROC_INST_ID_ = #{processInstanceId}")
.parameter("processInstanceId", processInstance.getId()).list();
assertEquals(1, executions.size());
// Move to second task which is a call activity to call sub process
Execution rootExecution = executions.get(0);
runtimeService.signal(rootExecution.getId(), null);
processInstance = (ProcessInstance) runtimeService.createExecutionQuery()
.executionId(rootExecution.getId()).singleResult();
executions = runtimeService.createNativeExecutionQuery().sql("SELECT * FROM "
+ managementService.getTableName(Execution.class) + " WHERE PROC_INST_ID_ = #{processInstanceId}")
.parameter("processInstanceId", processInstance.getId()).list();
assertEquals(2, executions.size());
List<Execution> subExecutions = runtimeService.createNativeExecutionQuery().sql("SELECT * FROM "
+ managementService.getTableName(Execution.class) + " WHERE SUPER_EXEC_ = #{executionId}")
.parameter("executionId", executions.get(1).getId()).list();
ExecutionEntity currentExecution = (ExecutionEntity) subExecutions.get(0);
if (currentExecution.getSuperExecutionId() != null) {
ExecutionEntity superExecution = currentExecution.getSuperExecution();
}
}
The error happens in the last line. I am trying to write code to get all the parent executions of a given process. The parent process in this test calls the child process using a call activity node in its second task. Please let me know if I can provide more info.