/// <summary> /// +----------------------------+ /// v | /// +-------+ +------+ +-----+ +-----+ +-------+ /// | start |-->| loop |-->| one |-->| two |--> | three | /// +-------+ +------+ +-----+ +-----+ +-------+ /// | /// | +-----+ /// +-->| end | /// +-----+ /// </summary> public virtual void testWhileLoop() { ActivityInstanceVerification verifier = new ActivityInstanceVerification(); TransitionInstanceVerifyer transitionVerifier = new TransitionInstanceVerifyer(); PvmProcessDefinition processDefinition = (new ProcessDefinitionBuilder()).createActivity("start").initial().behavior(new Automatic()).executionListener([email protected]_Fields.EVENTNAME_START, verifier).executionListener([email protected]_Fields.EVENTNAME_END, verifier).startTransition("loop").executionListener([email protected]_Fields.EVENTNAME_TAKE, transitionVerifier).endTransition().endActivity().createActivity("loop").behavior(new While("count", 0, 10)).executionListener([email protected]_Fields.EVENTNAME_START, verifier).executionListener([email protected]_Fields.EVENTNAME_END, verifier).startTransition("one", "more").executionListener([email protected]_Fields.EVENTNAME_TAKE, transitionVerifier).endTransition().startTransition("end", "done").executionListener([email protected]_Fields.EVENTNAME_TAKE, transitionVerifier).endTransition().endActivity().createActivity("one").behavior(new Automatic()).executionListener([email protected]_Fields.EVENTNAME_START, verifier).executionListener([email protected]_Fields.EVENTNAME_END, verifier).transition("two").endActivity().createActivity("two").behavior(new Automatic()).executionListener([email protected]_Fields.EVENTNAME_START, verifier).executionListener([email protected]_Fields.EVENTNAME_END, verifier).transition("three").endActivity().createActivity("three").behavior(new Automatic()).executionListener([email protected]_Fields.EVENTNAME_START, verifier).executionListener([email protected]_Fields.EVENTNAME_END, verifier).transition("loop").endActivity().createActivity("end").behavior(new End()).executionListener([email protected]_Fields.EVENTNAME_START, verifier).executionListener([email protected]_Fields.EVENTNAME_END, verifier).endActivity().buildProcessDefinition(); PvmProcessInstance processInstance = processDefinition.createProcessInstance(); processInstance.start(); assertEquals(new List <string>(), processInstance.findActiveActivityIds()); assertTrue(processInstance.Ended); verifier.assertStartInstanceCount(1, "start"); verifier.assertProcessInstanceParent("start", processInstance); verifier.assertStartInstanceCount(11, "loop"); verifier.assertProcessInstanceParent("loop", processInstance); verifier.assertStartInstanceCount(10, "one"); verifier.assertProcessInstanceParent("one", processInstance); verifier.assertStartInstanceCount(10, "two"); verifier.assertProcessInstanceParent("two", processInstance); verifier.assertStartInstanceCount(10, "three"); verifier.assertProcessInstanceParent("three", processInstance); verifier.assertStartInstanceCount(1, "end"); verifier.assertProcessInstanceParent("end", processInstance); }
public virtual void TestWhileLoop() { var verifier = new ActivityInstanceVerification(); var transitionVerifier = new TransitionInstanceVerifyer(); IPvmProcessDefinition processDefinition = new ProcessDefinitionBuilder().CreateActivity("start") .Initial() .Behavior(new Automatic()) .ExecutionListener(ExecutionListenerFields.EventNameStart, verifier) .ExecutionListener(ExecutionListenerFields.EventNameEnd, verifier) .StartTransition("loop") .ExecutionListener(ExecutionListenerFields.EventNameTake, transitionVerifier) .EndTransition() .EndActivity() .CreateActivity("loop") .Behavior(new While("Count", 0, 10)) .ExecutionListener(ExecutionListenerFields.EventNameStart, verifier) .ExecutionListener(ExecutionListenerFields.EventNameEnd, verifier) .StartTransition("one", "more") .ExecutionListener(ExecutionListenerFields.EventNameTake, transitionVerifier) .EndTransition() .StartTransition("end", "done") .ExecutionListener(ExecutionListenerFields.EventNameTake, transitionVerifier) .EndTransition() .EndActivity() .CreateActivity("one") .Behavior(new Automatic()) .ExecutionListener(ExecutionListenerFields.EventNameStart, verifier) .ExecutionListener(ExecutionListenerFields.EventNameEnd, verifier) .Transition("two") .EndActivity() .CreateActivity("two") .Behavior(new Automatic()) .ExecutionListener(ExecutionListenerFields.EventNameStart, verifier) .ExecutionListener(ExecutionListenerFields.EventNameEnd, verifier) .Transition("three") .EndActivity() .CreateActivity("three") .Behavior(new Automatic()) .ExecutionListener(ExecutionListenerFields.EventNameStart, verifier) .ExecutionListener(ExecutionListenerFields.EventNameEnd, verifier) .Transition("loop") .EndActivity() .CreateActivity("end") .Behavior(new End()) .ExecutionListener(ExecutionListenerFields.EventNameStart, verifier) .ExecutionListener(ExecutionListenerFields.EventNameEnd, verifier) .EndActivity() .BuildProcessDefinition(); IPvmProcessInstance processInstance = processDefinition.CreateProcessInstance(); processInstance.Start(); Assert.AreEqual(new List <string>(), processInstance.FindActiveActivityIds()); Assert.True(processInstance.IsEnded); verifier.AssertStartInstanceCount(1, "start"); verifier.AssertProcessInstanceParent("start", processInstance); verifier.AssertStartInstanceCount(11, "loop"); verifier.AssertProcessInstanceParent("loop", processInstance); verifier.AssertStartInstanceCount(10, "one"); verifier.AssertProcessInstanceParent("one", processInstance); verifier.AssertStartInstanceCount(10, "two"); verifier.AssertProcessInstanceParent("two", processInstance); verifier.AssertStartInstanceCount(10, "three"); verifier.AssertProcessInstanceParent("three", processInstance); verifier.AssertStartInstanceCount(1, "end"); verifier.AssertProcessInstanceParent("end", processInstance); }