public String getCompletionCondition() { return getMultiInstanceLoopCharacteristics() .map(miloop -> (FormalExpression) miloop.getCompletionCondition()) .map(FormalExpression::getBody).orElse(""); }
public void setCompletionCondition(String expression) { FormalExpression formalExpression = bpmn2.createFormalExpression(); formalExpression.setBody(asCData(expression)); this.miloop.setCompletionCondition(formalExpression); } }
public void setInput(String value) { DataInput dataInput = createDataInput(value); miloop.setInputDataItem(dataInput); }
"true"); MultiInstanceLoopCharacteristics taskmi = (MultiInstanceLoopCharacteristics) task.getLoopCharacteristics(); if (taskmi.getLoopDataInputRef() != null) { ItemAwareElement iedatainput = taskmi.getLoopDataInputRef(); List<DataInputAssociation> taskInputAssociations = task.getDataInputAssociations(); for (DataInputAssociation dia : taskInputAssociations) { if (taskmi.getLoopDataOutputRef() != null) { ItemAwareElement iedataoutput = taskmi.getLoopDataOutputRef(); List<DataOutputAssociation> taskOutputAssociations = task.getDataOutputAssociations(); for (DataOutputAssociation dout : taskOutputAssociations) { if (taskmi.getInputDataItem() != null && taskmi.getInputDataItem().getItemSubjectRef() != null) { List<DataInput> taskDataInputs = task.getIoSpecification().getDataInputs(); for (DataInput din : taskDataInputs) { if (din != null && din.getItemSubjectRef() != null && taskmi.getInputDataItem() != null && taskmi.getInputDataItem().getItemSubjectRef() != null) { if (din.getItemSubjectRef().getId().equals(taskmi.getInputDataItem().getItemSubjectRef().getId())) { properties.put("multipleinstancedatainput", din.getName()); if (taskmi.getOutputDataItem() != null && taskmi.getOutputDataItem().getItemSubjectRef() != null) { List<DataOutput> taskDataOutputs = task.getIoSpecification().getDataOutputs(); for (DataOutput dout : taskDataOutputs) { if (dout != null && dout.getItemSubjectRef() != null && taskmi.getOutputDataItem() != null && taskmi.getOutputDataItem().getItemSubjectRef() != null) { if (dout.getItemSubjectRef().getId().equals(taskmi.getOutputDataItem().getItemSubjectRef().getId())) { properties.put("multipleinstancedataoutput", dout.getName()); if (taskmi.getCompletionCondition() != null) {
loopCharacteristics.setLoopDataInputRef(miCollectionInputDI); DataInputAssociation miCollectionInputDataInputAssociation = Bpmn2Factory.eINSTANCE.createDataInputAssociation(); miCollectionInputDataInputAssociation.getSourceRef().add(prop); loopCharacteristics.setLoopDataOutputRef(miCollectionOutputDI); DataOutputAssociation miCollectionInputDataOutputAssociation = Bpmn2Factory.eINSTANCE.createDataOutputAssociation(); miCollectionInputDataOutputAssociation.setTargetRef(prop); inputDataItemObj.setId("miDataInputX"); inputDataItemObj.setItemSubjectRef(di.getItemSubjectRef()); loopCharacteristics.setInputDataItem(inputDataItemObj); break; outputDataItemObj.setId("miDataOutputX"); outputDataItemObj.setItemSubjectRef(dout.getItemSubjectRef()); loopCharacteristics.setOutputDataItem(outputDataItemObj); break; FormalExpression expr = Bpmn2Factory.eINSTANCE.createFormalExpression(); expr.setBody(miCompletionCondition); loopCharacteristics.setCompletionCondition(expr); if (miDataInput != null && miDataInput.length() > 0 && ((MultiInstanceLoopCharacteristics) task.getLoopCharacteristics()).getInputDataItem() != null) { DataInputAssociation dias = Bpmn2Factory.eINSTANCE.createDataInputAssociation(); dias.getSourceRef().add(((MultiInstanceLoopCharacteristics) task.getLoopCharacteristics()).getInputDataItem()); List<DataInput> dins = task.getIoSpecification().getDataInputs(); for (DataInput di : dins) { if (miDataOutput != null && miDataOutput.length() > 0 && ((MultiInstanceLoopCharacteristics) task.getLoopCharacteristics()).getOutputDataItem() != null) {
dia.setTargetRef(multiInput); sp.getDataInputAssociations().add(dia); loopCharacteristics.setLoopDataInputRef(multiInput); din.setItemSubjectRef(itemDef); addSubprocessItemDefs(itemDef); loopCharacteristics.setInputDataItem(din); doa.setTargetRef(ie2); sp.getDataOutputAssociations().add(doa); loopCharacteristics.setLoopDataOutputRef(multiOutput); don.setItemSubjectRef(itemDef2); addSubprocessItemDefs(itemDef2); loopCharacteristics.setOutputDataItem(don); FormalExpression expr = Bpmn2Factory.eINSTANCE.createFormalExpression(); expr.setBody(wrapInCDATABlock(completionConditionStr)); loopCharacteristics.setCompletionCondition(expr);
public void setCollectionInput(String collectionInput) { // ignore empty input if (collectionInput == null) { return; } DataInput dataInputElement = createDataInput("IN_COLLECTION"); Property prop = findPropertyById(collectionInput); // check whether this exist or throws miloop.setLoopDataInputRef(dataInputElement); this.inputSet.getDataInputRefs().add(dataInputElement); DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation(); dia.getSourceRef().add(prop); dia.setTargetRef(dataInputElement); process.getDataInputAssociations().add(dia); }
public void setCollectionOutput(String collectionOutput) { // ignore empty input if (collectionOutput == null) { return; } DataOutput dataOutputElement = createDataOutput("OUT_COLLECTION"); Property prop = findPropertyById(collectionOutput); // check whether this exist or throws miloop.setLoopDataOutputRef(dataOutputElement); ItemDefinition item = bpmn2.createItemDefinition(); item.setId(Ids.multiInstanceItemType(process.getId(), "OUT_COLLECTION")); dataOutputElement.setItemSubjectRef(item); this.addItemDefinition(item); this.outputSet.getDataOutputRefs().add(dataOutputElement); DataOutputAssociation doa = Bpmn2Factory.eINSTANCE.createDataOutputAssociation(); doa.getSourceRef().add(dataOutputElement); doa.setTargetRef(prop); process.getDataOutputAssociations().add(doa); }
public void setOutput(String name) { DataOutput dataOutput = createDataOutput(name); miloop.setOutputDataItem(dataOutput); ItemDefinition item = bpmn2.createItemDefinition(); item.setId(Ids.multiInstanceItemType(process.getId(), name)); dataOutput.setItemSubjectRef(item); this.addItemDefinition(item); }
"true"); MultiInstanceLoopCharacteristics taskmi = (MultiInstanceLoopCharacteristics) subProcess.getLoopCharacteristics(); if (taskmi.getLoopDataInputRef() != null) { ItemAwareElement iedatainput = taskmi.getLoopDataInputRef(); List<DataInputAssociation> taskInputAssociations = subProcess.getDataInputAssociations(); for (DataInputAssociation dia : taskInputAssociations) { if (taskmi.getLoopDataOutputRef() != null) { ItemAwareElement iedataoutput = taskmi.getLoopDataOutputRef(); List<DataOutputAssociation> taskOutputAssociations = subProcess.getDataOutputAssociations(); for (DataOutputAssociation dout : taskOutputAssociations) { if (taskmi.getInputDataItem() != null) { List<DataInput> taskDataInputs = subProcess.getIoSpecification().getDataInputs(); if (taskDataInputs != null) { taskmi.getInputDataItem().getId()); break; if (din.getItemSubjectRef() != null && din.getItemSubjectRef().getId().equals(taskmi.getInputDataItem().getItemSubjectRef().getId())) { properties.put(MULTIPLEINSTANCEDATAINPUT, din.getName()); taskmi.getInputDataItem().getId()); if (taskmi.getOutputDataItem() != null) { List<DataOutput> taskDataOutputs = subProcess.getIoSpecification().getDataOutputs(); if (taskDataOutputs != null) {
@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()); } }