public void parse(MultiInstance multiInstance, WorkflowParser parser, ScopeImpl parentImpl) { this.valuesBindings = parser.parseBindings(multiInstance.getValues(), "multiInstance.values"); Variable elementVariable = multiInstance.getVariable(); if (elementVariable!=null) { this.elementVariable = new VariableImpl(); parser.pushContext("elementVariable", elementVariable, null, -1); this.elementVariable.parse(elementVariable, parentImpl, parser); parser.popContext(); } else { parser.addError("Multi instance has no elementVariable"); } } }
public MultiInstance valuesExpression(String expression) { addValueBinding(new Binding().expression(expression)); return this; } protected MultiInstance addValueBinding(Binding valueBinding) {
@Test public void testActivity() { Activity activity = new NoneTask() .id("verifyRequirements") .defaultTransitionId("continue") .multiInstance(new MultiInstance() .valuesExpression("reviewers") .variable("reviewer", TextType.INSTANCE)); activity = serializeActivity(activity); assertEquals("verifyRequirements", activity.getId()); assertEquals("continue", activity.getDefaultTransitionId()); assertNotNull(activity.getMultiInstance()); assertEquals("reviewer", activity.getMultiInstance().getVariable().getId()); assertEquals("reviewers", activity.getMultiInstance().getValues().get(0).getExpression()); }
@Test public void testMultiInstanceBasics() throws Exception { ExecutableWorkflow workflow = new ExecutableWorkflow() .variable("reviewers", new ListType(TextType.INSTANCE)) .activity("Review", msgExpression("reviewer") .multiInstance(new MultiInstance() .valuesExpression("reviewers") .variable("reviewer", TextType.INSTANCE))); deploy(workflow); WorkflowInstance workflowInstance = workflowEngine.start(new TriggerInstance() .workflowId(workflow.getId()) .data("reviewers", Lists.of( "jack", "john", "mary"))); assertTrue(workflowInstance.isEnded()); assertEquals("jack", getMessage(0)); assertEquals("john", getMessage(1)); assertEquals("mary", getMessage(2)); } }
multiInstance = new MultiInstance(); multiInstance.readBpmn(r); r.endElement();
multiInstance.writeBpmn(w);
multiInstance = new MultiInstance(); multiInstance.readBpmn(r); r.endElement();
multiInstance.writeBpmn(w);
public MultiInstance valuesExpression(String expression) { addValueBinding(new Binding().expression(expression)); return this; } protected MultiInstance addValueBinding(Binding valueBinding) {