コード例 #1
0
        public virtual void testStartAfterActivityListenerInvocation()
        {
            RecorderExecutionListener.clear();

            ProcessInstance instance = runtimeService.startProcessInstanceByKey("transitionListenerProcess", Variables.createVariables().putValue("listener", new RecorderExecutionListener()));

            Batch modificationBatch = runtimeService.createProcessInstanceModification(instance.Id).startTransition("flow2").executeAsync();

            assertNotNull(modificationBatch);
            executeSeedAndBatchJobs(modificationBatch);

            // transition listener should have been invoked
            IList <RecorderExecutionListener.RecordedEvent> events = RecorderExecutionListener.RecordedEvents;

            assertEquals(1, events.Count);

            RecorderExecutionListener.RecordedEvent @event = events[0];
            assertEquals("flow2", @event.TransitionId);

            RecorderExecutionListener.clear();

            ActivityInstance updatedTree = runtimeService.getActivityInstance(instance.Id);

            assertNotNull(updatedTree);
            assertEquals(instance.Id, updatedTree.ProcessInstanceId);

            assertThat(updatedTree).hasStructure(describeActivityInstanceTree(instance.ProcessDefinitionId).activity("task1").activity("task2").done());

            ExecutionTree executionTree = ExecutionTree.forExecution(instance.Id, processEngine);

            assertThat(executionTree).matches(describeExecutionTree(null).scope().child("task1").concurrent().noScope().up().child("task2").concurrent().noScope().done());

            completeTasksInOrder("task1", "task2", "task2");
            assertProcessEnded(instance.Id);
        }
コード例 #2
0
        public virtual void testListenerInvocation()
        {
            RecorderExecutionListener.clear();

            // when
            ProcessInstance instance = runtimeService.createProcessInstanceByKey("listenerProcess").startBeforeActivity("innerTask").execute();

            // then
            ActivityInstance updatedTree = runtimeService.getActivityInstance(instance.Id);

            assertNotNull(updatedTree);

            assertThat(updatedTree).hasStructure(describeActivityInstanceTree(instance.ProcessDefinitionId).beginScope("subProcess").activity("innerTask").done());

            IList <RecorderExecutionListener.RecordedEvent> events = RecorderExecutionListener.RecordedEvents;

            assertEquals(3, events.Count);

            RecorderExecutionListener.RecordedEvent processStartEvent = events[0];
            assertEquals([email protected]_Fields.EVENTNAME_START, processStartEvent.EventName);
            assertEquals("innerTask", processStartEvent.ActivityId);

            RecorderExecutionListener.RecordedEvent subProcessStartEvent = events[1];
            assertEquals([email protected]_Fields.EVENTNAME_START, subProcessStartEvent.EventName);
            assertEquals("subProcess", subProcessStartEvent.ActivityId);

            RecorderExecutionListener.RecordedEvent innerTaskStartEvent = events[2];
            assertEquals([email protected]_Fields.EVENTNAME_START, innerTaskStartEvent.EventName);
            assertEquals("innerTask", innerTaskStartEvent.ActivityId);
        }