public void testCall() { SubProcess activity = new SubProcess() .id("runTests") .subWorkflowSourceId("Run tests") .subWorkflowId(new WorkflowId(workflowId())); activity.setSubWorkflowSourceId("releaseTests"); activity = serialize(activity); assertEquals(new WorkflowId(workflowId()), activity.getSubWorkflowId()); assertEquals("releaseTests", activity.getSubWorkflowSourceId()); }
@Test public void testCall() { SubProcess activity = new SubProcess() .id("runTests") .subWorkflowSourceId("Run tests") .subWorkflowId(new WorkflowId("releaseTests1")); activity.setSubWorkflowSourceId("releaseTests"); print(activity); }
@Test public void testSubProcess() { LocalDateTime now = new LocalDateTime(); ExecutableWorkflow workflow = new ExecutableWorkflow() .activity(new SubProcess() .id("runTests") .inputValue("d", now) .inputValue("s", "string") .inputExpression("v", "version") .subWorkflowSourceId("Run tests") .subWorkflowId(new WorkflowId(getWorkflowIdInternal()))); workflow = serializeWorkflow(workflow); assertNotNull(workflow); SubProcess subProcess = (SubProcess) workflow.getActivities().get(0); assertEquals(new WorkflowId(getWorkflowIdInternal()), subProcess.getSubWorkflowId()); assertEquals("Run tests", subProcess.getSubWorkflowSourceId()); assertEquals(now, subProcess.getSubWorkflowInputs().get("d").getValue()); assertEquals("string", subProcess.getSubWorkflowInputs().get("s").getValue()); assertEquals("version", subProcess.getSubWorkflowInputs().get("v").getExpression()); }
super.parse(activityImpl, subProcess, parser); this.subWorkflowId = subProcess.getSubWorkflowId(); this.subWorkflowSourceId = subProcess.getSubWorkflowSourceId(); Map<String, Binding> inputBindingsApi = subProcess.getSubWorkflowInputs(); if (subWorkflowVariables != null && inputBindingsApi != null) { for (Variable subWorkflowVariable : subWorkflowVariables) {
@Test public void testTwoCallActivitiesInSequence() { ExecutableWorkflow subWorkflow = new ExecutableWorkflow() .activity("auto", new NoneTask()); deploy(subWorkflow); ExecutableWorkflow superWorkflow = new ExecutableWorkflow() .activity("call1", new SubProcess() .subWorkflowId(subWorkflow.getId()) .transitionToNext()) .activity("call2", new SubProcess() .subWorkflowId(subWorkflow.getId())); deploy(superWorkflow); WorkflowInstance superInstance = start(superWorkflow); assertTrue(superInstance.isEnded()); List<WorkflowInstance> workflowInstances = workflowEngine.findWorkflowInstances(new WorkflowInstanceQuery()); for (WorkflowInstance workflowInstance: workflowInstances) { assertTrue(workflowInstance.isEnded()); } assertEquals(3, workflowInstances.size()); }
@Test public void testCallActivityInputValue() { ExecutableWorkflow subWorkflow = new ExecutableWorkflow() .variable("performer", TextType.INSTANCE) .activity("message", msgExpression("performer")); deploy(subWorkflow); ExecutableWorkflow superWorkflow = new ExecutableWorkflow() .activity("call", new SubProcess() .inputValue("performer", "walter") .subWorkflowId(subWorkflow.getId())); deploy(superWorkflow); start(superWorkflow); assertEquals("walter", getMessage(0)); }
@Test public void testCallActivityInputBindingVariable() { ExecutableWorkflow subWorkflow = new ExecutableWorkflow() .variable("performer", TextType.INSTANCE) .activity("subtask", msgExpression("performer")); deploy(subWorkflow); ExecutableWorkflow superWorkflow = new ExecutableWorkflow() .variable("guineapig", TextType.INSTANCE) .activity("call", new SubProcess() .inputExpression("performer", "guineapig") .subWorkflowId(subWorkflow.getId())); deploy(superWorkflow); workflowEngine.start(new TriggerInstance() .workflowId(superWorkflow.getId()) .data("guineapig", "walter") ); assertEquals("walter", getMessage(0)); }
public SubProcess subWorkflowSourceId(String id) { setSubWorkflowSourceId(id); return this; }
@Override public void readBpmn(BpmnReader r) { subWorkflowId = r.readIdAttributeEffektif("subWorkflowId", WorkflowId.class); subWorkflowSourceId(r.readStringAttributeEffektif("subWorkflowSourceId")); super.readBpmn(r); r.startExtensionElements(); // Read sub-workflow inputs. for (XmlElement inputElement : r.readElementsEffektif("subWorkflowInput")) { if (subWorkflowInputs == null) { subWorkflowInputs = new HashMap<>(); } r.startElement(inputElement); String variableId = r.readStringAttributeEffektif("variableId"); List<Binding<Object>> singleBinding = r.readBindings("binding"); if (singleBinding != null && !singleBinding.isEmpty()) { subWorkflowInputs.put(variableId, singleBinding.get(0)); } r.endElement(); } r.endExtensionElements(); }
@Test public void testTwoCallActivitiesInParallel() { ExecutableWorkflow subWorkflow = new ExecutableWorkflow() .activity("auto", new NoneTask()); deploy(subWorkflow); ExecutableWorkflow superWorkflow = new ExecutableWorkflow() .activity("call1", new SubProcess() .subWorkflowId(subWorkflow.getId())) .activity("call2", new SubProcess() .subWorkflowId(subWorkflow.getId())); deploy(superWorkflow); WorkflowInstance superInstance = start(superWorkflow); assertTrue(superInstance.isEnded()); List<WorkflowInstance> workflowInstances = workflowEngine.findWorkflowInstances(new WorkflowInstanceQuery()); for (WorkflowInstance workflowInstance: workflowInstances) { assertTrue(workflowInstance.isEnded()); } assertEquals(3, workflowInstances.size()); }
@Test public void testNestedSubprocesses() { ExecutableWorkflow innerWorkflow = new ExecutableWorkflow() .activity("inner", msgValue("inner")); deploy(innerWorkflow); ExecutableWorkflow intermediateWorkflow = new ExecutableWorkflow() .activity("intermediate before inner", msgValue("intermediate before inner").transitionToNext()) .activity("call-inner", new SubProcess() .subWorkflowId(innerWorkflow.getId()) .transitionToNext()) .activity("intermediate after inner", msgValue("intermediate after inner")); deploy(intermediateWorkflow); ExecutableWorkflow outerWorkflow = new ExecutableWorkflow() .activity("outer before intermediate", msgValue("outer before intermediate").transitionToNext()) .activity("call-intermediate", new SubProcess() .subWorkflowId(intermediateWorkflow.getId()) .transitionToNext()) .activity("outer after intermediate", msgValue("outer after intermediate")); deploy(outerWorkflow); workflowEngine.start(new TriggerInstance() .workflowId(outerWorkflow.getId()) ); List<String> expectedMessages = new ArrayList<>(); expectedMessages.add("outer before intermediate"); expectedMessages.add("intermediate before inner"); expectedMessages.add("inner"); expectedMessages.add("intermediate after inner"); expectedMessages.add("outer after intermediate"); assertEquals(expectedMessages, getMessages()); }
public SubProcess subWorkflowSourceId(String id) { setSubWorkflowSourceId(id); return this; }
@Override public void readBpmn(BpmnReader r) { subWorkflowId = r.readIdAttributeEffektif("subWorkflowId", WorkflowId.class); subWorkflowSourceId(r.readStringAttributeEffektif("subWorkflowSourceId")); super.readBpmn(r); r.startExtensionElements(); // Read sub-workflow inputs. for (XmlElement inputElement : r.readElementsEffektif("subWorkflowInput")) { if (subWorkflowInputs == null) { subWorkflowInputs = new HashMap<>(); } r.startElement(inputElement); String variableId = r.readStringAttributeEffektif("variableId"); List<Binding<Object>> singleBinding = r.readBindings("binding"); if (singleBinding != null && !singleBinding.isEmpty()) { subWorkflowInputs.put(variableId, singleBinding.get(0)); } r.endElement(); } r.endExtensionElements(); }
.activity("call", new SubProcess() .subWorkflowId(subWorkflow.getId()));