protected void writeTransition(TransitionInstance transition, StringWriter writer, String prefix, boolean isTail) { writer.append(prefix); if(isTail) { writer.append("└── "); } else { writer.append("├── "); } writer.append("transition to/from " + transition.getActivityId() + ":" + transition.getId() + "\n"); }
protected void writeTransition(TransitionInstance transition, StringWriter writer, String prefix, boolean isTail) { writer.append(prefix); if(isTail) { writer.append("└── "); } else { writer.append("├── "); } writer.append("transition to/from " + transition.getActivityId() + ":" + transition.getId() + "\n"); }
protected void collectTransitionInstances(String activityId, List<TransitionInstance> instances) { boolean instanceFound = false; for (TransitionInstance childTransitionInstance : childTransitionInstances) { if (activityId.equals(childTransitionInstance.getActivityId())) { instances.add(childTransitionInstance); instanceFound = true; } } if (!instanceFound) { for (ActivityInstance childActivityInstance : childActivityInstances) { ((ActivityInstanceImpl) childActivityInstance).collectTransitionInstances(activityId, instances); } } }
protected void collectTransitionInstances(String activityId, List<TransitionInstance> instances) { boolean instanceFound = false; for (TransitionInstance childTransitionInstance : childTransitionInstances) { if (activityId.equals(childTransitionInstance.getActivityId())) { instances.add(childTransitionInstance); instanceFound = true; } } if (!instanceFound) { for (ActivityInstance childActivityInstance : childActivityInstances) { ((ActivityInstanceImpl) childActivityInstance).collectTransitionInstances(activityId, 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 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 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 TransitionInstanceDto fromTransitionInstance(TransitionInstance instance) { TransitionInstanceDto result = new TransitionInstanceDto(); result.id = instance.getId(); result.parentActivityInstanceId = instance.getParentActivityInstanceId(); result.activityId = instance.getActivityId(); result.activityName = instance.getActivityName(); result.activityType = instance.getActivityType(); result.processInstanceId = instance.getProcessInstanceId(); result.processDefinitionId = instance.getProcessDefinitionId(); result.executionId = instance.getExecutionId(); return result; }
public static TransitionInstanceDto fromTransitionInstance(TransitionInstance instance) { TransitionInstanceDto result = new TransitionInstanceDto(); result.id = instance.getId(); result.parentActivityInstanceId = instance.getParentActivityInstanceId(); result.activityId = instance.getActivityId(); result.activityName = instance.getActivityName(); result.activityType = instance.getActivityType(); result.processInstanceId = instance.getProcessInstanceId(); result.processDefinitionId = instance.getProcessDefinitionId(); result.executionId = instance.getExecutionId(); return result; }
while (expectedTransitionInstanceIt.hasNext() && !matchFound) { TransitionInstance expectedChild = expectedTransitionInstanceIt.next(); if (expectedChild.getActivityId().equals(child.getActivityId())) { matchFound = true; expectedTransitionInstanceIt.remove();
@Override public void handle(MigratingInstanceParseContext parseContext, TransitionInstance transitionInstance) { if (!isAsyncTransitionInstance(transitionInstance)) { return; } MigrationInstruction applyingInstruction = parseContext.getInstructionFor(transitionInstance.getActivityId()); ScopeImpl sourceScope = parseContext.getSourceProcessDefinition().findActivity(transitionInstance.getActivityId()); ScopeImpl targetScope = null; if (applyingInstruction != null) { String activityId = applyingInstruction.getTargetActivityId(); targetScope = parseContext.getTargetProcessDefinition().findActivity(activityId); } ExecutionEntity asyncExecution = Context .getCommandContext() .getExecutionManager() .findExecutionById(transitionInstance.getExecutionId()); MigratingTransitionInstance migratingTransitionInstance = parseContext.getMigratingProcessInstance() .addTransitionInstance( applyingInstruction, transitionInstance, sourceScope, targetScope, asyncExecution); MigratingActivityInstance parentInstance = parseContext.getMigratingActivityInstanceById(transitionInstance.getParentActivityInstanceId()); migratingTransitionInstance.setParent(parentInstance); List<JobEntity> jobs = asyncExecution.getJobs(); parseContext.handleDependentTransitionInstanceJobs(migratingTransitionInstance, jobs); parseContext.handleDependentVariables(migratingTransitionInstance, collectTransitionInstanceVariables(migratingTransitionInstance)); }
@Override public void handle(MigratingInstanceParseContext parseContext, TransitionInstance transitionInstance) { if (!isAsyncTransitionInstance(transitionInstance)) { return; } MigrationInstruction applyingInstruction = parseContext.getInstructionFor(transitionInstance.getActivityId()); ScopeImpl sourceScope = parseContext.getSourceProcessDefinition().findActivity(transitionInstance.getActivityId()); ScopeImpl targetScope = null; if (applyingInstruction != null) { String activityId = applyingInstruction.getTargetActivityId(); targetScope = parseContext.getTargetProcessDefinition().findActivity(activityId); } ExecutionEntity asyncExecution = Context .getCommandContext() .getExecutionManager() .findExecutionById(transitionInstance.getExecutionId()); MigratingTransitionInstance migratingTransitionInstance = parseContext.getMigratingProcessInstance() .addTransitionInstance( applyingInstruction, transitionInstance, sourceScope, targetScope, asyncExecution); MigratingActivityInstance parentInstance = parseContext.getMigratingActivityInstanceById(transitionInstance.getParentActivityInstanceId()); migratingTransitionInstance.setParent(parentInstance); List<JobEntity> jobs = asyncExecution.getJobs(); parseContext.handleDependentTransitionInstanceJobs(migratingTransitionInstance, jobs); parseContext.handleDependentVariables(migratingTransitionInstance, collectTransitionInstanceVariables(migratingTransitionInstance)); }
@Deployment @Test public void testGetTransitionInstancesForActivity() { // given ProcessInstance instance = runtimeService.startProcessInstanceByKey("miSubprocess"); // complete one async task Job job = managementService.createJobQuery().listPage(0, 1).get(0); managementService.executeJob(job.getId()); Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); // when ActivityInstance tree = runtimeService.getActivityInstance(instance.getId()); // then assertEquals(0, tree.getTransitionInstances("subProcess").length); TransitionInstance[] asyncBeforeInstances = tree.getTransitionInstances("innerTask"); assertEquals(2, asyncBeforeInstances.length); assertEquals("innerTask", asyncBeforeInstances[0].getActivityId()); assertEquals("innerTask", asyncBeforeInstances[1].getActivityId()); assertFalse(asyncBeforeInstances[0].getId().equals(asyncBeforeInstances[1].getId())); TransitionInstance[] asyncEndEventInstances = tree.getTransitionInstances("theSubProcessEnd"); assertEquals(1, asyncEndEventInstances.length); assertEquals("theSubProcessEnd", asyncEndEventInstances[0].getActivityId()); }
protected void writeTransition(TransitionInstance transition, StringWriter writer, String prefix, boolean isTail) { writer.append(prefix); if(isTail) { writer.append("└── "); } else { writer.append("├── "); } writer.append("transition to/from " + transition.getActivityId() + ":" + transition.getId() + "\n"); }
protected void collectTransitionInstances(String activityId, List<TransitionInstance> instances) { boolean instanceFound = false; for (TransitionInstance childTransitionInstance : childTransitionInstances) { if (activityId.equals(childTransitionInstance.getActivityId())) { instances.add(childTransitionInstance); instanceFound = true; } } if (!instanceFound) { for (ActivityInstance childActivityInstance : childActivityInstances) { ((ActivityInstanceImpl) childActivityInstance).collectTransitionInstances(activityId, 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 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 TransitionInstanceDto fromTransitionInstance(TransitionInstance instance) { TransitionInstanceDto result = new TransitionInstanceDto(); result.id = instance.getId(); result.parentActivityInstanceId = instance.getParentActivityInstanceId(); result.activityId = instance.getActivityId(); result.activityName = instance.getActivityName(); result.activityType = instance.getActivityType(); result.processInstanceId = instance.getProcessInstanceId(); result.processDefinitionId = instance.getProcessDefinitionId(); result.executionId = instance.getExecutionId(); return result; }
@Override public void handle(MigratingInstanceParseContext parseContext, TransitionInstance transitionInstance) { if (!isAsyncTransitionInstance(transitionInstance)) { return; } MigrationInstruction applyingInstruction = parseContext.getInstructionFor(transitionInstance.getActivityId()); ScopeImpl sourceScope = parseContext.getSourceProcessDefinition().findActivity(transitionInstance.getActivityId()); ScopeImpl targetScope = null; if (applyingInstruction != null) { String activityId = applyingInstruction.getTargetActivityId(); targetScope = parseContext.getTargetProcessDefinition().findActivity(activityId); } ExecutionEntity asyncExecution = Context .getCommandContext() .getExecutionManager() .findExecutionById(transitionInstance.getExecutionId()); MigratingTransitionInstance migratingTransitionInstance = parseContext.getMigratingProcessInstance() .addTransitionInstance( applyingInstruction, transitionInstance, sourceScope, targetScope, asyncExecution); MigratingActivityInstance parentInstance = parseContext.getMigratingActivityInstanceById(transitionInstance.getParentActivityInstanceId()); migratingTransitionInstance.setParent(parentInstance); List<JobEntity> jobs = asyncExecution.getJobs(); parseContext.handleDependentTransitionInstanceJobs(migratingTransitionInstance, jobs); parseContext.handleDependentVariables(migratingTransitionInstance, collectTransitionInstanceVariables(migratingTransitionInstance)); }
@Deployment @Test public void testGetTransitionInstancesForActivity() { // given ProcessInstance instance = runtimeService.startProcessInstanceByKey("miSubprocess"); // complete one async task Job job = managementService.createJobQuery().listPage(0, 1).get(0); managementService.executeJob(job.getId()); Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); // when ActivityInstance tree = runtimeService.getActivityInstance(instance.getId()); // then assertEquals(0, tree.getTransitionInstances("subProcess").length); TransitionInstance[] asyncBeforeInstances = tree.getTransitionInstances("innerTask"); assertEquals(2, asyncBeforeInstances.length); assertEquals("innerTask", asyncBeforeInstances[0].getActivityId()); assertEquals("innerTask", asyncBeforeInstances[1].getActivityId()); assertFalse(asyncBeforeInstances[0].getId().equals(asyncBeforeInstances[1].getId())); TransitionInstance[] asyncEndEventInstances = tree.getTransitionInstances("theSubProcessEnd"); assertEquals(1, asyncEndEventInstances.length); assertEquals("theSubProcessEnd", asyncEndEventInstances[0].getActivityId()); }