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