private void addFlowFromTask(final AbstractFlowNodeBuilder<?, ?> builder, final YamlTask task) { if (!task.getCases().isEmpty()) { final String gatewayId = "split-" + task.getId(); final ExclusiveGatewayBuilder gatewayBuilder = builder.exclusiveGateway(gatewayId); for (YamlCase flow : task.getCases()) { if (flow.getDefaultCase() != null) { gatewayBuilder.defaultFlow(); addTask(gatewayBuilder, flow.getDefaultCase()); } else { gatewayBuilder.condition(flow.getCondition()); addTask(gatewayBuilder, flow.getNext()); } } } else if (task.getNext() != null) { addTask(builder, task.getNext()); } else { final YamlTask nextTask = getNextTask(task); if (!task.isEnd() && nextTask != null) { addTask(builder, nextTask.getId()); } else { builder.endEvent(); } } }
private void addFlowFromTask(final AbstractFlowNodeBuilder<?, ?> builder, final YamlTask task) { if (!task.getCases().isEmpty()) { final String gatewayId = "split-" + task.getId(); final ExclusiveGatewayBuilder gatewayBuilder = builder.exclusiveGateway(gatewayId); for (YamlCase flow : task.getCases()) { if (flow.getDefaultCase() != null) { gatewayBuilder.defaultFlow(); addTask(gatewayBuilder, flow.getDefaultCase()); } else { gatewayBuilder.condition(flow.getCondition()); addTask(gatewayBuilder, flow.getNext()); } } } else if (task.getNext() != null) { addTask(builder, task.getNext()); } else { final YamlTask nextTask = getNextTask(task); if (!task.isEnd() && nextTask != null) { addTask(builder, nextTask.getId()); } else { builder.endEvent(); } } }
.sequenceFlowId("s2") .connectTo("joinRequest") .endEvent("end") .done();
.sequenceFlowId("s2") .connectTo("joinRequest") .endEvent("end") .done();
private long deployWorkflow(String... taskTypes) { AbstractFlowNodeBuilder<?, ?> builder = Bpmn.createExecutableProcess(PROCESS_ID).startEvent(); for (String taskType : taskTypes) { builder = builder.serviceTask( taskType, b -> b.zeebeTaskType(taskType).zeebeTaskRetries(3).zeebeTaskHeader("model", "true")); } final BpmnModelInstance model = builder.endEvent().done(); return apiRule .createCmdRequest() .partitionId(DEPLOYMENT_PARTITION) .type(ValueType.DEPLOYMENT, DeploymentIntent.CREATE) .command() .put( "resources", Collections.singletonList(deploymentResource(bpmnXml(model), "process.bpmn"))) .done() .sendAndAwait() .getKey(); }
private long deployWorkflow(String... taskTypes) { AbstractFlowNodeBuilder<?, ?> builder = Bpmn.createExecutableProcess(PROCESS_ID).startEvent(); for (String taskType : taskTypes) { builder = builder.serviceTask( taskType, b -> b.zeebeTaskType(taskType).zeebeTaskRetries(3).zeebeTaskHeader("model", "true")); } final BpmnModelInstance model = builder.endEvent().done(); return apiRule .createCmdRequest() .partitionId(DEPLOYMENT_PARTITION) .type(ValueType.DEPLOYMENT, DeploymentIntent.CREATE) .command() .put( "resources", Collections.singletonList(deploymentResource(bpmnXml(model), "process.bpmn"))) .done() .sendAndAwait() .getKey(); }
.sequenceFlowId("s2") .connectTo("joinRequest") .endEvent("end") .done();
.sequenceFlowId("s2") .connectTo("joinRequest") .endEvent("end") .done();
.sequenceFlowId("joinFlow2") .connectTo("join") .endEvent() .done();
.sequenceFlowId("joinFlow2") .connectTo("join") .endEvent() .done();
@Test public void shouldNotCompleteInstanceAfterIncidentIsRaisedOnExclusiveGateway() { // given testClient.deploy( Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .parallelGateway() .serviceTask("task", t -> t.zeebeTaskType("task")) .endEvent("end-1") .moveToLastGateway() .exclusiveGateway("gateway") .defaultFlow() .endEvent("end-2") .moveToNode("gateway") .sequenceFlowId("to-end-3") .condition("$.x < 21") .endEvent("end-3") .done()); testClient.createWorkflowInstance(PROCESS_ID); // when final Record<IncidentRecordValue> incident = RecordingExporter.incidentRecords(IncidentIntent.CREATED).getFirst(); testClient.completeJobOfType("task"); testClient.updatePayload(incident.getValue().getElementInstanceKey(), "{'x':123}"); testClient.resolveIncident(incident.getKey()); // then assertThatWorkflowInstanceCompletedAfter("end-2", WorkflowInstanceIntent.EVENT_ACTIVATED); }
@Test public void shouldNotCompleteInstanceAfterIncidentIsRaisedOnExclusiveGateway() { // given testClient.deploy( Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .parallelGateway() .serviceTask("task", t -> t.zeebeTaskType("task")) .endEvent("end-1") .moveToLastGateway() .exclusiveGateway("gateway") .defaultFlow() .endEvent("end-2") .moveToNode("gateway") .sequenceFlowId("to-end-3") .condition("$.x < 21") .endEvent("end-3") .done()); testClient.createWorkflowInstance(PROCESS_ID); // when final Record<IncidentRecordValue> incident = RecordingExporter.incidentRecords(IncidentIntent.CREATED).getFirst(); testClient.completeJobOfType("task"); testClient.updatePayload(incident.getValue().getElementInstanceKey(), "{'x':123}"); testClient.resolveIncident(incident.getKey()); // then assertThatWorkflowInstanceCompletedAfter("end-2", WorkflowInstanceIntent.ELEMENT_COMPLETED); }