示例#1
0
        ///
        /// <summary>
        ///                       create evt scope --+
        ///                                          |
        ///                                          v
        ///
        ///           +------------------------------+
        ///           | embedded subprocess          |
        /// +-----+   |  +-----------+   +---------+ |   +----+   +---+
        /// |start|-->|  |startInside|-->|endInside| |-->|wait|-->|end|
        /// +-----+   |  +-----------+   +---------+ |   +----+   +---+
        ///           +------------------------------+
        ///
        ///                                                           ^
        ///                                                           |
        ///                                       destroy evt scope --+
        ///
        /// </summary>
        public virtual void testActivityEndDestroysEventScopes()
        {
            PvmProcessDefinition processDefinition = (new ProcessDefinitionBuilder()).createActivity("start").initial().behavior(new Automatic()).transition("embeddedsubprocess").endActivity().createActivity("embeddedsubprocess").scope().behavior(new EventScopeCreatingSubprocess()).createActivity("startInside").behavior(new Automatic()).transition("endInside").endActivity().createActivity("endInside").behavior(new Automatic()).endActivity().transition("wait").endActivity().createActivity("wait").behavior(new WaitState()).transition("end").endActivity().createActivity("end").behavior(new Automatic()).endActivity().buildProcessDefinition();

            PvmProcessInstance processInstance = processDefinition.createProcessInstance();

            processInstance.start();

            bool eventScopeFound             = false;
            IList <ExecutionImpl> executions = ((ExecutionImpl)processInstance).Executions;

            foreach (ExecutionImpl executionImpl in executions)
            {
                if (executionImpl.EventScope)
                {
                    eventScopeFound = true;
                    break;
                }
            }

            assertTrue(eventScopeFound);

            processInstance.signal(null, null);

            assertTrue(processInstance.Ended);
        }