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]


Reply via email to