This is an automated email from the ASF dual-hosted git repository.
egonzalez pushed a commit to branch main
in repository
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git
The following commit(s) were added to refs/heads/main by this push:
new 7041f762ef [incubator-kie-issues-1131] v7 migration to code generation
(#3593)
7041f762ef is described below
commit 7041f762ef94ab8411eac913f2913a8921eadd5d
Author: Abhiram Gundala <[email protected]>
AuthorDate: Tue Aug 13 02:30:20 2024 -0400
[incubator-kie-issues-1131] v7 migration to code generation (#3593)
---
.../test/java/org/jbpm/bpmn2/CompensationTest.java | 226 ++++++++++++---------
1 file changed, 125 insertions(+), 101 deletions(-)
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/CompensationTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/CompensationTest.java
index e379fd3166..ad6d909570 100755
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/CompensationTest.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/CompensationTest.java
@@ -23,19 +23,38 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.assertj.core.api.Assertions;
+import org.jbpm.bpmn2.compensation.BookResourceProcess;
+import org.jbpm.bpmn2.compensation.BookingModel;
+import org.jbpm.bpmn2.compensation.BookingProcess;
+import org.jbpm.bpmn2.compensation.CancelResourceProcess;
+import org.jbpm.bpmn2.compensation.IntermediateThrowEventModel;
+import org.jbpm.bpmn2.compensation.IntermediateThrowEventProcess;
+import
org.jbpm.bpmn2.compensation.ParallelOrderedCompensationIntermediateThrowEventModel;
+import
org.jbpm.bpmn2.compensation.ParallelOrderedCompensationIntermediateThrowEventProcess;
+import org.jbpm.bpmn2.compensation.ThrowSpecificForSubProcessModel;
+import org.jbpm.bpmn2.compensation.ThrowSpecificForSubProcessProcess;
+import org.jbpm.bpmn2.compensation.UserTaskBeforeAssociatedActivityModel;
+import org.jbpm.bpmn2.compensation.UserTaskBeforeAssociatedActivityProcess;
+import org.jbpm.bpmn2.compensation.UserTaskCompensationModel;
+import org.jbpm.bpmn2.compensation.UserTaskCompensationProcess;
import org.jbpm.bpmn2.objects.TestWorkItemHandler;
import org.jbpm.process.core.context.exception.CompensationScope;
import org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler;
+import org.jbpm.test.utils.ProcessTestHelper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.kie.api.event.process.ProcessNodeLeftEvent;
import org.kie.api.event.process.ProcessNodeTriggeredEvent;
+import org.kie.kogito.Application;
import org.kie.kogito.internal.process.event.DefaultKogitoProcessEventListener;
import org.kie.kogito.internal.process.event.KogitoProcessEventListener;
import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
import org.kie.kogito.internal.process.runtime.KogitoWorkItem;
+import org.kie.kogito.process.ProcessInstance;
+import org.kie.kogito.process.impl.Sig;
+
+import static org.assertj.core.api.Assertions.assertThat;
public class CompensationTest extends JbpmBpmn2TestCase {
@@ -73,38 +92,39 @@ public class CompensationTest extends JbpmBpmn2TestCase {
*/
@Test
- public void compensationViaIntermediateThrowEventProcess() throws
Exception {
- kruntime =
createKogitoProcessRuntime("org/jbpm/bpmn2/compensation/BPMN2-IntermediateThrowEvent.bpmn2");
+ public void compensationViaIntermediateThrowEventProcess() {
+ Application app = ProcessTestHelper.newApplication();
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task", workItemHandler);
- Map<String, Object> params = new HashMap<>();
- params.put("x", "0");
- KogitoProcessInstance processInstance =
kruntime.startProcess("IntermediateThrowEvent", params);
+ ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+ org.kie.kogito.process.Process<IntermediateThrowEventModel> process =
IntermediateThrowEventProcess.newProcess(app);
+ IntermediateThrowEventModel model = process.createModel();
+ model.setX("0");
+ ProcessInstance<IntermediateThrowEventModel> processInstance =
process.createInstance(model);
+ processInstance.start();
-
kruntime.getKogitoWorkItemManager().completeWorkItem(workItemHandler.getWorkItem().getStringId(),
null);
+
processInstance.completeWorkItem(workItemHandler.getWorkItem().getStringId(),
null);
// compensation activity (assoc. with script task) signaled *after*
script task
- assertProcessInstanceCompleted(processInstance.getStringId(),
kruntime);
- assertProcessVarValue(processInstance, "x", "1");
+
assertThat(processInstance.status()).isEqualTo(org.jbpm.process.instance.ProcessInstance.STATE_COMPLETED);
+ assertThat(processInstance.variables().getX()).isEqualTo("1");
}
@Test
- public void compensationTwiceViaSignal() throws Exception {
- kruntime =
createKogitoProcessRuntime("org/jbpm/bpmn2/compensation/BPMN2-IntermediateThrowEvent.bpmn2");
+ public void compensationTwiceViaSignal() {
+ Application app = ProcessTestHelper.newApplication();
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task", workItemHandler);
- Map<String, Object> params = new HashMap<>();
- params.put("x", "0");
- String processId = "IntermediateThrowEvent";
- KogitoProcessInstance processInstance =
kruntime.startProcess(processId, params);
-
- // twice
- kruntime.signalEvent("Compensation",
CompensationScope.IMPLICIT_COMPENSATION_PREFIX + processId,
processInstance.getStringId());
-
kruntime.getKogitoWorkItemManager().completeWorkItem(workItemHandler.getWorkItem().getStringId(),
null);
-
- // compensation activity (assoc. with script task) signaled *after*
script task
- assertProcessInstanceCompleted(processInstance.getStringId(),
kruntime);
- assertProcessVarValue(processInstance, "x", "2");
+ ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+ org.kie.kogito.process.Process<IntermediateThrowEventModel> process =
IntermediateThrowEventProcess.newProcess(app);
+ IntermediateThrowEventModel model = process.createModel();
+ model.setX("0");
+ ProcessInstance<IntermediateThrowEventModel> processInstance =
process.createInstance(model);
+ processInstance.start();
+
+ processInstance.send(Sig.of("Compensation",
CompensationScope.IMPLICIT_COMPENSATION_PREFIX + "IntermediateThrowEvent"));
+
processInstance.completeWorkItem(workItemHandler.getWorkItem().getStringId(),
null);
+
+
assertThat(processInstance.status()).isEqualTo(org.jbpm.process.instance.ProcessInstance.STATE_COMPLETED);
+ assertThat(processInstance.variables().getX()).isEqualTo("2");
}
@Test
@@ -122,60 +142,55 @@ public class CompensationTest extends JbpmBpmn2TestCase {
}
@Test
- public void compensationOnlyAfterAssociatedActivityHasCompleted() throws
Exception {
- kruntime =
createKogitoProcessRuntime("org/jbpm/bpmn2/compensation/BPMN2-UserTaskBeforeAssociatedActivity.bpmn2");
-
kruntime.getProcessEventManager().addEventListener(LOGGING_EVENT_LISTENER);
+ public void compensationOnlyAfterAssociatedActivityHasCompleted() {
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerProcessEventListener(app,
LOGGING_EVENT_LISTENER);
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task", workItemHandler);
- Map<String, Object> params = new HashMap<>();
- params.put("x", "0");
- KogitoProcessInstance processInstance =
kruntime.startProcess("UserTaskBeforeAssociatedActivity", params);
-
- // should NOT cause compensation since compensated activity has not
yet completed (or started)!
- kruntime.signalEvent("Compensation", "_3",
processInstance.getStringId());
-
- // user task -> script task (associated with compensation) -->
intermeidate throw compensation event
-
kruntime.getKogitoWorkItemManager().completeWorkItem(workItemHandler.getWorkItem().getStringId(),
null);
- // compensation activity (assoc. with script task) signaled *after*
to-compensate script task
- assertProcessInstanceCompleted(processInstance.getStringId(),
kruntime);
- assertProcessVarValue(processInstance, "x", "1");
+ ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+ org.kie.kogito.process.Process<UserTaskBeforeAssociatedActivityModel>
process = UserTaskBeforeAssociatedActivityProcess.newProcess(app);
+ UserTaskBeforeAssociatedActivityModel model = process.createModel();
+ model.setX("0");
+ ProcessInstance<UserTaskBeforeAssociatedActivityModel> processInstance
= process.createInstance(model);
+ processInstance.start();
+
+ processInstance.send(Sig.of("Compensation", "_3"));
+
+
processInstance.completeWorkItem(workItemHandler.getWorkItem().getStringId(),
null);
+
assertThat(processInstance.status()).isEqualTo(org.jbpm.process.instance.ProcessInstance.STATE_COMPLETED);
+ assertThat(processInstance.variables().getX()).isEqualTo("1");
}
@Test
- public void orderedCompensation() throws Exception {
- kruntime =
createKogitoProcessRuntime("org/jbpm/bpmn2/compensation/BPMN2-ParallelOrderedCompensationIntermediateThrowEvent.bpmn2");
+ public void orderedCompensation() {
+ Application app = ProcessTestHelper.newApplication();
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task", workItemHandler);
- Map<String, Object> params = new HashMap<>();
- params.put("x", "");
- KogitoProcessInstance processInstance =
kruntime.startProcess("ParallelOrderedCompensationIntermediateThrowEvent",
params);
+ ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+
org.kie.kogito.process.Process<ParallelOrderedCompensationIntermediateThrowEventModel>
process =
ParallelOrderedCompensationIntermediateThrowEventProcess.newProcess(app);
+ ParallelOrderedCompensationIntermediateThrowEventModel model =
process.createModel();
+ model.setX("");
+
ProcessInstance<ParallelOrderedCompensationIntermediateThrowEventModel>
processInstance = process.createInstance(model);
+ processInstance.start();
+
List<KogitoWorkItem> workItems = workItemHandler.getWorkItems();
- List<String> workItemIds = new ArrayList<>();
- for (KogitoWorkItem workItem : workItems) {
- if ("Thr".equals(workItem.getParameter("NodeName"))) {
- workItemIds.add(workItem.getStringId());
- }
- }
- for (KogitoWorkItem workItem : workItems) {
- if ("Two".equals(workItem.getParameter("NodeName"))) {
- workItemIds.add(workItem.getStringId());
- }
- }
- for (KogitoWorkItem workItem : workItems) {
- if ("One".equals(workItem.getParameter("NodeName"))) {
- workItemIds.add(workItem.getStringId());
- }
- }
- for (String id : workItemIds) {
- kruntime.getKogitoWorkItemManager().completeWorkItem(id, null);
- }
+ final List<String> workItemIds = new ArrayList<>();
+
+ workItems.stream().filter(workItem ->
"Thr".equals(workItem.getParameter("NodeName")))
+ .forEach(workItem -> workItemIds.add(workItem.getStringId()));
+
+ workItems.stream().filter(workItem ->
"Two".equals(workItem.getParameter("NodeName")))
+ .forEach(workItem -> workItemIds.add(workItem.getStringId()));
+
+ workItems.stream().filter(workItem ->
"One".equals(workItem.getParameter("NodeName")))
+ .forEach(workItem -> workItemIds.add(workItem.getStringId()));
+
+ workItemIds.forEach(id -> processInstance.completeWorkItem(id, null));
// user task -> script task (associated with compensation) -->
intermeidate throw compensation event
- String xVal = getProcessVarValue(processInstance, "x");
+ String xVal = processInstance.variables().getX();
// Compensation happens in the *REVERSE* order of completion
// Ex: if the order is 3, 17, 282, then compensation should happen in
the order of 282, 17, 3
// Compensation did not fire in the same order as the associated
activities completed.
- Assertions.assertThat(xVal).isEqualTo("_171:_131:_141:_151:");
+ assertThat(xVal).isEqualTo("_171:_131:_141:_151:");
}
@Test
@@ -199,62 +214,71 @@ public class CompensationTest extends JbpmBpmn2TestCase {
}
@Test
- public void specificCompensationOfASubProcess() throws Exception {
- kruntime =
createKogitoProcessRuntime("org/jbpm/bpmn2/compensation/BPMN2-ThrowSpecificForSubProcess.bpmn2");
+ public void specificCompensationOfASubProcess() {
+ Application app = ProcessTestHelper.newApplication();
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task", workItemHandler);
- Map<String, Object> params = new HashMap<>();
- params.put("x", 1);
- KogitoProcessInstance processInstance =
kruntime.startProcess("ThrowSpecificForSubProcess", params);
+ ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+ org.kie.kogito.process.Process<ThrowSpecificForSubProcessModel>
process = ThrowSpecificForSubProcessProcess.newProcess(app);
+ ThrowSpecificForSubProcessModel model = process.createModel();
+ model.setX(1);
+ ProcessInstance<ThrowSpecificForSubProcessModel> processInstance =
process.createInstance(model);
+ processInstance.start();
// compensation activity (assoc. with script task) signaled *after*
to-compensate script task
- assertProcessInstanceCompleted(processInstance.getStringId(),
kruntime);
+
assertThat(processInstance.status()).isEqualTo(org.jbpm.process.instance.ProcessInstance.STATE_COMPLETED);
- assertProcessVarValue(processInstance, "x", null);
+ assertThat(processInstance.variables().getX()).isNull();
}
@Test
@Disabled
- public void compensationViaCancellation() throws Exception {
- kruntime =
createKogitoProcessRuntime("org/jbpm/bpmn2/compensation/BPMN2-IntermediateThrowEvent.bpmn2");
+ public void compensationViaCancellation() {
+ Application app = ProcessTestHelper.newApplication();
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task", workItemHandler);
- Map<String, Object> params = new HashMap<>();
- params.put("x", "0");
- KogitoProcessInstance processInstance =
kruntime.startProcess("IntermediateThrowEvent", params);
+ ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+ org.kie.kogito.process.Process<IntermediateThrowEventModel> process =
IntermediateThrowEventProcess.newProcess(app);
+ IntermediateThrowEventModel model = process.createModel();
+ model.setX("0");
+ ProcessInstance<IntermediateThrowEventModel> processInstance =
process.createInstance(model);
+ processInstance.start();
- kruntime.signalEvent("Cancel", null, processInstance.getStringId());
-
kruntime.getKogitoWorkItemManager().completeWorkItem(workItemHandler.getWorkItem().getStringId(),
null);
+ processInstance.send(Sig.of("Cancel", null));
+
processInstance.completeWorkItem(workItemHandler.getWorkItem().getStringId(),
null);
// compensation activity (assoc. with script task) signaled *after*
script task
- assertProcessInstanceCompleted(processInstance.getStringId(),
kruntime);
- assertProcessVarValue(processInstance, "x", "1");
+
assertThat(processInstance.status()).isEqualTo(org.jbpm.process.instance.ProcessInstance.STATE_COMPLETED);
+ assertThat(processInstance.variables().getX()).isEqualTo("1");
}
@Test
- public void compensationInvokingSubProcess() throws Exception {
- kruntime =
createKogitoProcessRuntime("org/jbpm/bpmn2/compensation/BPMN2-UserTaskCompensation.bpmn2");
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task", new SystemOutWorkItemHandler());
- Map<String, Object> params = new HashMap<>();
- params.put("compensation", "True");
- KogitoProcessInstance processInstance =
kruntime.startProcess("UserTaskCompensation", params);
-
- assertProcessInstanceCompleted(processInstance.getStringId(),
kruntime);
- assertProcessVarValue(processInstance, "compensation", "compensation");
+ public void compensationInvokingSubProcess() {
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app, "Human Task", new
SystemOutWorkItemHandler());
+ org.kie.kogito.process.Process<UserTaskCompensationModel> process =
UserTaskCompensationProcess.newProcess(app);
+ UserTaskCompensationModel model = process.createModel();
+ model.setCompensation("True");
+ ProcessInstance<UserTaskCompensationModel> processInstance =
process.createInstance(model);
+ processInstance.start();
+
+
assertThat(processInstance.status()).isEqualTo(org.jbpm.process.instance.ProcessInstance.STATE_COMPLETED);
+
assertThat(processInstance.variables().getCompensation()).isEqualTo("compensation");
}
/**
* Test to demonstrate that Compensation Events work with Reusable
* Subprocesses
*
- * @throws Exception
*/
@Test
- public void compensationWithReusableSubprocess() throws Exception {
- kruntime =
createKogitoProcessRuntime("org/jbpm/bpmn2/compensation/BPMN2-Booking.bpmn2",
- "org/jbpm/bpmn2/compensation/BPMN2-BookResource.bpmn2",
"org/jbpm/bpmn2/compensation/BPMN2-CancelResource.bpmn2");
- KogitoProcessInstance processInstance =
kruntime.startProcess("Booking");
- assertProcessInstanceCompleted(processInstance.getStringId(),
kruntime);
+ public void compensationWithReusableSubprocess() {
+ Application app = ProcessTestHelper.newApplication();
+ org.kie.kogito.process.Process<BookingModel> process =
BookingProcess.newProcess(app);
+ BookResourceProcess.newProcess(app);
+ CancelResourceProcess.newProcess(app);
+ ProcessInstance<BookingModel> processInstance =
process.createInstance(process.createModel());
+ processInstance.start();
+
+
assertThat(processInstance.status()).isEqualTo(org.jbpm.process.instance.ProcessInstance.STATE_COMPLETED);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]