public virtual void TestWaitStateScope() { IPvmProcessDefinition processDefinition = new ProcessDefinitionBuilder().CreateActivity("start") .Initial() .Behavior(new Automatic()) .Transition("scopedWait") .EndActivity() .CreateActivity("scopedWait") .Scope() .Behavior(new WaitState()) .Transition("end") .EndActivity() .CreateActivity("end") .Behavior(new End()) .EndActivity() .BuildProcessDefinition(); IPvmProcessInstance processInstance = processDefinition.CreateProcessInstance(); processInstance.Start(); IPvmExecution execution = processInstance.FindExecution("scopedWait"); Assert.NotNull(execution); execution.Signal(null, null); Assert.AreEqual(new List <string>(), processInstance.FindActiveActivityIds()); Assert.True(processInstance.IsEnded); }
public virtual void TestStartInScope() { IPvmProcessDefinition processDefinition = new ProcessDefinitionBuilder().CreateActivity("start") .Initial() .Behavior(new Automatic()) .Transition("embeddedsubprocess") .EndActivity() .CreateActivity("embeddedsubprocess") .Scope() .Behavior(new EmbeddedSubProcess()) .CreateActivity("startInside") .Behavior(new Automatic()) .Transition("endInside") .EndActivity() .CreateActivity("endInside") .Behavior(new End()) .EndActivity() .Transition("end") .EndActivity() .CreateActivity("end") .Behavior(new WaitState()) .EndActivity() .BuildProcessDefinition(); IPvmProcessInstance processInstance = ((ProcessDefinitionImpl)processDefinition).CreateProcessInstanceForInitial( (ActivityImpl)processDefinition.FindActivity("startInside")); processInstance.Start(); IList <string> expectedActiveActivityIds = new List <string>(); expectedActiveActivityIds.Add("end"); Assert.AreEqual(expectedActiveActivityIds, processInstance.FindActiveActivityIds()); }
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); }