Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }