@Override protected void executeParse(BpmnParse bpmnParse, EndEvent endEvent) { EventDefinition eventDefinition = null; if (endEvent.getEventDefinitions().size() > 0) { eventDefinition = endEvent.getEventDefinitions().get(0); if (eventDefinition instanceof ErrorEventDefinition) { ErrorEventDefinition errorDefinition = (ErrorEventDefinition) eventDefinition; if (bpmnParse.getBpmnModel().containsErrorRef(errorDefinition.getErrorCode())) { String errorCode = bpmnParse.getBpmnModel().getErrors().get(errorDefinition.getErrorCode()); if (StringUtils.isEmpty(errorCode)) { LOGGER.warn("errorCode is required for an error event {}", endEvent.getId()); } } endEvent.setBehavior(bpmnParse.getActivityBehaviorFactory().createErrorEndEventActivityBehavior(endEvent, errorDefinition)); } else if (eventDefinition instanceof TerminateEventDefinition) { endEvent.setBehavior(bpmnParse.getActivityBehaviorFactory().createTerminateEndEventActivityBehavior(endEvent)); } else if (eventDefinition instanceof CancelEventDefinition) { endEvent.setBehavior(bpmnParse.getActivityBehaviorFactory().createCancelEndEventActivityBehavior(endEvent)); } else { endEvent.setBehavior(bpmnParse.getActivityBehaviorFactory().createNoneEndEventActivityBehavior(endEvent)); } } else { endEvent.setBehavior(bpmnParse.getActivityBehaviorFactory().createNoneEndEventActivityBehavior(endEvent)); } }
String errorCode = bpmnParse.getBpmnModel().getErrors().get(errorDefinition.getErrorCode()); if (StringUtils.isEmpty(errorCode)) { LOGGER.warn("errorCode is required for an error event {}", endEvent.getId()); ScopeImpl scope = bpmnParse.getCurrentScope(); if (scope.getProperty("type") == null || !scope.getProperty("type").equals("transaction")) { LOGGER.warn("end event with cancelEventDefinition only supported inside transaction subprocess (id={})", endEvent.getId()); } else { endEventActivity.setProperty("type", "cancelEndEvent");
process.addFlowElement(flowToSubProcess); SequenceFlow flowFromSubProcess = new SequenceFlow(subProcess.getId(), endEvent.getId()); flowFromSubProcess.setId(dynamicEmbeddedSubProcessBuilder.nextFlowId(process.getFlowElementMap())); process.addFlowElement(flowFromSubProcess); bpmnModel.addGraphicInfo(endEvent.getId(), endGraphicInfo);
process.addFlowElement(flowToUserTask); SequenceFlow flowFromUserTask = new SequenceFlow(userTask.getId(), endEvent.getId()); flowFromUserTask.setId(dynamicUserTaskBuilder.nextFlowId(process.getFlowElementMap())); process.addFlowElement(flowFromUserTask); bpmnModel.addGraphicInfo(endEvent.getId(), endGraphicInfo);
parentSubProcess.addFlowElement(joinFlow2); SequenceFlow endFlow = new SequenceFlow(join.getId(), endEvent.getId()); endFlow.setId(dynamicEmbeddedSubProcessBuilder.nextFlowId(process.getFlowElementMap())); parentSubProcess.addFlowElement(endFlow); bpmnModel.addGraphicInfo(endEvent.getId(), endGraphicInfo);