/// /// <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); }