pibizza commented on code in PR #3639:
URL:
https://github.com/apache/incubator-kie-kogito-runtimes/pull/3639#discussion_r1760730338
##########
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())
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]