private Optional<MultiInstanceLoopCharacteristics> getMultiInstanceLoopCharacteristics() { return Optional.ofNullable((MultiInstanceLoopCharacteristics) process.getLoopCharacteristics()); }
public BpmnNode convertSubProcess(SubProcess subProcess) { BpmnNode subProcessRoot; if (subProcess instanceof org.eclipse.bpmn2.AdHocSubProcess) { subProcessRoot = convertAdHocSubProcess((org.eclipse.bpmn2.AdHocSubProcess) subProcess); } else if (subProcess.getLoopCharacteristics() != null) { subProcessRoot = convertMultInstanceSubprocessNode(subProcess); } else if (subProcess.isTriggeredByEvent()) { subProcessRoot = convertEventSubprocessNode(subProcess); } else { subProcessRoot = convertEmbeddedSubprocessNode(subProcess); } Map<String, BpmnNode> nodes = delegate.convertChildNodes(subProcessRoot, subProcess.getFlowElements(), subProcess.getLaneSets()); delegate.convertEdges(subProcessRoot, Stream.concat(subProcess.getFlowElements().stream(), subProcess.getArtifacts().stream()).collect(Collectors.toList()), nodes); return subProcessRoot; }
@Test public void completionConditionMustBeWrappedInCdata() { String expression = "x<1"; String expected = "<![CDATA[" + expression + "]]>"; SubProcess subProcess = bpmn2.createSubProcess(); MultipleInstanceSubProcessPropertyWriter p = new MultipleInstanceSubProcessPropertyWriter( subProcess, new FlatVariableScope()); p.setCompletionCondition(expression); MultiInstanceLoopCharacteristics loopCharacteristics = (MultiInstanceLoopCharacteristics) subProcess.getLoopCharacteristics(); FormalExpression completionCondition = (FormalExpression) loopCharacteristics.getCompletionCondition(); assertThat(expected).isEqualTo(completionCondition.getBody()); } }
if (subProcess.getLoopCharacteristics() != null && subProcess.getLoopCharacteristics() instanceof MultiInstanceLoopCharacteristics) { haveValidLoopCharacteristics = true; properties.put(MITRIGGER, "true"); MultiInstanceLoopCharacteristics taskmi = (MultiInstanceLoopCharacteristics) subProcess.getLoopCharacteristics(); if (taskmi.getLoopDataInputRef() != null) { ItemAwareElement iedatainput = taskmi.getLoopDataInputRef();