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 e7dbc6899c [incubator-kie-issues-1305] Flow v7 Migration port (#3550)
e7dbc6899c is described below
commit e7dbc6899c48e3972470af9412722eb515e6811f
Author: Enrique <[email protected]>
AuthorDate: Wed Jun 19 14:43:41 2024 +0200
[incubator-kie-issues-1305] Flow v7 Migration port (#3550)
---
.../main/java/org/jbpm/bpmn2/objects/Person.java | 24 ++++
.../jbpm/bpmn2/objects/TestWorkItemHandler.java | 2 +
.../jbpm/bpmn2/event}/BPMN2-MessageEndEvent.bpmn2 | 0
.../BPMN2-DataInputAssociationsTwoAssigns.bpmn2} | 2 +-
.../BPMN2-DataOutputAssociationsHumanTask.bpmn2} | 2 +-
.../flow}/BPMN2-DefaultObjectStructureRef.bpmn2 | 2 +-
.../jbpm/bpmn2/flow}/BPMN2-FloatStructureRef.bpmn2 | 2 +-
.../bpmn2/flow}/BPMN2-IntegerStructureRef.bpmn2 | 2 +-
.../BPMN2-NullVariableInScriptTaskProcess.bpmn2 | 4 +-
.../bpmn2/flow}/BPMN2-ObjectStructureRef.bpmn2 | 2 +-
.../bpmn2/flow}/BPMN2-ProcessEmptyScript.bpmn2 | 2 +-
.../src/test/java/org/jbpm/bpmn2/DataTest.java | 13 +-
.../src/test/java/org/jbpm/bpmn2/EndEventTest.java | 73 +++-------
.../java/org/jbpm/bpmn2/IntermediateEventTest.java | 12 +-
.../org/jbpm/bpmn2/StandaloneBPMNProcessTest.java | 10 --
.../jbpm/bpmn2/structureref/StructureRefTest.java | 156 ++++++++++++---------
.../org/jbpm/test/utils/ProcessTestHelper.java | 45 ++++++
.../src/main/bpmn}/BPMN2-MessageEndEvent.bpmn2 | 0
18 files changed, 199 insertions(+), 154 deletions(-)
diff --git a/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/Person.java
b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/Person.java
index 1569635826..8a358de78f 100755
--- a/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/Person.java
+++ b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/Person.java
@@ -19,6 +19,7 @@
package org.jbpm.bpmn2.objects;
import java.io.Serializable;
+import java.util.Objects;
import jakarta.xml.bind.annotation.XmlRootElement;
@@ -37,6 +38,11 @@ public class Person implements Serializable {
this.name = name;
}
+ public Person(long id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
public String getName() {
return name;
}
@@ -65,4 +71,22 @@ public class Person implements Serializable {
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(age, id, name);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Person other = (Person) obj;
+ return Objects.equals(age, other.age) && Objects.equals(id, other.id)
&& Objects.equals(name, other.name);
+ }
+
}
diff --git
a/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/TestWorkItemHandler.java
b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/TestWorkItemHandler.java
index 48a5612d5a..9d6a939a11 100755
---
a/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/TestWorkItemHandler.java
+++
b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/TestWorkItemHandler.java
@@ -20,6 +20,7 @@ package org.jbpm.bpmn2.objects;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import org.jbpm.process.instance.impl.humantask.InternalHumanTaskWorkItem;
import org.jbpm.process.instance.impl.workitem.Active;
@@ -73,6 +74,7 @@ public class TestWorkItemHandler implements
KogitoWorkItemHandler {
public void transitionToPhase(KogitoWorkItem workItem,
KogitoWorkItemManager manager, Transition<?> transition) {
if (transition.phase().equals(Complete.ID)) {
+ ((InternalKogitoWorkItem) workItem).setResults((Map<String,
Object>) transition.data());
((InternalKogitoWorkItemManager)
manager).internalCompleteWorkItem((InternalKogitoWorkItem) workItem);
}
}
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-MessageEndEvent.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/event/BPMN2-MessageEndEvent.bpmn2
similarity index 100%
copy from jbpm/jbpm-tests/src/test/resources/BPMN2-MessageEndEvent.bpmn2
copy to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/event/BPMN2-MessageEndEvent.bpmn2
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-DataInputAssociations-two-assigns.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-DataInputAssociationsTwoAssigns.bpmn2
similarity index 97%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-DataInputAssociations-two-assigns.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-DataInputAssociationsTwoAssigns.bpmn2
index daa4fb172c..514f2f3e19 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-DataInputAssociations-two-assigns.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-DataInputAssociationsTwoAssigns.bpmn2
@@ -31,7 +31,7 @@
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
xmlns:tns="http://www.jboss.org/drools">
<itemDefinition id='objectType' structureRef='org.w3c.dom.Node'/>
- <process id='process'>
+ <process id='DataInputAssociationsTwoAssigns'
tns:packageName="org.jbpm.bpmn2.flow">
<property id='instanceMetadata' itemSubjectRef='objectType'/>
<startEvent id='_5DF6C746-EEDF-4D39-A953-B529A0320D24' name=''/>
<exclusiveGateway id='_81070F07-C929-4C93-8B08-18FF6D319F6A' name=''
gatewayDirection='Diverging'/>
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-DataOutputAssociations-HumanTask.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-DataOutputAssociationsHumanTask.bpmn2
similarity index 98%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-DataOutputAssociations-HumanTask.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-DataOutputAssociationsHumanTask.bpmn2
index 5056fb2cff..bffd771c49 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-DataOutputAssociations-HumanTask.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-DataOutputAssociationsHumanTask.bpmn2
@@ -31,7 +31,7 @@
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
xmlns:tns="http://www.jboss.org/drools">
<itemDefinition id='objectType' structureRef='org.w3c.dom.Element'/>
- <process id='process'>
+ <process id='DataOutputAssociationsHumanTask'
tns:packageName="org.jbpm.bpmn2.flow">
<property id='instanceMetadata' itemSubjectRef='objectType'/>
<startEvent id='_5DF6C746-EEDF-4D39-A953-B529A0320D24' name=''/>
<exclusiveGateway id='_81070F07-C929-4C93-8B08-18FF6D319F6A' name=''
gatewayDirection='Diverging'/>
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-DefaultObjectStructureRef.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-DefaultObjectStructureRef.bpmn2
similarity index 95%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-DefaultObjectStructureRef.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-DefaultObjectStructureRef.bpmn2
index b6fe48d578..f2229bf8d4 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-DefaultObjectStructureRef.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-DefaultObjectStructureRef.bpmn2
@@ -32,7 +32,7 @@
<itemDefinition id="_testItem" structureRef="Object" />
- <process processType="Private" isExecutable="true" id="StructureRef"
name="StructureRef" tns:packageName="defaultPackage" >
+ <process processType="Private" isExecutable="true"
id="DefaultObjectStructureRef" name="DefaultObjectStructureRef"
tns:packageName="org.jbpm.bpmn2.flow" >
<!-- process variables -->
<property id="test" itemSubjectRef="_testItem"/>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-FloatStructureRef.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-FloatStructureRef.bpmn2
similarity index 96%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-FloatStructureRef.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-FloatStructureRef.bpmn2
index 3f003861d6..9bafb0d064 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-FloatStructureRef.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-FloatStructureRef.bpmn2
@@ -32,7 +32,7 @@
<itemDefinition id="_testItem" structureRef="Float" />
- <process processType="Private" isExecutable="true" id="StructureRef"
name="StructureRef" tns:packageName="defaultPackage" >
+ <process processType="Private" isExecutable="true" id="FloatStructureRef"
name="FloatStructureRef" tns:packageName="org.jbpm.bpmn2.flow" >
<!-- process variables -->
<property id="test" itemSubjectRef="_testItem"/>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntegerStructureRef.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-IntegerStructureRef.bpmn2
similarity index 95%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-IntegerStructureRef.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-IntegerStructureRef.bpmn2
index 3da64df507..3395dbb2d3 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntegerStructureRef.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-IntegerStructureRef.bpmn2
@@ -32,7 +32,7 @@
<itemDefinition id="_testItem" structureRef="Integer" />
- <process processType="Private" isExecutable="true" id="StructureRef"
name="StructureRef" tns:packageName="defaultPackage" >
+ <process processType="Private" isExecutable="true" id="IntegerStructureRef"
name="IntegerStructureRef" tns:packageName="org.jbpm.bpmn2.flow" >
<!-- process variables -->
<property id="test" itemSubjectRef="_testItem"/>
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-NullVariableInScriptTaskProcess.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-NullVariableInScriptTaskProcess.bpmn2
similarity index 97%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-NullVariableInScriptTaskProcess.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-NullVariableInScriptTaskProcess.bpmn2
index 7028972525..401eb97861 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-NullVariableInScriptTaskProcess.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-NullVariableInScriptTaskProcess.bpmn2
@@ -34,9 +34,9 @@
<itemDefinition id="_timeExecution" structureRef="java.lang.Long" />
<process processType="Private" isExecutable="true"
- id="nullVariableInScriptAfterTimer"
+ id="NullVariableInScriptTaskProcess"
name="nullVariableInScriptAfterTimer"
- tns:packageName="defaultPackage" >
+ tns:packageName="org.jbpm.bpmn2.flow" >
<!-- process variables -->
<property id="timeBeforeTimer" itemSubjectRef="_timeBefore"/>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-ObjectStructureRef.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ObjectStructureRef.bpmn2
similarity index 96%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-ObjectStructureRef.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ObjectStructureRef.bpmn2
index 450babc2fd..f8cd0a03e4 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-ObjectStructureRef.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ObjectStructureRef.bpmn2
@@ -32,7 +32,7 @@
<itemDefinition id="_testItem" structureRef="org.jbpm.bpmn2.objects.Person"
/>
- <process processType="Private" isExecutable="true" id="StructureRef"
name="StructureRef" tns:packageName="defaultPackage" >
+ <process processType="Private" isExecutable="true" id="ObjectStructureRef"
name="ObjectStructureRef" tns:packageName="org.jbpm.bpmn2.flow" >
<!-- process variables -->
<property id="test" itemSubjectRef="_testItem"/>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-ProcessEmptyScript.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ProcessEmptyScript.bpmn2
similarity index 95%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-ProcessEmptyScript.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ProcessEmptyScript.bpmn2
index d163a0e99b..719d4f88c6 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-ProcessEmptyScript.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ProcessEmptyScript.bpmn2
@@ -27,7 +27,7 @@
xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL
BPMN20.xsd"
xmlns:tns="http://www.jboss.org/drools">
- <process id="Minimal" name="Minimal Process" tns:packageName="com.sample">
+ <process id="ProcessEmptyScript" name="Minimal Process"
tns:packageName="org.jbpm.bpmn2.flow">
<startEvent id="_1" name="StartProcess"/>
<sequenceFlow sourceRef="_1" targetRef="_2"/>
<scriptTask id="_2" name="Hello">
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/DataTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/DataTest.java
index 2f46fa66c5..7794b06b60 100755
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/DataTest.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/DataTest.java
@@ -32,6 +32,8 @@ import org.jbpm.bpmn2.activity.XPathProcessProcess;
import org.jbpm.bpmn2.core.Association;
import org.jbpm.bpmn2.core.DataStore;
import org.jbpm.bpmn2.core.Definitions;
+import org.jbpm.bpmn2.flow.DataOutputAssociationsHumanTaskModel;
+import org.jbpm.bpmn2.flow.DataOutputAssociationsHumanTaskProcess;
import org.jbpm.bpmn2.xml.ProcessHandler;
import org.jbpm.process.core.datatype.impl.type.ObjectDataType;
import org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler;
@@ -358,8 +360,8 @@ public class DataTest extends JbpmBpmn2TestCase {
@Test
public void testDataOutputAssociationsforHumanTask() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-DataOutputAssociations-HumanTask.bpmn2");
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task",
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app, "Human Task",
new KogitoWorkItemHandler() {
public void abortWorkItem(KogitoWorkItem manager,
@@ -396,10 +398,11 @@ public class DataTest extends JbpmBpmn2TestCase {
}
});
- Map<String, Object> params = new HashMap<>();
- KogitoProcessInstance processInstance =
kruntime.startProcess("process",
- params);
+ org.kie.kogito.process.Process<DataOutputAssociationsHumanTaskModel>
definition = DataOutputAssociationsHumanTaskProcess.newProcess(app);
+
org.kie.kogito.process.ProcessInstance<DataOutputAssociationsHumanTaskModel>
instance = definition.createInstance(definition.createModel());
+
+ instance.start();
}
@Test
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/EndEventTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/EndEventTest.java
index 389ba67b27..ee949594ca 100755
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/EndEventTest.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/EndEventTest.java
@@ -23,14 +23,15 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.jbpm.bpmn2.handler.SendTaskHandler;
-import org.jbpm.bpmn2.objects.TestWorkItemHandler;
+import org.jbpm.bpmn2.event.MessageEndEventModel;
+import org.jbpm.bpmn2.event.MessageEndEventProcess;
import org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler;
+import org.jbpm.test.utils.ProcessTestHelper;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
-import org.kie.api.definition.process.WorkflowElementIdentifier;
+import org.kie.kogito.Application;
+import org.kie.kogito.event.impl.MessageProducer;
import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
-import org.kie.kogito.process.workitems.InternalKogitoWorkItem;
import static org.assertj.core.api.Assertions.assertThat;
@@ -74,54 +75,22 @@ public class EndEventTest extends JbpmBpmn2TestCase {
@Test
public void testMessageEnd() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-MessageEndEvent.bpmn2");
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Send
Task",
- new SendTaskHandler());
- Map<String, Object> params = new HashMap<>();
- params.put("x", "MyValue");
- KogitoProcessInstance processInstance = kruntime.startProcess(
- "MessageEndEvent", params);
- assertProcessInstanceCompleted(processInstance);
-
- }
-
- @Test
- public void testMessageEndVerifyDeploymentId() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-MessageEndEvent.bpmn2");
-
- TestWorkItemHandler handler = new TestWorkItemHandler();
-
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Send
Task", handler);
- Map<String, Object> params = new HashMap<>();
- params.put("x", "MyValue");
- KogitoProcessInstance processInstance =
kruntime.startProcess("MessageEndEvent", params);
- assertProcessInstanceCompleted(processInstance);
-
- InternalKogitoWorkItem workItem = (InternalKogitoWorkItem)
handler.getWorkItem();
- assertThat(workItem).isNotNull();
-
- String nodeInstanceId = workItem.getNodeInstanceStringId();
- WorkflowElementIdentifier nodeId = workItem.getNodeId();
- String deploymentId = workItem.getDeploymentId();
-
- assertThat(nodeId).isNotNull();
- assertThat(nodeInstanceId).isNotNull();
- assertThat(deploymentId).isNull();
-
- // now set deployment id as part of kruntime's env
- kruntime.getKieRuntime().getEnvironment().set("deploymentId",
"testDeploymentId");
-
- processInstance = kruntime.startProcess("MessageEndEvent", params);
- assertProcessInstanceCompleted(processInstance);
-
- workItem = (InternalKogitoWorkItem) handler.getWorkItem();
- assertThat(workItem).isNotNull();
-
- nodeInstanceId = workItem.getNodeInstanceStringId();
- nodeId = workItem.getNodeId();
-
- assertThat(nodeId).isNotNull();
- assertThat(nodeInstanceId).isNotNull();
+ Application app = ProcessTestHelper.newApplication();
+ MessageEndEventProcess definition = (MessageEndEventProcess)
MessageEndEventProcess.newProcess(app);
+ StringBuilder message = new StringBuilder();
+ definition.setProducer__2(new MessageProducer<String>() {
+
+ @Override
+ public void produce(KogitoProcessInstance pi, String eventData) {
+ message.append(eventData);
+ }
+ });
+ MessageEndEventModel model = definition.createModel();
+ model.setX("MyValue");
+ org.kie.kogito.process.ProcessInstance<MessageEndEventModel> instance
= definition.createInstance(model);
+ instance.start();
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+ assertThat(message.toString()).isEqualTo("MyValue");
}
@Test
diff --git
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/IntermediateEventTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/IntermediateEventTest.java
index ecf59596cb..0276694491 100755
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/IntermediateEventTest.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/IntermediateEventTest.java
@@ -70,6 +70,7 @@ import
org.jbpm.test.util.NodeLeftCountDownProcessEventListener;
import org.jbpm.test.util.ProcessCompletedCountDownProcessEventListener;
import org.jbpm.test.utils.EventTrackerProcessListener;
import org.jbpm.test.utils.ProcessTestHelper;
+import org.jbpm.test.utils.ProcessTestHelper.CompletionKogitoEventListener;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.kie.api.command.ExecutableCommand;
@@ -1914,18 +1915,11 @@ public class IntermediateEventTest extends
JbpmBpmn2TestCase {
@Test
public void testIntermediateCatchEventTimerDurationWithError() throws
Exception {
Application app = ProcessTestHelper.newApplication();
-
- final CountDownLatch latch = new CountDownLatch(1);
- ProcessTestHelper.registerProcessEventListener(app, new
DefaultKogitoProcessEventListener() {
- @Override
- public void afterProcessCompleted(ProcessCompletedEvent event) {
- latch.countDown();
- }
- });
org.kie.kogito.process.Process<IntermediateCatchEventTimerDurationWithErrorModel>
definition =
IntermediateCatchEventTimerDurationWithErrorProcess.newProcess(app);
IntermediateCatchEventTimerDurationWithErrorProcessInstance instance =
(IntermediateCatchEventTimerDurationWithErrorProcessInstance)
definition.createInstance(definition.createModel());
instance.start();
- latch.await(10, TimeUnit.SECONDS);
+ CompletionKogitoEventListener listener =
ProcessTestHelper.registerCompletionEventListener(instance);
+ listener.await();
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
assertThat(instance.variables().getTestOK()).isEqualTo(Boolean.TRUE);
diff --git
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
index 3d2377495f..32c2874cb4 100755
---
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
+++
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
@@ -756,16 +756,6 @@ public class StandaloneBPMNProcessTest extends
JbpmBpmn2TestCase {
assertThat(list).hasSize(1);
}
- @Test
- public void testMessageEnd() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-MessageEndEvent.bpmn2");
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Send
Task", new SendTaskHandler());
- Map<String, Object> params = new HashMap<>();
- params.put("x", "MyValue");
- KogitoProcessInstance processInstance =
kruntime.startProcess("MessageEndEvent", params);
-
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_COMPLETED);
- }
-
@Test
public void testMessageIntermediateThrow() throws Exception {
Application app = ProcessTestHelper.newApplication();
diff --git
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/structureref/StructureRefTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/structureref/StructureRefTest.java
index 45f04b90d8..fad2e7fd61 100755
---
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/structureref/StructureRefTest.java
+++
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/structureref/StructureRefTest.java
@@ -19,15 +19,26 @@
package org.jbpm.bpmn2.structureref;
import java.io.StringReader;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.jbpm.bpmn2.JbpmBpmn2TestCase;
+import org.jbpm.bpmn2.flow.DefaultObjectStructureRefModel;
+import org.jbpm.bpmn2.flow.DefaultObjectStructureRefProcess;
+import org.jbpm.bpmn2.flow.FloatStructureRefModel;
+import org.jbpm.bpmn2.flow.FloatStructureRefProcess;
+import org.jbpm.bpmn2.flow.IntegerStructureRefModel;
+import org.jbpm.bpmn2.flow.IntegerStructureRefProcess;
+import org.jbpm.bpmn2.flow.ObjectStructureRefModel;
+import org.jbpm.bpmn2.flow.ObjectStructureRefProcess;
import org.jbpm.bpmn2.objects.Person;
import org.jbpm.bpmn2.objects.TestWorkItemHandler;
import org.jbpm.process.core.context.variable.VariableScope;
import org.jbpm.process.core.datatype.impl.coverter.TypeConverterRegistry;
+import org.jbpm.test.utils.ProcessTestHelper;
import org.junit.jupiter.api.Test;
+import org.kie.kogito.Application;
import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
import jakarta.xml.bind.JAXBContext;
@@ -77,44 +88,50 @@ public class StructureRefTest extends JbpmBpmn2TestCase {
@Test
public void testIntegerStructureRef() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-IntegerStructureRef.bpmn2");
+ String value = "25";
+ Application app = ProcessTestHelper.newApplication();
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task",
- workItemHandler);
- KogitoProcessInstance processInstance =
kruntime.startProcess("StructureRef");
-
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_ACTIVE);
+ ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+ IntegerStructureRefProcess definition = (IntegerStructureRefProcess)
IntegerStructureRefProcess.newProcess(app);
- Map<String, Object> res = new HashMap<>();
- res.put("testHT", "25");
- kruntime.getKogitoWorkItemManager().completeWorkItem(
- workItemHandler.getWorkItem().getStringId(), res);
+ IntegerStructureRefModel model = definition.createModel();
+ org.kie.kogito.process.ProcessInstance<IntegerStructureRefModel>
instance = definition.createInstance(model);
+ instance.start();
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+
+ ProcessTestHelper.completeWorkItem(instance, "john",
Collections.singletonMap("testHT", value));
+
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+
assertThat(instance.variables().getTest()).isEqualTo(Integer.valueOf(value));
- assertProcessInstanceCompleted(processInstance.getStringId(),
kruntime);
}
@Test
public void testFloatStructureRef() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-FloatStructureRef.bpmn2");
+ String value = "5.5";
+ Application app = ProcessTestHelper.newApplication();
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task",
- workItemHandler);
- KogitoProcessInstance processInstance =
kruntime.startProcess("StructureRef");
-
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_ACTIVE);
+ ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+ FloatStructureRefProcess definition = (FloatStructureRefProcess)
FloatStructureRefProcess.newProcess(app);
- Map<String, Object> res = new HashMap<>();
- res.put("testHT", "5.5");
- kruntime.getKogitoWorkItemManager().completeWorkItem(
- workItemHandler.getWorkItem().getStringId(), res);
+ FloatStructureRefModel model = definition.createModel();
+ org.kie.kogito.process.ProcessInstance<FloatStructureRefModel>
instance = definition.createInstance(model);
+ instance.start();
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+
+ ProcessTestHelper.completeWorkItem(instance, "john",
Collections.singletonMap("testHT", value));
+
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+
assertThat(instance.variables().getTest()).isEqualTo(Float.valueOf(value));
- assertProcessInstanceCompleted(processInstance.getStringId(),
kruntime);
}
@Test
public void testObjectStructureRef() throws Exception {
JAXBContext context = JAXBContext.newInstance(Person.class);
- String personAsXml = "<person><id>1</id><name>john</name></person>";
+
TypeConverterRegistry.get().register("org.jbpm.bpmn2.objects.Person",
(s) -> {
try {
return context.createUnmarshaller().unmarshal(new
StringReader(s));
@@ -122,41 +139,45 @@ public class StructureRefTest extends JbpmBpmn2TestCase {
throw new RuntimeException(e);
}
});
- kruntime =
createKogitoProcessRuntime("BPMN2-ObjectStructureRef.bpmn2");
+ String value = "<person><id>1</id><name>john</name></person>";
+
+ Application app = ProcessTestHelper.newApplication();
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task",
- workItemHandler);
- KogitoProcessInstance processInstance =
kruntime.startProcess("StructureRef");
-
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_ACTIVE);
+ ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+ ObjectStructureRefProcess definition = (ObjectStructureRefProcess)
ObjectStructureRefProcess.newProcess(app);
- Map<String, Object> res = new HashMap<>();
- res.put("testHT", personAsXml);
- kruntime.getKogitoWorkItemManager().completeWorkItem(
- workItemHandler.getWorkItem().getStringId(), res);
+ ObjectStructureRefModel model = definition.createModel();
+ org.kie.kogito.process.ProcessInstance<ObjectStructureRefModel>
instance = definition.createInstance(model);
+ instance.start();
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+
+ ProcessTestHelper.completeWorkItem(instance, "john",
Collections.singletonMap("testHT", value));
+
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+ assertThat(instance.variables().getTest()).isEqualTo(new Person(1,
"john"));
- assertProcessInstanceCompleted(processInstance.getStringId(),
kruntime);
}
@Test
public void testDefaultObjectStructureRef() throws Exception {
-
String value = "simple text for testing";
- kruntime =
createKogitoProcessRuntime("BPMN2-DefaultObjectStructureRef.bpmn2");
-
+ Application app = ProcessTestHelper.newApplication();
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task",
- workItemHandler);
- KogitoProcessInstance processInstance =
kruntime.startProcess("StructureRef");
-
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_ACTIVE);
+ ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+ DefaultObjectStructureRefProcess definition =
(DefaultObjectStructureRefProcess)
DefaultObjectStructureRefProcess.newProcess(app);
- Map<String, Object> res = new HashMap<>();
- res.put("testHT", value);
- kruntime.getKogitoWorkItemManager().completeWorkItem(
- workItemHandler.getWorkItem().getStringId(), res);
+ DefaultObjectStructureRefModel model = definition.createModel();
+ org.kie.kogito.process.ProcessInstance<DefaultObjectStructureRefModel>
instance = definition.createInstance(model);
+ instance.start();
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+
+ ProcessTestHelper.completeWorkItem(instance, "john",
Collections.singletonMap("testHT", value));
+
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+ assertThat(instance.variables().getTest()).isEqualTo(value);
- assertProcessInstanceCompleted(processInstance.getStringId(),
kruntime);
}
@Test
@@ -188,20 +209,19 @@ public class StructureRefTest extends JbpmBpmn2TestCase {
@Test
public void testInvalidBooleanStructureRefOnWIComplete() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-IntegerStructureRef.bpmn2");
+ Application app = ProcessTestHelper.newApplication();
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task",
- workItemHandler);
-
- KogitoProcessInstance processInstance =
kruntime.startProcess("StructureRef");
-
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_ACTIVE);
+ ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+ IntegerStructureRefProcess definition = (IntegerStructureRefProcess)
IntegerStructureRefProcess.newProcess(app);
- Map<String, Object> res = new HashMap<>();
- res.put("testHT", true);
+ IntegerStructureRefModel model = definition.createModel();
+ org.kie.kogito.process.ProcessInstance<IntegerStructureRefModel>
instance = definition.createInstance(model);
+ instance.start();
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
try {
-
kruntime.getKogitoWorkItemManager().completeWorkItem(workItemHandler.getWorkItem().getStringId(),
res);
+ ProcessTestHelper.completeWorkItem(instance, "john",
Collections.singletonMap("testHT", true));
fail("");
} catch (IllegalArgumentException iae) {
logger.info("Expected IllegalArgumentException caught: " + iae);
@@ -209,6 +229,7 @@ public class StructureRefTest extends JbpmBpmn2TestCase {
fail("");
}
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
}
@Test
@@ -247,29 +268,26 @@ public class StructureRefTest extends JbpmBpmn2TestCase {
@Test
public void testNotExistingBooleanStructureRefOnWIComplete() throws
Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-IntegerStructureRef.bpmn2");
+ String wrongDataOutput = "not existing";
+ Application app = ProcessTestHelper.newApplication();
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task",
- workItemHandler);
-
- KogitoProcessInstance processInstance =
kruntime.startProcess("StructureRef");
-
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_ACTIVE);
-
- String wrongDataOutput = "not existing";
+ ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+ IntegerStructureRefProcess definition = (IntegerStructureRefProcess)
IntegerStructureRefProcess.newProcess(app);
- Map<String, Object> res = new HashMap<>();
- res.put(wrongDataOutput, true);
+ IntegerStructureRefModel model = definition.createModel();
+ org.kie.kogito.process.ProcessInstance<IntegerStructureRefModel>
instance = definition.createInstance(model);
+ instance.start();
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
try {
-
kruntime.getKogitoWorkItemManager().completeWorkItem(workItemHandler.getWorkItem().getStringId(),
res);
- fail("");
- } catch (IllegalArgumentException iae) {
- System.out.println("Expected IllegalArgumentException catched: " +
iae);
- assertThat(iae.getMessage()).isEqualTo("Data output '" +
wrongDataOutput + "' is not defined in process 'StructureRef' for task 'User
Task'");
- } catch (Exception e) {
- fail("");
+ ProcessTestHelper.completeWorkItem(instance, "john",
Collections.singletonMap(wrongDataOutput, true));
+ fail("it should not work!");
+ } catch (IllegalArgumentException e) {
+ assertThat(e.getMessage()).isEqualTo("Data output '" +
wrongDataOutput + "' is not defined in process 'IntegerStructureRef' for task
'User Task'");
}
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+
}
}
diff --git
a/jbpm/jbpm-tests/src/test/java/org/jbpm/test/utils/ProcessTestHelper.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/test/utils/ProcessTestHelper.java
index 3b9dc1d336..3db866f82b 100644
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/test/utils/ProcessTestHelper.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/test/utils/ProcessTestHelper.java
@@ -20,9 +20,11 @@ package org.jbpm.test.utils;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.CountDownLatch;
import java.util.function.Consumer;
import java.util.function.Predicate;
+import
org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerDurationWithErrorProcessInstance;
import org.kie.api.event.process.ProcessNodeEvent;
import org.kie.api.event.process.ProcessNodeLeftEvent;
import org.kie.api.event.process.ProcessNodeTriggeredEvent;
@@ -31,6 +33,7 @@ import org.kie.kogito.Model;
import org.kie.kogito.StaticApplication;
import org.kie.kogito.StaticConfig;
import org.kie.kogito.auth.SecurityPolicy;
+import org.kie.kogito.internal.process.event.KogitoEventListener;
import org.kie.kogito.internal.process.event.KogitoProcessEventListener;
import org.kie.kogito.internal.process.runtime.KogitoWorkItemHandler;
import org.kie.kogito.process.ProcessConfig;
@@ -42,11 +45,15 @@ import
org.kie.kogito.process.impl.DefaultWorkItemHandlerConfig;
import org.kie.kogito.process.impl.StaticProcessConfig;
import org.kie.kogito.services.uow.CollectingUnitOfWorkFactory;
import org.kie.kogito.services.uow.DefaultUnitOfWorkManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import static java.util.Collections.emptyList;
public class ProcessTestHelper {
+ private static Logger LOGGER =
LoggerFactory.getLogger(ProcessTestHelper.class);
+
public static Application newApplication() {
BpmnProcesses bpmnProcesses = new BpmnProcesses();
StaticProcessConfig staticConfig =
@@ -91,4 +98,42 @@ public class ProcessTestHelper {
return e instanceof ProcessNodeLeftEvent &&
nodeName.equals(((ProcessNodeLeftEvent) e).getNodeInstance().getNodeName());
};
}
+
+ public static class CompletionKogitoEventListener implements
KogitoEventListener {
+
+ private String id;
+ private CountDownLatch latch;
+
+ public CompletionKogitoEventListener(String id) {
+ this.id = id;
+ this.latch = new CountDownLatch(1);
+ }
+
+ @Override
+ public void signalEvent(String type, Object event) {
+ latch.countDown();
+ LOGGER.info("Completion was invoked");
+ }
+
+ @Override
+ public String[] getEventTypes() {
+ return new String[] { "processInstanceCompleted:" + id };
+ }
+
+ public void await() {
+ try {
+ latch.await();
+ } catch (InterruptedException e) {
+ LOGGER.info("Completion was interrupted", e);
+ }
+ }
+
+ }
+
+ public static CompletionKogitoEventListener
registerCompletionEventListener(IntermediateCatchEventTimerDurationWithErrorProcessInstance
instance) {
+ CompletionKogitoEventListener completionEventListener = new
CompletionKogitoEventListener(instance.id());
+
instance.internalGetProcessInstance().addEventListener("processInstanceCompleted:"
+ instance.id(), completionEventListener, false);
+ return completionEventListener;
+ }
+
}
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-MessageEndEvent.bpmn2
b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-MessageEndEvent.bpmn2
similarity index 100%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-MessageEndEvent.bpmn2
rename to
jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-MessageEndEvent.bpmn2
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]