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; }
protected ActivityInstance findActivityInstance(ActivityInstance tree, String activityInstanceId) { if (activityInstanceId.equals(tree.getId())) { return tree; } else { for (ActivityInstance child : tree.getChildActivityInstances()) { ActivityInstance matchingChildInstance = findActivityInstance(child, activityInstanceId); if (matchingChildInstance != null) { return matchingChildInstance; } } } return null; }
protected List<ActivityInstance> getInstancesForActivityId(ActivityInstance activityInstance, String activityId) { List<ActivityInstance> result = new ArrayList<ActivityInstance>(); if(activityInstance.getActivityId().equals(activityId)) { result.add(activityInstance); } for (ActivityInstance childInstance : activityInstance.getChildActivityInstances()) { result.addAll(getInstancesForActivityId(childInstance, activityId)); } return result; }
public ExecutionEntity getExecution(ActivityInstance activityInstance) { ScopeImpl scope = null; if (activityInstance.getId().equals(activityInstance.getProcessInstanceId())) { scope = processDefinition; } else { scope = processDefinition.findActivity(activityInstance.getActivityId()); } return intersect( getExecutions(scope), activityInstance.getExecutionIds()); }
runtimeService.createProcessInstanceModification(processInstanceId).startTransition("flow5", randomSubProcessInstance.getId()).execute(); assertEquals(processInstanceId, updatedTree.getProcessInstanceId()); assertEquals(randomSubProcessInstance.getId(), innerSubProcessInstance.getParentActivityInstanceId());
MigratingActivityInstance migratingInstance = null; MigrationInstruction applyingInstruction = parseContext.getInstructionFor(element.getActivityId()); ScopeImpl sourceScope = null; ScopeImpl targetScope = null; ExecutionEntity representativeExecution = parseContext.getMapping().getExecution(element); if (element.getId().equals(element.getProcessInstanceId())) { sourceScope = parseContext.getSourceProcessDefinition(); targetScope = parseContext.getTargetProcessDefinition(); sourceScope = parseContext.getSourceProcessDefinition().findActivity(element.getActivityId()); representativeExecution); MigratingActivityInstance parentInstance = parseContext.getMigratingActivityInstanceById(element.getParentActivityInstanceId());
@Deployment public void testCatchErrorThrownBySignallableActivityBehaviour() { String procId = runtimeService.startProcessInstanceByKey("catchErrorThrownBySignallableActivityBehaviour").getId(); assertNotNull("Didn't get a process id from runtime service", procId); ActivityInstance processActivityInstance = runtimeService.getActivityInstance(procId); ActivityInstance serviceTask = processActivityInstance.getChildActivityInstances()[0]; assertEquals("Expected the service task to be active after starting the process", "serviceTask", serviceTask.getActivityId()); runtimeService.signal(serviceTask.getExecutionIds()[0]); assertThatErrorHasBeenCaught(procId); }
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; }
public ProcessEngineException cannotBecomeSubordinateInNonScope(MigratingActivityInstance activityInstance) { return new ProcessEngineException(exceptionMessage( "005", "{}", "Cannot attach a subordinate to activity instance '{}'. Activity '{}' is not a scope", activityInstance.getActivityInstance().getId(), activityInstance.getActivityInstance().getActivityId())); }
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 void migrateHistory(DelegateExecution execution) { if (activityInstance.getId().equals(activityInstance.getProcessInstanceId())) { migrateProcessInstanceHistory(execution); } else { migrateActivityInstanceHistory(execution); } }
public String getSingleExecutionIdForActivity(ActivityInstance activityInstance, String activityId) { ActivityInstance singleInstance = getSingleActivityInstance(activityInstance, activityId); String[] executionIds = singleInstance.getExecutionIds(); if (executionIds.length == 1) { return executionIds[0]; } else { throw new RuntimeException("There is more than one execution assigned to activity instance " + singleInstance.getId()); } }
@Deployment(resources = "org/camunda/bpm/engine/test/api/externaltask/oneExternalTaskProcess.bpmn20.xml") public void testFetch() { // given ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneExternalTaskProcess"); // when List<LockedExternalTask> externalTasks = externalTaskService.fetchAndLock(1, WORKER_ID) .topic(TOPIC_NAME, LOCK_TIME) .execute(); // then assertEquals(1, externalTasks.size()); LockedExternalTask task = externalTasks.get(0); assertNotNull(task.getId()); assertEquals(processInstance.getId(), task.getProcessInstanceId()); assertEquals(processInstance.getProcessDefinitionId(), task.getProcessDefinitionId()); assertEquals("externalTask", task.getActivityId()); assertEquals("oneExternalTaskProcess", task.getProcessDefinitionKey()); assertEquals(TOPIC_NAME, task.getTopicName()); ActivityInstance activityInstance = runtimeService .getActivityInstance(processInstance.getId()) .getActivityInstances("externalTask")[0]; assertEquals(activityInstance.getId(), task.getActivityInstanceId()); assertEquals(activityInstance.getExecutionIds()[0], task.getExecutionId()); AssertUtil.assertEqualsSecondPrecision(nowPlus(LOCK_TIME), task.getLockExpirationTime()); assertEquals(WORKER_ID, task.getWorkerId()); }
@Deployment public void testParallelGatewayBeforeAndInSubProcess() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process"); List<Task> tasks = taskService.createTaskQuery().list(); assertThat(tasks, hasSize(3)); ActivityInstance instance = runtimeService.getActivityInstance(processInstance.getId()); assertThat(instance.getActivityName(), is("Process1")); ActivityInstance[] childActivityInstances = instance.getChildActivityInstances(); for (ActivityInstance activityInstance : childActivityInstances) { if (activityInstance.getActivityId().equals("SubProcess_1")) { ActivityInstance[] instances = activityInstance.getChildActivityInstances(); for (ActivityInstance activityInstance2 : instances) { assertThat(activityInstance2.getActivityName(), is(either(equalTo("Inner User Task 1")).or(CoreMatchers.<Object>equalTo("Inner User Task 2")))); } } else { assertThat(activityInstance.getActivityName(), is("Outer User Task")); } } }
public String getActivityInstanceId() { if (activityInstance != null) { return activityInstance.getId(); } else { // - this branch is only executed for emerging activity instances // - emerging activity instances are never leaf activities // - therefore it is fine to always look up the activity instance id on the parent ExecutionEntity execution = resolveRepresentativeExecution(); return execution.getParentActivityInstanceId(); } }
@Test public void testStartAfter() { DeploymentWithDefinitions deployment = testRule.deploy(instance); ProcessDefinition definition = deployment.getDeployedProcessDefinitions().get(0); List<String> processInstanceIds = helper.startInstances("process1", 2); runtimeService.createModification(definition.getId()).startAfterActivity("user2").processInstanceIds(processInstanceIds).execute(); for (String processInstanceId : processInstanceIds) { ActivityInstance updatedTree = runtimeService.getActivityInstance(processInstanceId); assertNotNull(updatedTree); assertEquals(processInstanceId, updatedTree.getProcessInstanceId()); assertThat(updatedTree).hasStructure(describeActivityInstanceTree(definition.getId()).activity("user1").activity("user3").done()); } }
public void parseTransitionInstances(MigratingInstanceParseContext parseContext, MigratingActivityInstance migratingInstance) { for (TransitionInstance transitionInstance : migratingInstance.getActivityInstance().getChildTransitionInstances()) { parseContext.handleTransitionInstance(transitionInstance); } }
assertEquals(processInstanceId, updatedTree.getProcessInstanceId()); assertEquals(catchEventInstance.getExecutionIds()[0], job.getExecutionId());
.getActivityInstances("subprocess")[0]; assertEquals(historicActivityInstance.getParentActivityInstanceId(), activityInstance.getParentActivityInstanceId());
protected Collection<ActivityInstance> nextElements() { ActivityInstance[] children = getCurrentElement().getChildActivityInstances(); return Arrays.asList(children); }