public void parseTransitionInstances(MigratingInstanceParseContext parseContext, MigratingActivityInstance migratingInstance) { for (TransitionInstance transitionInstance : migratingInstance.getActivityInstance().getChildTransitionInstances()) { parseContext.handleTransitionInstance(transitionInstance); } }
public void parseTransitionInstances(MigratingInstanceParseContext parseContext, MigratingActivityInstance migratingInstance) { for (TransitionInstance transitionInstance : migratingInstance.getActivityInstance().getChildTransitionInstances()) { parseContext.handleTransitionInstance(transitionInstance); } }
protected List<TransitionInstance> getTransitionInstancesForActivity(ActivityInstance tree, Set<String> parentScopeIds) { // prune all search paths that are not in the scope hierarchy of the activity in question if (!parentScopeIds.contains(tree.getActivityId())) { return Collections.emptyList(); } List<TransitionInstance> instances = new ArrayList<TransitionInstance>(); TransitionInstance[] transitionInstances = tree.getChildTransitionInstances(); for (TransitionInstance transitionInstance : transitionInstances) { if (activityId.equals(transitionInstance.getActivityId())) { instances.add(transitionInstance); } } for (ActivityInstance child : tree.getChildActivityInstances()) { instances.addAll(getTransitionInstancesForActivity(child, parentScopeIds)); } return instances; }
protected List<TransitionInstance> getTransitionInstancesForActivity(ActivityInstance tree, Set<String> parentScopeIds) { // prune all search paths that are not in the scope hierarchy of the activity in question if (!parentScopeIds.contains(tree.getActivityId())) { return Collections.emptyList(); } List<TransitionInstance> instances = new ArrayList<TransitionInstance>(); TransitionInstance[] transitionInstances = tree.getChildTransitionInstances(); for (TransitionInstance transitionInstance : transitionInstances) { if (activityId.equals(transitionInstance.getActivityId())) { instances.add(transitionInstance); } } for (ActivityInstance child : tree.getChildActivityInstances()) { instances.addAll(getTransitionInstancesForActivity(child, parentScopeIds)); } return instances; }
protected TransitionInstance findTransitionInstance(ActivityInstance tree, String transitionInstanceId) { for (TransitionInstance childTransitionInstance : tree.getChildTransitionInstances()) { if (matchesRequestedTransitionInstance(childTransitionInstance, transitionInstanceId)) { return childTransitionInstance; } } for (ActivityInstance child : tree.getChildActivityInstances()) { TransitionInstance matchingChildInstance = findTransitionInstance(child, transitionInstanceId); if (matchingChildInstance != null) { return matchingChildInstance; } } return null; }
protected TransitionInstance findTransitionInstance(ActivityInstance tree, String transitionInstanceId) { for (TransitionInstance childTransitionInstance : tree.getChildTransitionInstances()) { if (matchesRequestedTransitionInstance(childTransitionInstance, transitionInstanceId)) { return childTransitionInstance; } } for (ActivityInstance child : tree.getChildActivityInstances()) { TransitionInstance matchingChildInstance = findTransitionInstance(child, transitionInstanceId); if (matchingChildInstance != null) { return matchingChildInstance; } } return null; }
/** * Creates a migrating activity instances */ public MigratingActivityInstance(ActivityInstance activityInstance, MigrationInstruction migrationInstruction, ScopeImpl sourceScope, ScopeImpl targetScope, ExecutionEntity scopeExecution) { this.activityInstance = activityInstance; this.migrationInstruction = migrationInstruction; this.sourceScope = sourceScope; this.currentScope = sourceScope; this.targetScope = targetScope; this.representativeExecution = scopeExecution; this.instanceBehavior = determineBehavior(sourceScope); if (activityInstance.getChildActivityInstances().length == 0 && activityInstance.getChildTransitionInstances().length == 0) { // active state is only relevant for child activity instances; // for all other instances, their respective executions are always inactive activeState = representativeExecution.isActive(); } }
protected TransitionInstance getChildTransitionInstanceForTargetActivity(ActivityInstance activityInstance, String targetActivityId) { for (TransitionInstance childTransitionInstance : activityInstance.getChildTransitionInstances()) { if (targetActivityId.equals(childTransitionInstance.getActivityId())) { return childTransitionInstance; } } for (ActivityInstance childInstance : activityInstance.getChildActivityInstances()) { TransitionInstance instance = getChildTransitionInstanceForTargetActivity(childInstance, targetActivityId); if (instance != null) { return instance; } } return null; }
public static ActivityInstanceDto fromActivityInstance(ActivityInstance instance) { ActivityInstanceDto result = new ActivityInstanceDto(); result.id = instance.getId(); result.parentActivityInstanceId = instance.getParentActivityInstanceId(); result.activityId = instance.getActivityId(); result.activityType = instance.getActivityType(); result.processInstanceId = instance.getProcessInstanceId(); result.processDefinitionId = instance.getProcessDefinitionId(); result.childActivityInstances = fromListOfActivityInstance(instance.getChildActivityInstances()); result.childTransitionInstances = TransitionInstanceDto.fromListOfTransitionInstance(instance.getChildTransitionInstances()); result.executionIds = instance.getExecutionIds(); result.activityName = instance.getActivityName(); return result; }
public static ActivityInstanceDto fromActivityInstance(ActivityInstance instance) { ActivityInstanceDto result = new ActivityInstanceDto(); result.id = instance.getId(); result.parentActivityInstanceId = instance.getParentActivityInstanceId(); result.activityId = instance.getActivityId(); result.activityType = instance.getActivityType(); result.processInstanceId = instance.getProcessInstanceId(); result.processDefinitionId = instance.getProcessDefinitionId(); result.childActivityInstances = fromListOfActivityInstance(instance.getChildActivityInstances()); result.childTransitionInstances = TransitionInstanceDto.fromListOfTransitionInstance(instance.getChildTransitionInstances()); result.executionIds = instance.getExecutionIds(); result.activityName = instance.getActivityName(); return result; }
@Deployment public void testAsyncServiceNoListeners() { INVOCATION = false; // start process ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("asyncService"); // now we have one transition instance below the process instance: ActivityInstance activityInstance = runtimeService.getActivityInstance(processInstance.getId()); assertEquals(1, activityInstance.getChildTransitionInstances().length); assertEquals(0, activityInstance.getChildActivityInstances().length); assertNotNull(activityInstance.getChildTransitionInstances()[0]); // now there should be one job in the database: assertEquals(1, managementService.createJobQuery().count()); // the service was not invoked: assertFalse(INVOCATION); executeAvailableJobs(); // the service was invoked assertTrue(INVOCATION); // and the job is done assertEquals(0, managementService.createJobQuery().count()); }
@Deployment @Test public void testActivityInstanceTreeForAsyncBeforeTask() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); ActivityInstance tree = runtimeService.getActivityInstance(processInstance.getId()); assertThat(tree).hasStructure( describeActivityInstanceTree(processInstance.getProcessDefinitionId()) .transition("theTask") .done()); TransitionInstance asyncBeforeTransitionInstance = tree.getChildTransitionInstances()[0]; assertEquals(processInstance.getId(), asyncBeforeTransitionInstance.getExecutionId()); }
@Deployment @Test public void testActivityInstanceTreeForAsyncBeforeStartEvent() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); ActivityInstance tree = runtimeService.getActivityInstance(processInstance.getId()); assertThat(tree).hasStructure( describeActivityInstanceTree(processInstance.getProcessDefinitionId()) .transition("theStart") .done()); TransitionInstance asyncBeforeTransitionInstance = tree.getChildTransitionInstances()[0]; assertEquals(processInstance.getId(), asyncBeforeTransitionInstance.getExecutionId()); }
@Deployment @Test public void testActivityInstanceTreeForAsyncAfterEndEvent() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("asyncEndEventProcess"); ActivityInstance tree = runtimeService.getActivityInstance(processInstance.getId()); assertThat(tree).hasStructure( describeActivityInstanceTree(processInstance.getProcessDefinitionId()) .transition("theEnd") .done()); TransitionInstance asyncAfterTransitionInstance = tree.getChildTransitionInstances()[0]; assertEquals(processInstance.getId(), asyncAfterTransitionInstance.getExecutionId()); }
@Deployment @Test public void testActivityInstanceTreeForConcurrentAsyncBeforeTask() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("concurrentTasksProcess"); ActivityInstance tree = runtimeService.getActivityInstance(processInstance.getId()); assertThat(tree).hasStructure( describeActivityInstanceTree(processInstance.getProcessDefinitionId()) .activity("theTask") .transition("asyncTask") .done()); TransitionInstance asyncBeforeTransitionInstance = tree.getChildTransitionInstances()[0]; String asyncExecutionId = managementService.createJobQuery().singleResult().getExecutionId(); assertEquals(asyncExecutionId, asyncBeforeTransitionInstance.getExecutionId()); }
@Deployment @Test public void testActivityInstanceTreeForAsyncAfterTask() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); ActivityInstance tree = runtimeService.getActivityInstance(processInstance.getId()); assertThat(tree).hasStructure( describeActivityInstanceTree(processInstance.getProcessDefinitionId()) .transition("theTask") .done()); TransitionInstance asyncAfterTransitionInstance = tree.getChildTransitionInstances()[0]; assertEquals(processInstance.getId(), asyncAfterTransitionInstance.getExecutionId()); }
@Deployment @Test public void testActivityInstanceTreeForNestedAsyncAfterEndEvent() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("asyncEndEventProcess"); ActivityInstance tree = runtimeService.getActivityInstance(processInstance.getId()); assertThat(tree).hasStructure( describeActivityInstanceTree(processInstance.getProcessDefinitionId()) .beginScope("subProcess") .transition("theSubProcessEnd") .done()); TransitionInstance asyncAfterTransitionInstance = tree.getChildActivityInstances()[0] .getChildTransitionInstances()[0]; String asyncExecutionId = managementService.createJobQuery().singleResult().getExecutionId(); assertEquals(asyncExecutionId, asyncAfterTransitionInstance.getExecutionId()); }
@Deployment @Test public void testActivityInstanceTreeForNestedAsyncBeforeTask() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); ActivityInstance tree = runtimeService.getActivityInstance(processInstance.getId()); assertThat(tree).hasStructure( describeActivityInstanceTree(processInstance.getProcessDefinitionId()) .beginScope("subProcess") .transition("theTask") .done()); TransitionInstance asyncBeforeTransitionInstance = tree.getChildActivityInstances()[0] .getChildTransitionInstances()[0]; String asyncExecutionId = managementService.createJobQuery().singleResult().getExecutionId(); assertEquals(asyncExecutionId, asyncBeforeTransitionInstance.getExecutionId()); }
@Deployment @Test public void testActivityInstanceTreeForConcurrentAsyncAfterTask() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("concurrentTasksProcess"); Task asyncTask = taskService.createTaskQuery().taskDefinitionKey("asyncTask").singleResult(); assertNotNull(asyncTask); taskService.complete(asyncTask.getId()); ActivityInstance tree = runtimeService.getActivityInstance(processInstance.getId()); assertThat(tree).hasStructure( describeActivityInstanceTree(processInstance.getProcessDefinitionId()) .activity("theTask") .transition("asyncTask") .done()); TransitionInstance asyncBeforeTransitionInstance = tree.getChildTransitionInstances()[0]; String asyncExecutionId = managementService.createJobQuery().singleResult().getExecutionId(); assertEquals(asyncExecutionId, asyncBeforeTransitionInstance.getExecutionId()); }
@Deployment @Test public void testActivityInstanceTreeForNestedAsyncAfterTask() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); ActivityInstance tree = runtimeService.getActivityInstance(processInstance.getId()); assertThat(tree).hasStructure( describeActivityInstanceTree(processInstance.getProcessDefinitionId()) .beginScope("subProcess") .transition("theTask") .done()); TransitionInstance asyncAfterTransitionInstance = tree.getChildActivityInstances()[0] .getChildTransitionInstances()[0]; String asyncExecutionId = managementService.createJobQuery().singleResult().getExecutionId(); assertEquals(asyncExecutionId, asyncAfterTransitionInstance.getExecutionId()); }