protected void ensureActivityIdInitialized() { if (activityId == null) { JobDefinition jobDefinition = getJobDefinition(); if (jobDefinition != null) { activityId = jobDefinition.getActivityId(); } else { ExecutionEntity execution = getExecution(); if (execution != null) { activityId = execution.getActivityId(); } } } }
protected void ensureActivityIdInitialized() { if (activityId == null) { JobDefinition jobDefinition = getJobDefinition(); if (jobDefinition != null) { activityId = jobDefinition.getActivityId(); } else { ExecutionEntity execution = getExecution(); if (execution != null) { activityId = execution.getActivityId(); } } } }
public void notify(DelegateExecution execution) throws Exception { ExecutionEntity executionEntity = (ExecutionEntity) execution; long sequenceCounter = executionEntity.getSequenceCounter(); String activityId = executionEntity.getActivityId(); activityExecutionOrder.add(new ActivitySequenceCounterMap(activityId, sequenceCounter)); }
public void execute(TimerJobConfiguration configuration, ExecutionEntity execution, CommandContext commandContext, String tenantId) { String activityId = configuration.getTimerElementKey(); ActivityImpl intermediateEventActivity = execution.getProcessDefinition().findActivity(activityId); ensureNotNull("Error while firing timer: intermediate event activity " + configuration + " not found", "intermediateEventActivity", intermediateEventActivity); try { if(activityId.equals(execution.getActivityId())) { // Regular Intermediate timer catch execution.signal("signal", null); } else { // Event based gateway execution.executeEventHandlerActivity(intermediateEventActivity); } } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new ProcessEngineException("exception during timer execution: " + e.getMessage(), e); } } }
public void execute(TimerJobConfiguration configuration, ExecutionEntity execution, CommandContext commandContext, String tenantId) { String activityId = configuration.getTimerElementKey(); ActivityImpl intermediateEventActivity = execution.getProcessDefinition().findActivity(activityId); ensureNotNull("Error while firing timer: intermediate event activity " + configuration + " not found", "intermediateEventActivity", intermediateEventActivity); try { if(activityId.equals(execution.getActivityId())) { // Regular Intermediate timer catch execution.signal("signal", null); } else { // Event based gateway execution.executeEventHandlerActivity(intermediateEventActivity); } } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new ProcessEngineException("exception during timer execution: " + e.getMessage(), e); } } }
protected void setReferenceToProcessInstance(HistoricDecisionInstanceEntity event, ExecutionEntity execution) { event.setProcessDefinitionKey(getProcessDefinitionKey(execution)); event.setProcessDefinitionId(execution.getProcessDefinitionId()); event.setRootProcessInstanceId(execution.getRootProcessInstanceId()); event.setProcessInstanceId(execution.getProcessInstanceId()); event.setExecutionId(execution.getId()); event.setActivityId(execution.getActivityId()); event.setActivityInstanceId(execution.getActivityInstanceId()); }
protected void setReferenceToProcessInstance(HistoricDecisionInstanceEntity event, ExecutionEntity execution) { event.setProcessDefinitionKey(getProcessDefinitionKey(execution)); event.setProcessDefinitionId(execution.getProcessDefinitionId()); event.setRootProcessInstanceId(execution.getRootProcessInstanceId()); event.setProcessInstanceId(execution.getProcessInstanceId()); event.setExecutionId(execution.getId()); event.setActivityId(execution.getActivityId()); event.setActivityInstanceId(execution.getActivityInstanceId()); }
@Deployment(resources = { "org/camunda/bpm/engine/test/bpmn/async/AsyncStartEventTest.testCallActivity-super.bpmn20.xml", "org/camunda/bpm/engine/test/bpmn/async/AsyncStartEventTest.testCallActivity-sub.bpmn20.xml" }) public void testCallActivity() { runtimeService.startProcessInstanceByKey("super"); ProcessInstance pi = runtimeService .createProcessInstanceQuery() .processDefinitionKey("sub") .singleResult(); assertTrue(pi instanceof ExecutionEntity); assertEquals("theSubStart", ((ExecutionEntity)pi).getActivityId()); }
@Deployment(resources = { "org/camunda/bpm/engine/test/bpmn/async/AsyncEndEventTest.testCallActivity-super.bpmn20.xml", "org/camunda/bpm/engine/test/bpmn/async/AsyncEndEventTest.testCallActivity-sub.bpmn20.xml" }) public void testCallActivity() { runtimeService.startProcessInstanceByKey("super"); ProcessInstance pi = runtimeService .createProcessInstanceQuery() .processDefinitionKey("sub") .singleResult(); assertTrue(pi instanceof ExecutionEntity); assertEquals("theSubEnd", ((ExecutionEntity)pi).getActivityId()); }
@Deployment(resources = "org/camunda/bpm/engine/test/bpmn/gateway/InclusiveGatewayTest.testDefaultSequenceFlow.bpmn20.xml") public void testDefaultSequenceFlowExecutionIsActive() { // given a triggered inclusive gateway default flow runtimeService.startProcessInstanceByKey("inclusiveGwDefaultSequenceFlow", CollectionUtil.singletonMap("input", 5)); // then the process instance execution is not deactivated ExecutionEntity execution = (ExecutionEntity) runtimeService.createExecutionQuery().singleResult(); assertEquals("theTask2", execution.getActivityId()); assertTrue(execution.isActive()); }
protected void checkExecutionMessageCorrelationResult(MessageCorrelationResult result, ProcessInstance processInstance, String activityId) { assertNotNull(result); assertEquals(MessageCorrelationResultType.Execution, result.getResultType()); assertEquals(processInstance.getId(), result.getExecution().getProcessInstanceId()); ExecutionEntity entity = (ExecutionEntity) result.getExecution(); assertEquals(activityId, entity.getActivityId()); }
protected void checkExecutionMessageCorrelationResult(MessageCorrelationResult result, ProcessInstance processInstance, String activityId) { assertNotNull(result); assertEquals(MessageCorrelationResultType.Execution, result.getResultType()); assertEquals(processInstance.getId(), result.getExecution().getProcessInstanceId()); ExecutionEntity entity = (ExecutionEntity) result.getExecution(); assertEquals(activityId, entity.getActivityId()); }
public static ExternalTaskEntity createAndInsert(ExecutionEntity execution, String topic, long priority) { ExternalTaskEntity externalTask = new ExternalTaskEntity(); externalTask.setTopicName(topic); externalTask.setExecutionId(execution.getId()); externalTask.setProcessInstanceId(execution.getProcessInstanceId()); externalTask.setProcessDefinitionId(execution.getProcessDefinitionId()); externalTask.setActivityId(execution.getActivityId()); externalTask.setActivityInstanceId(execution.getActivityInstanceId()); externalTask.setTenantId(execution.getTenantId()); externalTask.setPriority(priority); ProcessDefinitionEntity processDefinition = execution.getProcessDefinition(); externalTask.setProcessDefinitionKey(processDefinition.getKey()); externalTask.insert(); externalTask.produceHistoricExternalTaskCreatedEvent(); return externalTask; }
@Deployment(resources = "org/camunda/bpm/engine/test/api/runtime/MessageCorrelationTest.testCatchingMessageEventCorrelation.bpmn20.xml") @Test public void testMessageCorrelateAllResultListWithResultTypeExecution() { //given ProcessInstance procInstance1 = runtimeService.startProcessInstanceByKey("process"); ProcessInstance procInstance2 = runtimeService.startProcessInstanceByKey("process"); //when correlated all with result List<MessageCorrelationResult> resultList = runtimeService.createMessageCorrelation("newInvoiceMessage") .correlateAllWithResult(); assertEquals(2, resultList.size()); //then result should contains executions on which messages was correlated for (MessageCorrelationResult result : resultList) { assertNotNull(result); assertEquals(MessageCorrelationResultType.Execution, result.getResultType()); assertTrue(procInstance1.getId().equalsIgnoreCase(result.getExecution().getProcessInstanceId()) || procInstance2.getId().equalsIgnoreCase(result.getExecution().getProcessInstanceId()) ); ExecutionEntity entity = (ExecutionEntity) result.getExecution(); assertEquals("messageCatch", entity.getActivityId()); } }
public static ExternalTaskEntity createAndInsert(ExecutionEntity execution, String topic, long priority) { ExternalTaskEntity externalTask = new ExternalTaskEntity(); externalTask.setTopicName(topic); externalTask.setExecutionId(execution.getId()); externalTask.setProcessInstanceId(execution.getProcessInstanceId()); externalTask.setProcessDefinitionId(execution.getProcessDefinitionId()); externalTask.setActivityId(execution.getActivityId()); externalTask.setActivityInstanceId(execution.getActivityInstanceId()); externalTask.setTenantId(execution.getTenantId()); externalTask.setPriority(priority); ProcessDefinitionEntity processDefinition = execution.getProcessDefinition(); externalTask.setProcessDefinitionKey(processDefinition.getKey()); externalTask.insert(); externalTask.produceHistoricExternalTaskCreatedEvent(); return externalTask; }
public void notify(DelegateExecution execution) throws Exception { ExecutionEntity executionCasted = ((ExecutionEntity)execution); String parameterValue = null; if (parameter != null) { parameterValue = (String)parameter.getValue(execution); } String activityName = null; if (executionCasted.getActivity() != null) { activityName = executionCasted.getActivity().getProperties().get(new PropertyKey<String>("name")); } recordedEvents.add( new RecordedEvent( executionCasted.getActivityId(), activityName, execution.getEventName(), parameterValue, execution.getActivityInstanceId(), execution.getCurrentTransitionId(), execution.isCanceled(), execution.getId())); }
/** This test the isReachable() check thaty is done to check if * upstream tokens can reach the inclusive gateway. * * In case of loops, special care needs to be taken in the algorithm, * or else stackoverflows will happen very quickly. */ @Deployment public void testLoop() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("inclusiveTestLoop", CollectionUtil.singletonMap("counter", 1)); Task task = taskService.createTaskQuery().singleResult(); assertEquals("task C", task.getName()); taskService.complete(task.getId()); assertEquals(0, taskService.createTaskQuery().count()); for (Execution execution : runtimeService.createExecutionQuery().list()) { System.out.println(((ExecutionEntity) execution).getActivityId()); } assertEquals("Found executions: " + runtimeService.createExecutionQuery().list(), 0, runtimeService.createExecutionQuery().count()); assertProcessEnded(pi.getId()); }
@Test public void createIncident() { //given testRule.deployAndGetDefinition(ProcessModels.TWO_TASKS_PROCESS); ProcessInstance processInstance = engineRule.getRuntimeService().startProcessInstanceByKey("Process"); ExecutionEntity execution = (ExecutionEntity) engineRule.getRuntimeService().createExecutionQuery().active().singleResult(); authRule .init(scenario) .withUser("userId") .bindResource("processInstance", processInstance.getId()) .bindResource("processDefinition", "Process") .start(); engineRule.getRuntimeService() .createIncident("foo", execution.getId(), execution.getActivityId(), "bar"); // then authRule.assertScenario(scenario); }
@Test public void testCancelWithFlag() { // given this.instance = Bpmn.createExecutableProcess("process1") .startEvent("start") .serviceTask("ser").camundaExpression("${true}") .userTask("user") .endEvent("end") .done(); ProcessDefinition processDefinition = testRule.deployAndGetDefinition(instance); List<String> processInstanceIds = helper.startInstances("process1", 1); // when runtimeService.createModification(processDefinition.getId()) .startBeforeActivity("ser") .cancelAllForActivity("user", true) .processInstanceIds(processInstanceIds) .execute(); // then ExecutionEntity execution = (ExecutionEntity) runtimeService.createExecutionQuery().singleResult(); assertNotNull(execution); assertEquals("user", execution.getActivityId()); }
@Test public void resolveIncident() { testRule.deployAndGetDefinition(ProcessModels.TWO_TASKS_PROCESS); ProcessInstance processInstance = engineRule.getRuntimeService().startProcessInstanceByKey("Process"); ExecutionEntity execution = (ExecutionEntity) engineRule.getRuntimeService().createExecutionQuery().active().singleResult(); authRule.disableAuthorization(); Incident incident = engineRule.getRuntimeService() .createIncident("foo", execution.getId(), execution.getActivityId(), "bar"); authRule .init(scenario) .withUser("userId") .bindResource("processInstance", processInstance.getId()) .bindResource("processDefinition", "Process") .start(); // when engineRule.getRuntimeService().resolveIncident(incident.getId()); // then authRule.assertScenario(scenario); } }