martinweiler commented on code in PR #6849:
URL: https://github.com/apache/incubator-kie/pull/6849#discussion_r3815796591
##########
kogito-jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java:
##########
@@ -453,36 +453,26 @@ public void testEventBasedSplit4() {
}
@Test
- public void testEventBasedSplit5() throws Exception {
- kruntime =
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-EventBasedSplit5.bpmn2");
-
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1",
new SystemOutWorkItemHandler());
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2",
new SystemOutWorkItemHandler());
- ReceiveTaskHandler receiveTaskHandler = new ReceiveTaskHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Receive
Task", receiveTaskHandler);
+ public void testEventBasedSplit5() {
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app, "Email1", new
SystemOutWorkItemHandler());
+ ProcessTestHelper.registerHandler(app, "Email2", new
SystemOutWorkItemHandler());
+ ProcessTestHelper.registerHandler(app, "Receive Task", new
ReceiveTaskHandler());
+
org.kie.kogito.process.Process<org.jbpm.bpmn2.intermediate.EventBasedSplit5Model>
processDefinition =
+
org.jbpm.bpmn2.intermediate.EventBasedSplit5Process.newProcess(app);
// Yes
- KogitoProcessInstance processInstance =
kruntime.startProcess("EventBasedSplit5");
-
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_ACTIVE);
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1",
new SystemOutWorkItemHandler());
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2",
new SystemOutWorkItemHandler());
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Receive
Task", receiveTaskHandler);
-
- receiveTaskHandler.getWorkItemId().stream().findFirst().ifPresent(id
-> kruntime.getKogitoWorkItemManager().completeWorkItem(id, Map.of("Message",
"YesValue")));
-
- assertProcessInstanceCompleted(processInstance.getStringId(),
kruntime);
-
- receiveTaskHandler.getWorkItemId().forEach(id ->
kruntime.getKogitoWorkItemManager().completeWorkItem(id, Map.of("Message",
"NoValue")));
-
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1",
new SystemOutWorkItemHandler());
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2",
new SystemOutWorkItemHandler());
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Receive
Task", receiveTaskHandler);
+ ProcessInstance<org.jbpm.bpmn2.intermediate.EventBasedSplit5Model>
processInstance =
+
processDefinition.createInstance(processDefinition.createModel());
+ processInstance.start();
+
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
+ ProcessTestHelper.completeWorkItem(processInstance, Map.of("Message",
"YesValue"));
+
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
// No
- processInstance = kruntime.startProcess("EventBasedSplit5");
- receiveTaskHandler.getWorkItemId().stream().findFirst().ifPresent(id
-> kruntime.getKogitoWorkItemManager().completeWorkItem(id, Map.of("Message",
"NoValue")));
-
- assertProcessInstanceCompleted(processInstance.getStringId(),
kruntime);
-
- receiveTaskHandler.getWorkItemId().stream().findFirst().ifPresent(id
-> kruntime.getKogitoWorkItemManager().completeWorkItem(id, Map.of("Message",
"YesValue")));
+ processInstance =
processDefinition.createInstance(processDefinition.createModel());
+ processInstance.start();
+
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
+ ProcessTestHelper.completeWorkItem(processInstance, Map.of("Message",
"NoValue"));
Review Comment:
The ProcessTestHelper.completeWorkItem(..) method finishes the first
workItem. Since we have both the Yes and the No workItems after creating the
process instance, we need to explicitly filter for the No workItem in order to
complete the correct one.
Without it, the test output shows that the process is not executed as
expected:
```
[INFO] Running org.jbpm.bpmn2.StandaloneBPMNProcessTest
Executing work item WorkItem 982b7711-468d-4593-8fcc-37251acfb913
[name=Email1, state=1, processInstanceId=8e3c51ee-c21f-471e-b8db-2815559ce3e1,
parameters{NodeName=Email1, UNIQUE_TASK_ID=_11}]
Executing Yes
x=YesValue
Executing work item WorkItem bbded1d0-0e7c-4088-9a4f-091fbb08940d
[name=Email2, state=1, processInstanceId=8e3c51ee-c21f-471e-b8db-2815559ce3e1,
parameters{NodeName=Email2, UNIQUE_TASK_ID=_7}]
Executing work item WorkItem 46a6c9e2-8923-4fd4-ad4a-0cc17dbaabc6
[name=Email1, state=1, processInstanceId=b54f0efc-c17e-4439-9232-ae95f07d9120,
parameters{NodeName=Email1, UNIQUE_TASK_ID=_11}]
Executing Yes
x=NoValue
Executing work item WorkItem fd05a1a2-52c1-4995-a715-d4fccd00482b
[name=Email2, state=1, processInstanceId=b54f0efc-c17e-4439-9232-ae95f07d9120,
parameters{NodeName=Email2, UNIQUE_TASK_ID=_7}]
```
The `Executing Yes`, `x=NoValue` sequence indicates that the test is wrong
(although it doesn't fail).
I'd suggest to change it to something like this (for both the Yes and the No
calls):
```
- ProcessTestHelper.completeWorkItem(processInstance,
Map.of("Message", "YesValue"));
+ assertThat(processInstance.variables().getX()).isNull();
+ processInstance.workItems().stream()
+ .filter(wi -> "Yes".equals(wi.getName()))
+ .findFirst()
+ .ifPresent(wi ->
processInstance.completeWorkItem(wi.getId(), Map.of("Message", "YesValue")));
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
+
assertThat(processInstance.variables().getX()).isEqualTo("YesValue");
```
--
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]