@Override public SubProcessBuilder builder() { return new SubProcessBuilder((BpmnModelInstance) modelInstance, this); }
"sub", b -> { b.embeddedSubProcess().startEvent().endEvent(); .endEvent() .done());
inner -> inner .embeddedSubProcess() .startEvent() .serviceTask("task", b -> b.zeebeTaskType("type")) outer -> outer .embeddedSubProcess() .startEvent() .subProcess("innerSubProcess", innerSubProcess) .endEvent(); final BpmnModelInstance model = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .subProcess("outerSubProcess", outSubProcess) .boundaryEvent("event") .message(m -> m.name("msg").zeebeCorrelationKey("$.key")) .endEvent("msgEnd")
@Override BpmnModelInstance modelInstance() { return Bpmn.createExecutableProcess(processId()) .startEvent() .subProcess(elementId()) .embeddedSubProcess() .startEvent() .subProcessDone() .done(); } },
@Test public void shouldRunServiceTaskAfterEmbeddedSubProcess() { // given final BpmnModelInstance model = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .subProcess() .embeddedSubProcess() .startEvent() .endEvent() .subProcessDone() .serviceTask("task", b -> b.zeebeTaskType("type")) .endEvent() .done(); testClient.deploy(model); // when testClient.createWorkflowInstance(PROCESS_ID); // then final Record<JobRecordValue> jobCreatedEvent = testClient.receiveFirstJobEvent(JobIntent.CREATED); final Headers headers = jobCreatedEvent.getValue().getHeaders(); Assertions.assertThat(headers).hasElementId("task"); }
.startEvent() .subProcess("sub") .embeddedSubProcess() .startEvent() .serviceTask("task", t -> t.zeebeTaskType("type")) .endEvent() .subProcessDone() .boundaryEvent("timer") .cancelActivity(true) .timerWithDuration("PT1S")
mapping(b -> b.zeebeInput("$.x", "$.y").zeebeOutput("$.y", "$.z")), scopeVariables(tuple("z", "1")) }, mapping(b -> b.zeebeInput("$.x", "$.y").zeebeOutput("$.x", "$.z")), scopeVariables(tuple("z", "1")) },
"sub", b -> { b.embeddedSubProcess().startEvent().endEvent(); .endEvent() .done());
inner -> inner .embeddedSubProcess() .startEvent() .serviceTask("task", b -> b.zeebeTaskType("type")) outer -> outer .embeddedSubProcess() .startEvent() .subProcess("innerSubProcess", innerSubProcess) .endEvent(); final BpmnModelInstance model = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .subProcess("outerSubProcess", outSubProcess) .boundaryEvent("event") .message(m -> m.name("msg").zeebeCorrelationKey("$.key")) .endEvent("msgEnd")
@Override BpmnModelInstance modelInstance() { return Bpmn.createExecutableProcess(processId()) .startEvent() .subProcess(elementId()) .embeddedSubProcess() .startEvent() .subProcessDone() .done(); } },
@Test public void shouldRunServiceTaskAfterEmbeddedSubProcess() { // given final BpmnModelInstance model = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .subProcess() .embeddedSubProcess() .startEvent() .endEvent() .subProcessDone() .serviceTask("task", b -> b.zeebeTaskType("type")) .endEvent() .done(); testClient.deploy(model); // when testClient.createWorkflowInstance(PROCESS_ID); // then final Record<JobRecordValue> jobCreatedEvent = testClient.receiveFirstJobEvent(JobIntent.CREATED); final Headers headers = jobCreatedEvent.getValue().getHeaders(); Assertions.assertThat(headers).hasElementId("task"); }
.startEvent() .subProcess("sub") .embeddedSubProcess() .startEvent() .serviceTask("task", t -> t.zeebeTaskType("type")) .endEvent() .subProcessDone() .boundaryEvent("timer") .cancelActivity(true) .timerWithDuration("PT1S")
mapping(b -> b.zeebeInput("$.x", "$.y").zeebeOutput("$.y", "$.z")), scopeVariables(tuple("z", "1")) }, mapping(b -> b.zeebeInput("$.x", "$.y").zeebeOutput("$.x", "$.z")), scopeVariables(tuple("z", "1")) },
"sub", b -> { b.embeddedSubProcess() .startEvent() .serviceTask("task", t -> t.zeebeTaskType("test")) .endEvent() .done());
@Override public SubProcessBuilder builder() { return new SubProcessBuilder((BpmnModelInstance) modelInstance, this); }
"sub", b -> { b.embeddedSubProcess() .startEvent() .serviceTask("task", t -> t.zeebeTaskType("test")) .endEvent() .done());
.startEvent() .subProcess("outerSubProcess") .embeddedSubProcess() .startEvent() .subProcess("innerSubProcess") .embeddedSubProcess() .startEvent() .serviceTask("task", b -> b.zeebeTaskType("type")) .endEvent() .subProcessDone() .endEvent() .subProcessDone() .endEvent() .done(); testClient.deploy(model);
.startEvent() .subProcess("outerSubProcess") .embeddedSubProcess() .startEvent() .subProcess("innerSubProcess") .embeddedSubProcess() .startEvent() .serviceTask("task", b -> b.zeebeTaskType("type")) .endEvent() .subProcessDone() .endEvent() .subProcessDone() .endEvent() .done(); testClient.deploy(model);
@Test public void shouldCompleteInstanceAfterSubProcessEnded() { // given testClient.deploy( Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .parallelGateway() .serviceTask("task-1", t -> t.zeebeTaskType("task-1")) .endEvent("end-1") .moveToLastGateway() .subProcess( "sub", s -> s.embeddedSubProcess() .startEvent() .serviceTask("task-2", t -> t.zeebeTaskType("task-2")) .endEvent("end-sub")) .endEvent("end-2") .done()); testClient.createWorkflowInstance(PROCESS_ID); // when testClient.completeJobOfType("task-1"); testClient.completeJobOfType("task-2"); // then assertThatWorkflowInstanceCompletedAfter("end-2", WorkflowInstanceIntent.EVENT_ACTIVATED); }
@Test public void shouldCompleteInstanceAfterSubProcessEnded() { // given testClient.deploy( Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .parallelGateway() .serviceTask("task-1", t -> t.zeebeTaskType("task-1")) .endEvent("end-1") .moveToLastGateway() .subProcess( "sub", s -> s.embeddedSubProcess() .startEvent() .serviceTask("task-2", t -> t.zeebeTaskType("task-2")) .endEvent("end-sub")) .endEvent("end-2") .done()); testClient.createWorkflowInstance(PROCESS_ID); // when testClient.completeJobOfType("task-1"); testClient.completeJobOfType("task-2"); // then assertThatWorkflowInstanceCompletedAfter("end-2", WorkflowInstanceIntent.ELEMENT_COMPLETED); }