/// <summary> /// +----+ /// +--->|end1| /// | +----+ /// | /// +-----+ +----+ /// |start|-->|fork| /// +-----+ +----+ /// | /// | +----+ /// +--->|end2| /// +----+ /// </summary> public virtual void testTwoEnds() { ActivityInstanceVerification verifier = new ActivityInstanceVerification(); PvmProcessDefinition processDefinition = (new ProcessDefinitionBuilder()).createActivity("start").initial().behavior(new Automatic()).executionListener([email protected]_Fields.EVENTNAME_END, verifier).transition("fork").endActivity().createActivity("fork").behavior(new ParallelGateway()).executionListener([email protected]_Fields.EVENTNAME_END, verifier).transition("end1").transition("end2").endActivity().createActivity("end1").behavior(new End()).executionListener([email protected]_Fields.EVENTNAME_END, verifier).endActivity().createActivity("end2").behavior(new End()).executionListener([email protected]_Fields.EVENTNAME_END, verifier).endActivity().buildProcessDefinition(); PvmProcessInstance processInstance = processDefinition.createProcessInstance(); processInstance.start(); verifier.assertNonCompletingActivityInstance("start", 1); verifier.assertNonCompletingActivityInstance("fork", 1); verifier.assertIsCompletingActivityInstance("end1", 1); verifier.assertIsCompletingActivityInstance("end2", 1); }
/// <summary> /// +-------------------------------+ /// | embeddedsubprocess | /// | | /// +-----+ | +-----------+ +---------+ | +---+ /// |start|-->| |startInside|-->|endInside| |-->|end| /// +-----+ | +-----------+ +---------+ | +---+ /// | | /// | | /// +-------------------------------+ /// </summary> public virtual void testSimpleSubProcess() { ActivityInstanceVerification verifier = new ActivityInstanceVerification(); PvmProcessDefinition processDefinition = (new ProcessDefinitionBuilder()).createActivity("start").initial().behavior(new Automatic()).executionListener([email protected]_Fields.EVENTNAME_END, verifier).transition("embeddedsubprocess").endActivity().createActivity("embeddedsubprocess").scope().behavior(new EmbeddedSubProcess()).executionListener([email protected]_Fields.EVENTNAME_END, verifier).createActivity("startInside").behavior(new Automatic()).executionListener([email protected]_Fields.EVENTNAME_END, verifier).transition("endInside").endActivity().createActivity("endInside").behavior(new End()).executionListener([email protected]_Fields.EVENTNAME_END, verifier).endActivity().transition("end").endActivity().createActivity("end").behavior(new End()).executionListener([email protected]_Fields.EVENTNAME_END, verifier).endActivity().buildProcessDefinition(); PvmProcessInstance processInstance = processDefinition.createProcessInstance(); processInstance.start(); verifier.assertNonCompletingActivityInstance("start", 1); verifier.assertNonCompletingActivityInstance("embeddedsubprocess", 1); verifier.assertNonCompletingActivityInstance("startInside", 1); verifier.assertIsCompletingActivityInstance("endInside", 1); verifier.assertIsCompletingActivityInstance("end", 1); }
/// <summary> /// +----------+ /// | userTask | /// | | /// +-----+ | | +------+ /// |start|-->| |--->| end1 | /// +-----+ | +-----+ | /// +-|timer|--+ /// +-----+ /// | +------+ /// +--------->| end2 | /// +------+ /// </summary> public virtual void testBoundaryEvent() { ActivityInstanceVerification verifier = new ActivityInstanceVerification(); PvmProcessDefinition processDefinition = (new ProcessDefinitionBuilder()).createActivity("start").initial().behavior(new Automatic()).executionListener([email protected]_Fields.EVENTNAME_END, verifier).transition("userTask").endActivity().createActivity("userTask").scope().behavior(new EmbeddedSubProcess()).executionListener([email protected]_Fields.EVENTNAME_END, verifier).transition("end1").endActivity().createActivity("timer").behavior(new WaitState()).executionListener([email protected]_Fields.EVENTNAME_END, verifier).attachedTo("userTask", true).transition("end2").endActivity().createActivity("end1").behavior(new End()).executionListener([email protected]_Fields.EVENTNAME_END, verifier).endActivity().createActivity("end2").behavior(new End()).executionListener([email protected]_Fields.EVENTNAME_END, verifier).endActivity().buildProcessDefinition(); PvmProcessInstance processInstance = processDefinition.createProcessInstance(); processInstance.start(); PvmExecution userTaskExecution = processInstance.findExecution("userTask"); ((PvmExecutionImpl)userTaskExecution).executeActivity(processDefinition.findActivity("timer")); PvmExecution timerExecution = processInstance.findExecution("timer"); timerExecution.signal(null, null); verifier.assertNonCompletingActivityInstance("start", 1); verifier.assertNonCompletingActivityInstance("userTask", 1); verifier.assertIsCompletingActivityInstance("end2", 1); }