@Override public boolean isDetached() { return eventScopeExecution.getParentId() == null; }
@Override public boolean isDetached() { return eventScopeExecution.getParentId() == null; }
new VariableCollectionProvider<>(variablesByScope.get(execution.id))); String parentId = execution.getParentId(); ExecutionEntity parent = executionsMap.get(parentId); if (!execution.isProcessInstanceExecution()) {
new VariableCollectionProvider<>(variablesByScope.get(execution.id))); String parentId = execution.getParentId(); ExecutionEntity parent = executionsMap.get(parentId); if (!execution.isProcessInstanceExecution()) {
@Override public boolean isDetached() { return eventScopeExecution.getParentId() == null; }
@Deployment(resources = {"org/camunda/bpm/engine/test/bpmn/multiinstance/MultiInstanceTest.testParallelUserTasks.bpmn20.xml"}) public void testActiveExecutionsInParallelTasks() { runtimeService.startProcessInstanceByKey("miParallelUserTasks").getId(); ProcessInstance instance = runtimeService.createProcessInstanceQuery().singleResult(); List<Execution> executions = runtimeService.createExecutionQuery().list(); assertEquals(5, executions.size()); for (Execution execution : executions) { ExecutionEntity entity = (ExecutionEntity) execution; if (!entity.getId().equals(instance.getId()) && !entity.getParentId().equals(instance.getId())) { // child executions assertTrue(entity.isActive()); } else { // process instance and scope execution assertFalse(entity.isActive()); } } }
.singleResult(); assertFalse(processInstanceId.equals(((ExecutionEntity) task1Execution).getParentId())); .singleResult(); assertFalse(processInstanceId.equals(((ExecutionEntity) task2Execution).getParentId())); assertTrue(((ExecutionEntity) task1Execution).getParentId().equals(((ExecutionEntity) task2Execution).getParentId()));
.singleResult(); assertFalse(processInstanceId.equals(((ExecutionEntity) task1Execution).getParentId())); .singleResult(); assertFalse(processInstanceId.equals(((ExecutionEntity) task1Execution).getParentId())); .singleResult(); assertFalse(processInstanceId.equals(((ExecutionEntity) task2Execution).getParentId())); assertTrue(((ExecutionEntity) task1Execution).getParentId().equals(((ExecutionEntity) task2Execution).getParentId()));
@Deployment(resources = IO_PROCESS) public void testIoMappingInvocation() { // when runtimeService .createProcessInstanceByKey("ioProcess") .startBeforeActivity("innerTask") .execute(); // then no io mappings have been executed List<VariableInstance> variables = runtimeService.createVariableInstanceQuery() .orderByVariableName().asc().list(); assertEquals(2, variables.size()); Execution innerTaskExecution = runtimeService.createExecutionQuery().activityId("innerTask").singleResult(); VariableInstance innerTaskVariable = variables.get(0); assertEquals("innerTaskVariable", innerTaskVariable.getName()); assertEquals("innerTaskValue", innerTaskVariable.getValue()); assertEquals(innerTaskExecution.getId(), innerTaskVariable.getExecutionId()); VariableInstance subProcessVariable = variables.get(1); assertEquals("subProcessVariable", subProcessVariable.getName()); assertEquals("subProcessValue", subProcessVariable.getValue()); assertEquals(((ExecutionEntity) innerTaskExecution).getParentId(), subProcessVariable.getExecutionId()); }
.singleResult(); assertFalse(processInstanceId.equals(((ExecutionEntity) task1Execution).getParentId())); .singleResult(); assertFalse(processInstanceId.equals(((ExecutionEntity) task1Execution).getParentId())); .singleResult(); assertFalse(processInstanceId.equals(((ExecutionEntity) task2Execution).getParentId())); assertTrue(((ExecutionEntity) task1Execution).getParentId().equals(((ExecutionEntity) task2Execution).getParentId()));
.singleResult(); assertFalse(processInstanceId.equals(((ExecutionEntity) innerTaskExecution).getParentId())); .singleResult(); assertFalse(processInstanceId.equals(((ExecutionEntity) innerTaskExecution).getParentId())); assertNotNull(task1Execution); assertEquals(processInstanceId, ((ExecutionEntity) task1Execution).getParentId()); assertNotNull(task1Execution); assertEquals(processInstanceId, ((ExecutionEntity) task1Execution).getParentId()); assertNotNull(task2Execution); assertEquals(processInstanceId, ((ExecutionEntity) task2Execution).getParentId());
.singleResult(); assertEquals(processInstanceId, ((ExecutionEntity) task1Execution).getParentId()); .singleResult(); assertFalse(processInstanceId.equals(((ExecutionEntity) task2Execution).getParentId())); .singleResult(); assertEquals(processInstanceId, ((ExecutionEntity) task1Execution).getParentId()); .singleResult(); assertEquals(processInstanceId, ((ExecutionEntity) task1Execution).getParentId());
.singleResult(); assertEquals(processInstanceId, ((ExecutionEntity) task1Execution).getParentId()); .singleResult(); assertEquals(processInstanceId, ((ExecutionEntity) task1Execution).getParentId()); .singleResult(); assertEquals(processInstanceId, ((ExecutionEntity) task2Execution).getParentId());
assertNotNull(task1Execution); assertEquals(processInstanceId, ((ExecutionEntity) task1Execution).getParentId()); .singleResult(); assertFalse(processInstanceId.equals(((ExecutionEntity) innerTaskExecution).getParentId())); assertNotNull(task1Execution); assertEquals(processInstanceId, ((ExecutionEntity) task1Execution).getParentId()); assertNotNull(task1Execution); assertEquals(processInstanceId, ((ExecutionEntity) task1Execution).getParentId()); assertNotNull(task2Execution); assertEquals(processInstanceId, ((ExecutionEntity) task2Execution).getParentId());
@Deployment public void testTreeCompactionNestedForkParallelGateway() { // given runtimeService.startProcessInstanceByKey("process"); Task task1 = taskService .createTaskQuery() .taskDefinitionKey("task1") .singleResult(); Execution task2Execution = runtimeService .createExecutionQuery() .activityId("task2") .singleResult(); String subProcessScopeExecutionId = ((ExecutionEntity) task2Execution).getParentId(); // when runtimeService.setVariableLocal(task2Execution.getId(), "foo", "bar"); // and completing the other task, thereby pruning the concurrent execution taskService.complete(task1.getId()); // then the variable still exists on the subprocess scope execution VariableInstance variable = runtimeService.createVariableInstanceQuery().singleResult(); assertNotNull(variable); assertEquals("foo", variable.getName()); assertEquals(subProcessScopeExecutionId, variable.getExecutionId()); }
@Test public void testDeletesOnlyVariablesFromRemovingScope() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(CompensationModels.DOUBLE_SUBPROCESS_MODEL); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(CompensationModels.COMPENSATION_ONE_TASK_SUBPROCESS_MODEL); MigrationPlan migrationPlan = rule.getRuntimeService().createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("innerSubProcess", "subProcess") .mapActivities("userTask2", "userTask2") .mapActivities("compensationBoundary", "compensationBoundary") .build(); ProcessInstance processInstance = rule.getRuntimeService().startProcessInstanceById(sourceProcessDefinition.getId()); Execution innerSubProcessExecution = rule.getRuntimeService() .createExecutionQuery() .activityId("userTask1") .singleResult(); String outerSubProcessExecutionId = ((ExecutionEntity) innerSubProcessExecution).getParentId(); rule.getRuntimeService().setVariableLocal(outerSubProcessExecutionId, "outerVariable", "outerValue"); rule.getRuntimeService().setVariableLocal(innerSubProcessExecution.getId(), "innerVariable", "innerValue"); testHelper.completeTask("userTask1"); // when testHelper.migrateProcessInstance(migrationPlan, processInstance); // then Assert.assertEquals(1, testHelper.snapshotAfterMigration.getVariables().size()); VariableInstance migratedVariable = testHelper.snapshotAfterMigration.getSingleVariable("innerVariable"); Assert.assertNotNull(migratedVariable); Assert.assertEquals("innerValue", migratedVariable.getValue()); }
@Deployment(resources = "org/camunda/bpm/engine/test/api/variables/ExecutionVariablesTest.testTreeCompactionWithLocalVariableOnConcurrentExecution.bpmn20.xml") public void testStableVariableInstanceIdsOnCompaction() { runtimeService.startProcessInstanceByKey("process"); Execution innerTaskExecution = runtimeService .createExecutionQuery() .activityId("innerTask") .singleResult(); Execution subProcessConcurrentExecution = runtimeService .createExecutionQuery() .executionId(((ExecutionEntity) innerTaskExecution).getParentId()) .singleResult(); Task task = taskService .createTaskQuery() .taskDefinitionKey("task") .singleResult(); // when runtimeService.setVariableLocal(subProcessConcurrentExecution.getId(), "foo", "bar"); VariableInstance variableBeforeCompaction = runtimeService.createVariableInstanceQuery().singleResult(); // and completing the concurrent task, thereby pruning the sub process concurrent execution taskService.complete(task.getId()); // then the variable still exists VariableInstance variableAfterCompaction = runtimeService.createVariableInstanceQuery().singleResult(); assertEquals(variableBeforeCompaction.getId(), variableAfterCompaction.getId()); }
@Deployment public void testTreeCompactionWithLocalVariableOnConcurrentExecution() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process"); Execution innerTaskExecution = runtimeService .createExecutionQuery() .activityId("innerTask") .singleResult(); Execution subProcessConcurrentExecution = runtimeService .createExecutionQuery() .executionId(((ExecutionEntity) innerTaskExecution).getParentId()) .singleResult(); Task task = taskService .createTaskQuery() .taskDefinitionKey("task") .singleResult(); // when runtimeService.setVariableLocal(subProcessConcurrentExecution.getId(), "foo", "bar"); // and completing the concurrent task, thereby pruning the sub process concurrent execution taskService.complete(task.getId()); // then the variable still exists VariableInstance variable = runtimeService.createVariableInstanceQuery().singleResult(); assertNotNull(variable); assertEquals("foo", variable.getName()); assertEquals(processInstance.getId(), variable.getExecutionId()); }
.singleResult(); assertEquals(processInstanceId, ((ExecutionEntity) task1Execution).getParentId()); .singleResult(); assertEquals(processInstanceId, ((ExecutionEntity) task2Execution).getParentId());
@Deployment(resources = {"org/camunda/bpm/engine/test/bpmn/multiinstance/MultiInstanceTest.testParallelUserTasks.bpmn20.xml"}) public void testActiveExecutionsInParallelTasks() { runtimeService.startProcessInstanceByKey("miParallelUserTasks").getId(); ProcessInstance instance = runtimeService.createProcessInstanceQuery().singleResult(); List<Execution> executions = runtimeService.createExecutionQuery().list(); assertEquals(5, executions.size()); for (Execution execution : executions) { ExecutionEntity entity = (ExecutionEntity) execution; if (!entity.getId().equals(instance.getId()) && !entity.getParentId().equals(instance.getId())) { // child executions assertTrue(entity.isActive()); } else { // process instance and scope execution assertFalse(entity.isActive()); } } }