pibizza commented on code in PR #3639:
URL: 
https://github.com/apache/incubator-kie-kogito-runtimes/pull/3639#discussion_r1760731090


##########
jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/IntermediateEventTest.java:
##########
@@ -560,183 +650,230 @@ public void testEventBasedSplit5() throws Exception {
     }
 
     @Test
-    public void testEventBasedSplitWithSubprocess() throws Exception {
-        kruntime = createKogitoProcessRuntime(
-                
"org/jbpm/bpmn2/intermediate/BPMN2-ExclusiveEventBasedGatewayInSubprocess.bpmn2");
-
+    public void testEventBasedSplitWithSubprocess() {
+        Application app = ProcessTestHelper.newApplication();
+        
org.kie.kogito.process.Process<ExclusiveEventBasedGatewayInSubprocessModel> 
processDefinition =
+                ExclusiveEventBasedGatewayInSubprocessProcess.newProcess(app);
+        ExclusiveEventBasedGatewayInSubprocessModel model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<ExclusiveEventBasedGatewayInSubprocessModel>
 instance =
+                processDefinition.createInstance(model);
         // Stop
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("ExclusiveEventBasedGatewayInSubprocess");
-        assertProcessInstanceActive(processInstance);
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+        instance.send(Sig.of("StopSignal", ""));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+        // Continue and Stop
+        instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+        instance.send(Sig.of("ContinueSignal", ""));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+        instance.send(Sig.of("StopSignal", ""));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+    }
 
-        kruntime.signalEvent("StopSignal", "", processInstance.getStringId());
-        assertProcessInstanceFinished(processInstance, kruntime);
+    @Test
+    public void testEventSubprocessSignal() {
+        String[] nodes = { "start", "User Task 1", "end", "Sub Process 1", 
"start-sub", "sub-script", "end-sub" };
+        Application app = ProcessTestHelper.newApplication();
 
-        // Continue and Stop
-        processInstance = 
kruntime.startProcess("ExclusiveEventBasedGatewayInSubprocess");
-        assertProcessInstanceActive(processInstance);
+        TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
+        ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+        List<String> executedNodes = new ArrayList<>();
 
-        kruntime.signalEvent("ContinueSignal", "", 
processInstance.getStringId());
+        KogitoProcessEventListener listener = new 
DefaultKogitoProcessEventListener() {
 
-        assertProcessInstanceActive(processInstance);
+            @Override
+            public void afterNodeLeft(ProcessNodeLeftEvent event) {
+                if 
(event.getNodeInstance().getNodeName().equals("sub-script")) {
+                    executedNodes.add(((KogitoNodeInstance) 
event.getNodeInstance()).getStringId());
+                }
+            }
+        };
 
-        kruntime.signalEvent("StopSignal", "", processInstance.getStringId());
-        assertProcessInstanceFinished(processInstance, kruntime);
-    }
+        EventTrackerProcessListener eventTrackerProcessListener = new 
EventTrackerProcessListener();
 
-    @Test
-    public void testEventSubprocessSignal() throws Exception {
-        String[] nodes = { "start", "User Task 1", "end", "Sub Process 1", 
"start-sub", "sub-script", "end-sub" };
-        
runTestEventSubprocessSignal("org/jbpm/bpmn2/intermediate/BPMN2-EventSubprocessSignal.bpmn2",
-                "EventSubprocessSignal", nodes);
+        ProcessTestHelper.registerProcessEventListener(app, listener);
+        ProcessTestHelper.registerProcessEventListener(app, 
eventTrackerProcessListener);
+
+        org.kie.kogito.process.Process<EventSubprocessSignalModel> 
processDefinition = EventSubprocessSignalProcess.newProcess(app);
+        EventSubprocessSignalModel model = processDefinition.createModel();
+        org.kie.kogito.process.ProcessInstance<EventSubprocessSignalModel> 
instance = processDefinition.createInstance(model);
+
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+
+        Set<EventDescription<?>> eventDescriptions = instance.events();
+        assertThat(eventDescriptions).hasSize(2) // Adjusted to expect two 
events
+                .extracting(EventDescription::getEvent)
+                .contains("MySignal", "workItemCompleted");
+        
assertThat(eventDescriptions).extracting(EventDescription::getEventType)
+                .contains("signal", "workItem");
+        
assertThat(eventDescriptions).extracting(EventDescription::getProcessInstanceId)
+                .contains(instance.id());
+
+        for (int i = 0; i < 4; i++) {
+            instance.send(Sig.of("MySignal"));
+            
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+        }
+
+        KogitoWorkItem workItem = workItemHandler.getWorkItem();
+        assertThat(workItem).isNotNull();
+        instance.completeWorkItem(workItem.getStringId(), null);
+
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+        
assertThatIterable(eventTrackerProcessListener.tracked().stream().map(a -> 
a.getNodeInstance().getNodeName()).toList())
+                .contains(nodes);
+        assertThat(executedNodes).hasSize(4);
     }
 
     @Test
-    public void testEventSubprocessSignalNested() throws Exception {
-        String[] nodes = { "Start", "Sub Process", "Sub Start", "Sub Sub 
Process", "Sub Sub Start", "Sub Sub User Task",
-                "Sub Sub Sub Process", "start-sub", "sub-script", "end-sub", 
"Sub Sub End", "Sub End", "End" };
-        
runTestEventSubprocessSignal("org/jbpm/bpmn2/intermediate/BPMN2-EventSubprocessSignalNested.bpmn2",
-                "EventSubprocessSignalNested", nodes);
-    }
+    public void testEventSubprocessSignalNested() {
+        String[] nodes = { "Start", "Sub Process", "Sub Start", "Sub Sub 
Process", "Sub Sub Start", "Sub Sub User Task", "Sub Sub Sub Process", 
"start-sub", "sub-script", "end-sub", "Sub Sub End",
+                "Sub End", "End" };
+        Application app = ProcessTestHelper.newApplication();
 
-    public void runTestEventSubprocessSignal(String processFile, String[] 
completedNodes) throws Exception {
-        runTestEventSubprocessSignal(processFile, processFile, completedNodes);
-    }
+        TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
+        ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+        List<String> executedNodes = new ArrayList<>();
 
-    public void runTestEventSubprocessSignal(String processFile, String 
processId, String[] completedNodes)
-            throws Exception {
-        kruntime = createKogitoProcessRuntime(processFile);
-        final List<String> executednodes = new ArrayList<>();
         KogitoProcessEventListener listener = new 
DefaultKogitoProcessEventListener() {
 
             @Override
             public void afterNodeLeft(ProcessNodeLeftEvent event) {
                 if 
(event.getNodeInstance().getNodeName().equals("sub-script")) {
-                    executednodes.add(((KogitoNodeInstance) 
event.getNodeInstance()).getStringId());
+                    executedNodes.add(((KogitoNodeInstance) 
event.getNodeInstance()).getStringId());
                 }
             }
-
         };
 
-        kruntime.getProcessEventManager().addEventListener(listener);
-        TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", workItemHandler);
-        KogitoProcessInstance processInstance = 
kruntime.startProcess(processId);
-        assertProcessInstanceActive(processInstance);
-        kruntime.getProcessEventManager().addEventListener(listener);
+        EventTrackerProcessListener eventTrackerProcessListener = new 
EventTrackerProcessListener();
 
-        Set<EventDescription<?>> eventDescriptions = 
processInstance.getEventDescriptions();
-        
assertThat(eventDescriptions).hasSize(2).extracting("event").contains("MySignal",
 "workItemCompleted");
-        
assertThat(eventDescriptions).extracting("eventType").contains("signal", 
"workItem");
-        
assertThat(eventDescriptions).extracting("processInstanceId").contains(processInstance.getStringId());
-        kruntime.signalEvent("MySignal", null, processInstance.getStringId());
-        assertProcessInstanceActive(processInstance);
+        ProcessTestHelper.registerProcessEventListener(app, listener);
+        ProcessTestHelper.registerProcessEventListener(app, 
eventTrackerProcessListener);
 
-        kruntime.signalEvent("MySignal", null);
-        assertProcessInstanceActive(processInstance);
+        org.kie.kogito.process.Process<EventSubprocessSignalNestedModel> 
processDefinition = EventSubprocessSignalNestedProcess.newProcess(app);
+        EventSubprocessSignalNestedModel model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<EventSubprocessSignalNestedModel> 
instance = processDefinition.createInstance(model);
+
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+
+        Set<EventDescription<?>> eventDescriptions = instance.events();
+        assertThat(eventDescriptions).hasSize(2) // Adjusted to expect two 
events
+                .extracting(EventDescription::getEvent)
+                .contains("MySignal", "workItemCompleted");
+        
assertThat(eventDescriptions).extracting(EventDescription::getEventType)
+                .contains("signal", "workItem");
+        
assertThat(eventDescriptions).extracting(EventDescription::getProcessInstanceId)
+                .contains(instance.id());
+
+        for (int i = 0; i < 4; i++) {
+            instance.send(Sig.of("MySignal"));
+            
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+        }
 
-        kruntime.signalEvent("MySignal", null);
-        assertProcessInstanceActive(processInstance);
-        kruntime.signalEvent("MySignal", null);
-        assertProcessInstanceActive(processInstance);
         KogitoWorkItem workItem = workItemHandler.getWorkItem();
         assertThat(workItem).isNotNull();
+        instance.completeWorkItem(workItem.getStringId(), null);
 
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(workItem.getStringId(), 
null);
-        assertProcessInstanceFinished(processInstance, kruntime);
-        assertNodeTriggered(processInstance.getStringId(), completedNodes);
-        assertThat(executednodes).hasSize(4);
-
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+        
assertThatIterable(eventTrackerProcessListener.tracked().stream().map(a -> 
a.getNodeInstance().getNodeName()).toList())
+                .contains(nodes);
+        assertThat(executedNodes).hasSize(4);
     }
 
     @Test
-    public void testEventSubprocessSignalWithStateNode() throws Exception {
-        kruntime = createKogitoProcessRuntime(
-                
"org/jbpm/bpmn2/intermediate/BPMN2-EventSubprocessSignalWithStateNode.bpmn2");
-        final List<String> executednodes = new ArrayList<>();
+    public void testEventSubprocessSignalWithStateNode() {
+        String[] nodes = { "start", "User Task 1", "end", "Sub Process 1", 
"start-sub", "User Task 2", "end-sub" };
+        Application app = ProcessTestHelper.newApplication();
+        TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
+        ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+        List<String> executedNodes = new ArrayList<>();
         KogitoProcessEventListener listener = new 
DefaultKogitoProcessEventListener() {
-
             @Override
             public void afterNodeLeft(ProcessNodeLeftEvent event) {
                 if (event.getNodeInstance().getNodeName().equals("User Task 
2")) {
-                    executednodes.add(((KogitoNodeInstance) 
event.getNodeInstance()).getStringId());
+                    executedNodes.add(((KogitoNodeInstance) 
event.getNodeInstance()).getStringId());
                 }
             }
-
         };
+        EventTrackerProcessListener eventTrackerProcessListener = new 
EventTrackerProcessListener();
+        ProcessTestHelper.registerProcessEventListener(app, listener);
+        ProcessTestHelper.registerProcessEventListener(app, 
eventTrackerProcessListener);
 
-        kruntime.getProcessEventManager().addEventListener(listener);
-        TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", workItemHandler);
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("EventSubprocessSignalWithStateNode");
-        assertProcessInstanceActive(processInstance);
-        kruntime.getProcessEventManager().addEventListener(listener);
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", workItemHandler);
+        
org.kie.kogito.process.Process<EventSubprocessSignalWithStateNodeModel> 
processDefinition = EventSubprocessSignalWithStateNodeProcess.newProcess(app);
+        EventSubprocessSignalWithStateNodeModel model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<EventSubprocessSignalWithStateNodeModel> 
instance = processDefinition.createInstance(model);
+        instance.start();
 
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
         KogitoWorkItem workItemTopProcess = workItemHandler.getWorkItem();
+        instance.send(Sig.of("MySignal"));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
 
-        kruntime.signalEvent("MySignal", null, processInstance.getStringId());
-        assertProcessInstanceActive(processInstance);
         KogitoWorkItem workItem = workItemHandler.getWorkItem();
         assertThat(workItem).isNotNull();
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(workItem.getStringId(), 
null);
+        instance.completeWorkItem(workItem.getStringId(), null);
+        instance.send(Sig.of("MySignal"));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
 
-        kruntime.signalEvent("MySignal", null);
-        assertProcessInstanceActive(processInstance);
         workItem = workItemHandler.getWorkItem();
         assertThat(workItem).isNotNull();
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(workItem.getStringId(), 
null);
+        instance.completeWorkItem(workItem.getStringId(), null);
+        instance.send(Sig.of("MySignal"));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
 
-        kruntime.signalEvent("MySignal", null);
-        assertProcessInstanceActive(processInstance);
         workItem = workItemHandler.getWorkItem();
         assertThat(workItem).isNotNull();
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(workItem.getStringId(), 
null);
+        instance.completeWorkItem(workItem.getStringId(), null);
+        instance.send(Sig.of("MySignal"));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
 
-        kruntime.signalEvent("MySignal", null);
-        assertProcessInstanceActive(processInstance);
         workItem = workItemHandler.getWorkItem();
         assertThat(workItem).isNotNull();
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(workItem.getStringId(), 
null);
+        instance.completeWorkItem(workItem.getStringId(), null);
 
         assertThat(workItemTopProcess).isNotNull();
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(workItemTopProcess.getStringId(),
 null);
-        assertProcessInstanceFinished(processInstance, kruntime);
-        assertNodeTriggered(processInstance.getStringId(), "start", "User Task 
1", "end", "Sub Process 1", "start-sub",
-                "User Task 2", "end-sub");
-        assertThat(executednodes).hasSize(4);
+        instance.completeWorkItem(workItemTopProcess.getStringId(), null);
 
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+        
assertThatIterable(eventTrackerProcessListener.tracked().stream().map(event -> 
event.getNodeInstance().getNodeName()).toList())
+                .contains(nodes);
+        assertThat(executedNodes).hasSize(4);
     }
 
     @Test
-    public void testEventSubprocessSignalInterrupting() throws Exception {
-        kruntime = createKogitoProcessRuntime(
-                
"org/jbpm/bpmn2/intermediate/BPMN2-EventSubprocessSignalInterrupting.bpmn2");
-        final List<String> executednodes = new ArrayList<>();
+    public void testEventSubprocessSignalInterrupting() {
+        Application app = ProcessTestHelper.newApplication();
+        TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
+        ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+        List<String> executedNodes = new ArrayList<>();
         KogitoProcessEventListener listener = new 
DefaultKogitoProcessEventListener() {
-
             @Override
             public void afterNodeLeft(ProcessNodeLeftEvent event) {
                 if (event.getNodeInstance().getNodeName().equals("Script Task 
1")) {
-                    executednodes.add(((KogitoNodeInstance) 
event.getNodeInstance()).getStringId());
+                    executedNodes.add(((KogitoNodeInstance) 
event.getNodeInstance()).getStringId());
                 }
             }
-
         };
-        kruntime.getProcessEventManager().addEventListener(listener);
+        EventTrackerProcessListener tracker = new 
EventTrackerProcessListener();
+        ProcessTestHelper.registerProcessEventListener(app, listener);
+        ProcessTestHelper.registerProcessEventListener(app, tracker);
 
-        TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", workItemHandler);
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("EventSubprocessSignalInterrupting");
-        assertProcessInstanceActive(processInstance);
-        kruntime.getProcessEventManager().addEventListener(listener);
+        org.kie.kogito.process.Process<EventSubprocessSignalInterruptingModel> 
processDefinition = EventSubprocessSignalInterruptingProcess.newProcess(app);
+        EventSubprocessSignalInterruptingModel model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<EventSubprocessSignalInterruptingModel> 
instance = processDefinition.createInstance(model);
+        instance.start();
 
-        kruntime.signalEvent("MySignal", null, processInstance.getStringId());
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
 
-        assertProcessInstanceFinished(processInstance, kruntime);
-        assertNodeTriggered(processInstance.getStringId(), "start", "User Task 
1", "Sub Process 1", "start-sub",
-                "Script Task 1", "end-sub");
-        assertThat(executednodes).hasSize(1);
+        instance.send(Sig.of("MySignal"));
 
+        assertThat(instance.status()).isEqualTo(ProcessInstance.STATE_ABORTED);
+        assertThat(executedNodes).hasSize(1);
+        List<String> trackedNodes = tracker.tracked().stream().map(e -> 
e.getNodeInstance().getNodeName()).toList();
+        assertThatIterable(trackedNodes).contains("start", "User Task 1", "Sub 
Process 1", "start-sub", "Script Task 1", "end-sub");

Review Comment:
   see above



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to