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 5cee74f0eb [incubator-kie-issues-1131] v7 migration to code generation 
(#3610)
5cee74f0eb is described below

commit 5cee74f0eb81553d51c46758057f908ff5e9457d
Author: Abhiram Gundala <[email protected]>
AuthorDate: Mon Sep 16 02:30:08 2024 -0400

    [incubator-kie-issues-1131] v7 migration to code generation (#3610)
---
 .../java/org/jbpm/bpmn2/IntermediateEventTest.java | 742 +++++++++++----------
 1 file changed, 404 insertions(+), 338 deletions(-)

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 1d24ef1aa4..00c1c45d72 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
@@ -41,8 +41,20 @@ import 
org.jbpm.bpmn2.event.BoundaryTimerCycleISOVariableModel;
 import org.jbpm.bpmn2.event.BoundaryTimerCycleISOVariableProcess;
 import org.jbpm.bpmn2.handler.ReceiveTaskHandler;
 import org.jbpm.bpmn2.handler.SendTaskHandler;
+import org.jbpm.bpmn2.intermediate.BoundarySignalEventOnTaskModel;
+import org.jbpm.bpmn2.intermediate.BoundarySignalEventOnTaskProcess;
+import org.jbpm.bpmn2.intermediate.EventBasedSplit2Model;
+import org.jbpm.bpmn2.intermediate.EventBasedSplit2Process;
+import org.jbpm.bpmn2.intermediate.EventBasedSplit4Model;
+import org.jbpm.bpmn2.intermediate.EventBasedSplit4Process;
+import org.jbpm.bpmn2.intermediate.EventBasedSplitModel;
+import org.jbpm.bpmn2.intermediate.EventBasedSplitProcess;
 import org.jbpm.bpmn2.intermediate.EventSubprocessErrorSignalEmbeddedModel;
 import org.jbpm.bpmn2.intermediate.EventSubprocessErrorSignalEmbeddedProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventMessageModel;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventMessageProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventMessageWithRefModel;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventMessageWithRefProcess;
 import 
org.jbpm.bpmn2.intermediate.IntermediateCatchEventMessageWithTransformationModel;
 import 
org.jbpm.bpmn2.intermediate.IntermediateCatchEventMessageWithTransformationProcess;
 import org.jbpm.bpmn2.intermediate.IntermediateCatchEventSignal2Model;
@@ -51,19 +63,41 @@ import 
org.jbpm.bpmn2.intermediate.IntermediateCatchEventSignalModel;
 import org.jbpm.bpmn2.intermediate.IntermediateCatchEventSignalProcess;
 import 
org.jbpm.bpmn2.intermediate.IntermediateCatchEventSignalWithTransformationModel;
 import 
org.jbpm.bpmn2.intermediate.IntermediateCatchEventSignalWithTransformationProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerCycle1Model;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerCycle1Process;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerCycle2Model;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerCycle2Process;
 import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerCycle3Model;
 import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerCycle3Process;
 import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerCycleCronModel;
 import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerCycleCronProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerCycleISOModel;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerCycleISOProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerDateISOModel;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerDateISOProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerDurationISOModel;
+import 
org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerDurationISOProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerDurationModel;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerDurationProcess;
 import 
org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerDurationWithErrorModel;
 import 
org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerDurationWithErrorProcess;
 import 
org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerDurationWithErrorProcessInstance;
 import 
org.jbpm.bpmn2.intermediate.IntermediateCatchSignalBetweenUserTasksModel;
 import 
org.jbpm.bpmn2.intermediate.IntermediateCatchSignalBetweenUserTasksProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchSignalSingleModel;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchSignalSingleProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateLinkEventModel;
+import org.jbpm.bpmn2.intermediate.IntermediateLinkEventProcess;
 import org.jbpm.bpmn2.intermediate.IntermediateThrowEventMessageModel;
 import org.jbpm.bpmn2.intermediate.IntermediateThrowEventMessageProcess;
 import 
org.jbpm.bpmn2.intermediate.IntermediateThrowEventMessageWithTransformationModel;
 import 
org.jbpm.bpmn2.intermediate.IntermediateThrowEventMessageWithTransformationProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateThrowEventNoneModel;
+import org.jbpm.bpmn2.intermediate.IntermediateThrowEventNoneProcess;
+import org.jbpm.bpmn2.intermediate.LinkEventCompositeProcessModel;
+import org.jbpm.bpmn2.intermediate.LinkEventCompositeProcessProcess;
+import org.jbpm.bpmn2.intermediate.SignalBoundaryEventInterruptingModel;
+import org.jbpm.bpmn2.intermediate.SignalBoundaryEventInterruptingProcess;
 import org.jbpm.bpmn2.loop.MultiInstanceLoopBoundaryTimerModel;
 import org.jbpm.bpmn2.loop.MultiInstanceLoopBoundaryTimerProcess;
 import 
org.jbpm.bpmn2.loop.MultiInstanceLoopCharacteristicsProcessSequentialModel;
@@ -87,6 +121,16 @@ import 
org.jbpm.bpmn2.subprocess.EventSubprocessMessageProcess;
 import org.jbpm.bpmn2.subprocess.EventSubprocessSignalWithTransformationModel;
 import 
org.jbpm.bpmn2.subprocess.EventSubprocessSignalWithTransformationProcess;
 import org.jbpm.bpmn2.test.RequirePersistence;
+import org.jbpm.bpmn2.timer.TimerBoundaryEventCycle1Model;
+import org.jbpm.bpmn2.timer.TimerBoundaryEventCycle1Process;
+import org.jbpm.bpmn2.timer.TimerBoundaryEventCycle2Model;
+import org.jbpm.bpmn2.timer.TimerBoundaryEventCycle2Process;
+import org.jbpm.bpmn2.timer.TimerBoundaryEventInterruptingModel;
+import 
org.jbpm.bpmn2.timer.TimerBoundaryEventInterruptingOnTaskCancelTimerModel;
+import 
org.jbpm.bpmn2.timer.TimerBoundaryEventInterruptingOnTaskCancelTimerProcess;
+import org.jbpm.bpmn2.timer.TimerBoundaryEventInterruptingOnTaskModel;
+import org.jbpm.bpmn2.timer.TimerBoundaryEventInterruptingOnTaskProcess;
+import org.jbpm.bpmn2.timer.TimerBoundaryEventInterruptingProcess;
 import org.jbpm.process.core.datatype.impl.type.StringDataType;
 import org.jbpm.process.instance.event.listeners.RuleAwareProcessEventListener;
 import org.jbpm.process.instance.impl.demo.DoNothingWorkItemHandler;
@@ -105,6 +149,7 @@ import org.kie.api.event.process.ProcessNodeTriggeredEvent;
 import org.kie.api.event.process.ProcessStartedEvent;
 import org.kie.api.runtime.rule.FactHandle;
 import org.kie.kogito.Application;
+import org.kie.kogito.auth.SecurityPolicy;
 import org.kie.kogito.event.impl.MessageProducer;
 import org.kie.kogito.internal.process.event.DefaultKogitoProcessEventListener;
 import org.kie.kogito.internal.process.event.KogitoProcessEventListener;
@@ -188,25 +233,28 @@ public class IntermediateEventTest extends 
JbpmBpmn2TestCase {
     }
 
     @Test
-    public void testSignalBoundaryEvent() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-BoundarySignalEventOnTask.bpmn",
-                
"org/jbpm/bpmn2/intermediate/BPMN2-IntermediateThrowEventSignal.bpmn2");
+    public void testSignalBoundaryEvent() {
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerHandler(app, "Human Task", new 
TestWorkItemHandler());
 
-        TestWorkItemHandler handler = new TestWorkItemHandler();
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", handler);
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("BoundarySignalEventOnTask");
+        org.kie.kogito.process.Process<BoundarySignalEventOnTaskModel> 
signalEventOnTaskProcess = BoundarySignalEventOnTaskProcess.newProcess(app);
+        org.kie.kogito.process.Process<IntermediateThrowEventSignalModel> 
throwEventSignalProcess = IntermediateThrowEventSignalProcess.newProcess(app);
 
-        Set<EventDescription<?>> eventDescriptions = 
processInstance.getEventDescriptions();
+        org.kie.kogito.process.ProcessInstance<BoundarySignalEventOnTaskModel> 
taskProcessInstance = 
signalEventOnTaskProcess.createInstance(signalEventOnTaskProcess.createModel());
+        taskProcessInstance.start();
+
+        Set<EventDescription<?>> eventDescriptions = 
taskProcessInstance.events();
         
assertThat(eventDescriptions).hasSize(2).extracting("event").contains("MySignal");
         
assertThat(eventDescriptions).extracting("eventType").contains("signal");
-        
assertThat(eventDescriptions).extracting("processInstanceId").contains(processInstance.getStringId());
+        
assertThat(eventDescriptions).extracting("processInstanceId").contains(taskProcessInstance.id());
         assertThat(eventDescriptions).filteredOn("eventType", 
"signal").hasSize(1).extracting("properties", Map.class)
                 .anyMatch(m -> m.containsKey("AttachedToID") && 
m.containsKey("AttachedToName"));
 
-        KogitoProcessInstance processInstance2 = 
kruntime.startProcess("IntermediateThrowEventSignal");
-        assertProcessInstanceFinished(processInstance2, kruntime);
+        
org.kie.kogito.process.ProcessInstance<IntermediateThrowEventSignalModel> 
signalProcessInstance = 
throwEventSignalProcess.createInstance(throwEventSignalProcess.createModel());
+        signalProcessInstance.start();
 
-        assertProcessInstanceFinished(processInstance, kruntime);
+        
assertThat(signalProcessInstance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
+        
assertThat(taskProcessInstance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
@@ -220,6 +268,7 @@ public class IntermediateEventTest extends 
JbpmBpmn2TestCase {
         kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", handler);
 
         kruntime.getProcessEventManager().addEventListener(new 
DefaultKogitoProcessEventListener() {
+
             @Override
             public void afterNodeLeft(ProcessNodeLeftEvent event) {
                 // BoundaryEventNodeInstance
@@ -243,29 +292,31 @@ public class IntermediateEventTest extends 
JbpmBpmn2TestCase {
     }
 
     @Test
-    public void testSignalBoundaryEventOnTask() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-BoundarySignalEventOnTask.bpmn");
+    public void testSignalBoundaryEventOnTask() {
+        Application app = ProcessTestHelper.newApplication();
+        TestWorkItemHandler handler = new TestWorkItemHandler();
+        ProcessTestHelper.registerHandler(app, "Human Task", handler);
+        ProcessTestHelper.registerProcessEventListener(app, 
LOGGING_EVENT_LISTENER);
 
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", new TestWorkItemHandler());
-        
kruntime.getProcessEventManager().addEventListener(LOGGING_EVENT_LISTENER);
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("BoundarySignalEventOnTask");
+        org.kie.kogito.process.Process<BoundarySignalEventOnTaskModel> 
processDefinition = BoundarySignalEventOnTaskProcess.newProcess(app);
+        BoundarySignalEventOnTaskModel model = processDefinition.createModel();
+        org.kie.kogito.process.ProcessInstance<BoundarySignalEventOnTaskModel> 
instance = processDefinition.createInstance(model);
+        instance.start();
 
-        Set<EventDescription<?>> eventDescriptions = 
processInstance.getEventDescriptions();
+        Set<EventDescription<?>> eventDescriptions = instance.events();
         
assertThat(eventDescriptions).hasSize(2).extracting("event").contains("MySignal",
 "workItemCompleted");
         
assertThat(eventDescriptions).extracting("eventType").contains("signal", 
"workItem");
         
assertThat(eventDescriptions).extracting("nodeId").contains("BoundaryEvent_2", 
"UserTask_1");
-        
assertThat(eventDescriptions).extracting("processInstanceId").contains(processInstance.getStringId());
+        
assertThat(eventDescriptions).extracting("processInstanceId").contains(instance.id());
         assertThat(eventDescriptions).filteredOn("eventType", 
"signal").hasSize(1).extracting("properties", Map.class)
                 .anyMatch(m -> m.containsKey("AttachedToID") && 
m.containsKey("AttachedToName"));
         assertThat(eventDescriptions).filteredOn("eventType", 
"signal").hasSize(1).extracting("nodeInstanceId")
                 .containsOnlyNulls();
-
         assertThat(eventDescriptions).filteredOn("eventType", 
"workItem").hasSize(1).extracting("nodeInstanceId")
                 .doesNotContainNull();
 
-        kruntime.signalEvent("MySignal", "value");
-        assertProcessInstanceFinished(processInstance, kruntime);
-
+        instance.send(Sig.of("MySignal", "value"));
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
@@ -287,180 +338,178 @@ public class IntermediateEventTest extends 
JbpmBpmn2TestCase {
     }
 
     @Test
-    public void testSignalBoundaryEventOnTaskComplete() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-BoundarySignalEventOnTask.bpmn");
-
+    public void testSignalBoundaryEventOnTaskComplete() {
+        Application app = ProcessTestHelper.newApplication();
         TestWorkItemHandler handler = new TestWorkItemHandler();
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", handler);
-        
kruntime.getProcessEventManager().addEventListener(LOGGING_EVENT_LISTENER);
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("BoundarySignalEventOnTask");
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(handler.getWorkItem().getStringId(),
 null);
-        kruntime.signalEvent("MySignal", "value");
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(handler.getWorkItem().getStringId(),
 null);
-        assertProcessInstanceFinished(processInstance, kruntime);
-
+        ProcessTestHelper.registerHandler(app, "Human Task", handler);
+        ProcessTestHelper.registerProcessEventListener(app, 
LOGGING_EVENT_LISTENER);
+        org.kie.kogito.process.Process<BoundarySignalEventOnTaskModel> 
processDefinition = BoundarySignalEventOnTaskProcess.newProcess(app);
+        BoundarySignalEventOnTaskModel model = processDefinition.createModel();
+        org.kie.kogito.process.ProcessInstance<BoundarySignalEventOnTaskModel> 
instance = processDefinition.createInstance(model);
+        instance.start();
+        KogitoWorkItem workItem = handler.getWorkItem();
+        instance.completeWorkItem(workItem.getStringId(), null);
+        workItem = handler.getWorkItem();
+        instance.completeWorkItem(workItem.getStringId(), null);
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testSignalBoundaryEventInterrupting() throws Exception {
-        kruntime = createKogitoProcessRuntime(
-                
"org/jbpm/bpmn2/intermediate/BPMN2-SignalBoundaryEventInterrupting.bpmn2");
-
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("MyTask", 
new DoNothingWorkItemHandler());
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("SignalBoundaryEventInterrupting");
-        assertProcessInstanceActive(processInstance);
-
-        Set<EventDescription<?>> eventDescriptions = 
processInstance.getEventDescriptions();
+    public void testSignalBoundaryEventInterrupting() {
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerHandler(app, "MyTask", new 
DoNothingWorkItemHandler());
+        org.kie.kogito.process.Process<SignalBoundaryEventInterruptingModel> 
processDefinition = SignalBoundaryEventInterruptingProcess.newProcess(app);
+        SignalBoundaryEventInterruptingModel model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<SignalBoundaryEventInterruptingModel> 
instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+        Set<EventDescription<?>> eventDescriptions = instance.events();
         
assertThat(eventDescriptions).hasSize(2).extracting("event").contains("MyMessage",
 "workItemCompleted");
         
assertThat(eventDescriptions).extracting("eventType").contains("signal", 
"workItem");
-        
assertThat(eventDescriptions).extracting("processInstanceId").contains(processInstance.getStringId());
+        
assertThat(eventDescriptions).extracting("processInstanceId").contains(instance.id());
         assertThat(eventDescriptions).filteredOn("eventType", 
"signal").hasSize(1).extracting("properties", Map.class)
                 .anyMatch(m -> m.containsKey("AttachedToID") && 
m.containsKey("AttachedToName"));
-
-        kruntime.signalEvent("MyMessage", null);
-        assertProcessInstanceFinished(processInstance, kruntime);
-
+        instance.send(Sig.of("MyMessage", null));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testSignalIntermediateThrow() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-IntermediateThrowEventSignal.bpmn2");
-
-        Map<String, Object> params = new HashMap<>();
-        params.put("x", "MyValue");
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("IntermediateThrowEventSignal", params);
-        
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_COMPLETED);
-
+    public void testSignalIntermediateThrow() {
+        Application app = ProcessTestHelper.newApplication();
+        org.kie.kogito.process.Process<IntermediateThrowEventSignalModel> 
processDefinition = IntermediateThrowEventSignalProcess.newProcess(app);
+        IntermediateThrowEventSignalModel model = 
processDefinition.createModel();
+        model.setX("MyValue");
+        
org.kie.kogito.process.ProcessInstance<IntermediateThrowEventSignalModel> 
instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testSignalBetweenProcesses() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchSignalSingle.bpmn2",
-                
"org/jbpm/bpmn2/intermediate/BPMN2-IntermediateThrowEventSignal.bpmn2");
-
+    public void testSignalBetweenProcesses() {
+        Application app = ProcessTestHelper.newApplication();
         TestWorkItemHandler handler = new TestWorkItemHandler();
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", handler);
+        ProcessTestHelper.registerHandler(app, "Human Task", handler);
 
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("IntermediateCatchSignalSingle");
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(handler.getWorkItem().getStringId(),
 null);
+        org.kie.kogito.process.Process<IntermediateCatchSignalSingleModel> 
catchSignalSingleProcess = IntermediateCatchSignalSingleProcess.newProcess(app);
+        org.kie.kogito.process.Process<IntermediateThrowEventSignalModel> 
throwEventSignalProcess = IntermediateThrowEventSignalProcess.newProcess(app);
 
-        KogitoProcessInstance processInstance2 = 
kruntime.startProcess("IntermediateThrowEventSignal");
-        assertProcessInstanceFinished(processInstance2, kruntime);
+        
org.kie.kogito.process.ProcessInstance<IntermediateCatchSignalSingleModel> 
signalSingleProcessInstance = 
catchSignalSingleProcess.createInstance(catchSignalSingleProcess.createModel());
+        signalSingleProcessInstance.start();
+        
assertThat(signalSingleProcessInstance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
 
-        assertProcessInstanceFinished(processInstance, kruntime);
+        KogitoWorkItem workItem = handler.getWorkItem();
+        assertThat(workItem).isNotNull();
+        signalSingleProcessInstance.completeWorkItem(workItem.getStringId(), 
null, SecurityPolicy.of("user", Collections.emptyList()));
+
+        
org.kie.kogito.process.ProcessInstance<IntermediateThrowEventSignalModel> 
throwEventSignalProcessInstance = 
throwEventSignalProcess.createInstance(throwEventSignalProcess.createModel());
+        throwEventSignalProcessInstance.start();
+        
assertThat(throwEventSignalProcessInstance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+        
assertThat(signalSingleProcessInstance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testEventBasedSplit() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-EventBasedSplit.bpmn2");
+    public void testEventBasedSplit() {
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerHandler(app, "Email1", new 
SystemOutWorkItemHandler());
+        ProcessTestHelper.registerHandler(app, "Email2", new 
SystemOutWorkItemHandler());
 
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new SystemOutWorkItemHandler());
-        // Yes
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("EventBasedSplit");
-        assertProcessInstanceActive(processInstance);
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new SystemOutWorkItemHandler());
+        org.kie.kogito.process.Process<EventBasedSplitModel> processDefinition 
= EventBasedSplitProcess.newProcess(app);
+        EventBasedSplitModel model = processDefinition.createModel();
+        org.kie.kogito.process.ProcessInstance<EventBasedSplitModel> instance 
= processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
 
-        Set<EventDescription<?>> eventDescriptions = 
processInstance.getEventDescriptions();
-        
assertThat(eventDescriptions).hasSize(2).extracting("event").contains("Yes", 
"No");
-        
assertThat(eventDescriptions).extracting("eventType").contains("signal");
-        
assertThat(eventDescriptions).extracting("dataType").hasOnlyElementsOfType(NamedDataType.class)
+        Set<EventDescription<?>> eventDescriptions = instance.events();
+        
assertThat(eventDescriptions).hasSize(2).extracting(EventDescription::getEvent).contains("Yes",
 "No");
+        
assertThat(eventDescriptions).extracting(EventDescription::getEventType).contains("signal");
+        
assertThat(eventDescriptions).extracting(EventDescription::getDataType).hasOnlyElementsOfType(NamedDataType.class)
                 
.extracting("dataType").hasOnlyElementsOfType(StringDataType.class);
-        
assertThat(eventDescriptions).extracting("processInstanceId").contains(processInstance.getStringId());
-        
assertThat(eventDescriptions).extracting("nodeInstanceId").doesNotContainNull();
+        
assertThat(eventDescriptions).extracting(EventDescription::getProcessInstanceId).contains(instance.id());
+        
assertThat(eventDescriptions).extracting(EventDescription::getNodeInstanceId).doesNotContainNull();
 
-        kruntime.signalEvent("Yes", "YesValue", processInstance.getStringId());
-        assertProcessInstanceFinished(processInstance, kruntime);
-        // No
-        processInstance = kruntime.startProcess("EventBasedSplit");
-        assertProcessInstanceActive(processInstance);
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new SystemOutWorkItemHandler());
-        kruntime.signalEvent("No", "NoValue", processInstance.getStringId());
-        assertProcessInstanceFinished(processInstance, kruntime);
+        instance.send(Sig.of("Yes", "YesValue"));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
 
+        instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+
+        instance.send(Sig.of("No", "NoValue"));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testEventBasedSplitBefore() throws Exception {
-        // signaling before the split is reached should have no effect
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-EventBasedSplit.bpmn2");
+    public void testEventBasedSplitBefore() {
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerHandler(app, "Email1", new 
DoNothingWorkItemHandler());
+        ProcessTestHelper.registerHandler(app, "Email2", new 
DoNothingWorkItemHandler());
 
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new DoNothingWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new DoNothingWorkItemHandler());
-        // Yes
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("EventBasedSplit");
-        assertProcessInstanceActive(processInstance);
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new DoNothingWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new DoNothingWorkItemHandler());
-        kruntime.signalEvent("Yes", "YesValue", processInstance.getStringId());
-        assertProcessInstanceActive(processInstance);
-        // No
-        processInstance = kruntime.startProcess("EventBasedSplit");
-        assertProcessInstanceActive(processInstance);
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new DoNothingWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new DoNothingWorkItemHandler());
-        kruntime.signalEvent("No", "NoValue", processInstance.getStringId());
-        assertProcessInstanceActive(processInstance);
+        org.kie.kogito.process.Process<EventBasedSplitModel> processDefinition 
= EventBasedSplitProcess.newProcess(app);
+        EventBasedSplitModel model = processDefinition.createModel();
+        org.kie.kogito.process.ProcessInstance<EventBasedSplitModel> instance 
= processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+
+        instance.send(Sig.of("Yes", "YesValue"));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
 
+        instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+
+        instance.send(Sig.of("No", "NoValue"));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
     }
 
     @Test
-    public void testEventBasedSplitAfter() throws Exception {
-        // signaling the other alternative after one has been selected should
-        // have no effect
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-EventBasedSplit.bpmn2");
+    public void testEventBasedSplitAfter() {
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerHandler(app, "Email1", new 
SystemOutWorkItemHandler());
+        ProcessTestHelper.registerHandler(app, "Email2", new 
DoNothingWorkItemHandler());
 
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new DoNothingWorkItemHandler());
-        // Yes
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("EventBasedSplit");
-        assertProcessInstanceActive(processInstance);
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new DoNothingWorkItemHandler());
-        kruntime.signalEvent("Yes", "YesValue", processInstance.getStringId());
-        assertProcessInstanceActive(processInstance);
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new DoNothingWorkItemHandler());
-        // No
-        kruntime.signalEvent("No", "NoValue", processInstance.getStringId());
+        org.kie.kogito.process.Process<EventBasedSplitModel> processDefinition 
= EventBasedSplitProcess.newProcess(app);
+        EventBasedSplitModel model = processDefinition.createModel();
+        org.kie.kogito.process.ProcessInstance<EventBasedSplitModel> instance 
= processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE);
+        instance.send(Sig.of("Yes", "YesValue"));
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE);
 
+        instance.send(Sig.of("No", "NoValue"));
     }
 
     @Test
-    public void testEventBasedSplit2() throws Exception {
-        ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener(
-                2);
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-EventBasedSplit2.bpmn2");
+    public void testEventBasedSplit2() {
+        ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener(2);
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerProcessEventListener(app, countDownListener);
+        ProcessTestHelper.registerHandler(app, "Email1", new 
SystemOutWorkItemHandler());
+        ProcessTestHelper.registerHandler(app, "Email2", new 
SystemOutWorkItemHandler());
 
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new SystemOutWorkItemHandler());
-        kruntime.getProcessEventManager().addEventListener(countDownListener);
-        // Yes
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("EventBasedSplit2");
-        assertProcessInstanceActive(processInstance);
+        org.kie.kogito.process.Process<EventBasedSplit2Model> 
processDefinition = EventBasedSplit2Process.newProcess(app);
+        EventBasedSplit2Model model = processDefinition.createModel();
+        org.kie.kogito.process.ProcessInstance<EventBasedSplit2Model> instance 
= processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
 
-        Set<EventDescription<?>> eventDescriptions = 
processInstance.getEventDescriptions();
+        Set<EventDescription<?>> eventDescriptions = instance.events();
         
assertThat(eventDescriptions).hasSize(2).extracting("event").contains("Yes", 
TIMER_TRIGGERED_EVENT);
         
assertThat(eventDescriptions).extracting("eventType").contains("signal", 
"timer");
         assertThat(eventDescriptions).filteredOn(i -> i.getDataType() != 
null).extracting("dataType")
                 
.hasOnlyElementsOfType(NamedDataType.class).extracting("dataType")
                 .hasOnlyElementsOfType(StringDataType.class);
-        
assertThat(eventDescriptions).extracting("processInstanceId").contains(processInstance.getStringId());
+        
assertThat(eventDescriptions).extracting("processInstanceId").contains(instance.id());
         assertThat(eventDescriptions).filteredOn("eventType", 
"timer").hasSize(1).extracting("properties", Map.class)
                 .anyMatch(m -> m.containsKey("TimerID") && 
m.containsKey("Delay"));
 
-        kruntime.signalEvent("Yes", "YesValue", processInstance.getStringId());
-        assertProcessInstanceFinished(processInstance, kruntime);
-
-        // Timer
-        processInstance = kruntime.startProcess("EventBasedSplit2");
-        assertProcessInstanceActive(processInstance);
+        instance.send(Sig.of("Yes", "YesValue"));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
 
+        instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
         countDownListener.waitTillCompleted();
-
-        assertProcessInstanceFinished(processInstance, kruntime);
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
@@ -499,34 +548,37 @@ public class IntermediateEventTest extends 
JbpmBpmn2TestCase {
     }
 
     @Test
-    public void testEventBasedSplit4() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-EventBasedSplit4.bpmn2");
+    public void testEventBasedSplit4() {
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerHandler(app, "Email1", new 
SystemOutWorkItemHandler());
+        ProcessTestHelper.registerHandler(app, "Email2", new 
SystemOutWorkItemHandler());
 
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new SystemOutWorkItemHandler());
-        // Yes
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("EventBasedSplit4");
-        assertProcessInstanceActive(processInstance);
+        org.kie.kogito.process.Process<EventBasedSplit4Model> 
processDefinition = EventBasedSplit4Process.newProcess(app);
+        EventBasedSplit4Model model = processDefinition.createModel();
+        org.kie.kogito.process.ProcessInstance<EventBasedSplit4Model> instance 
= processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
 
-        Set<EventDescription<?>> eventDescriptions = 
processInstance.getEventDescriptions();
-        
assertThat(eventDescriptions).hasSize(2).extracting("event").contains("Message-YesMessage",
-                "Message-NoMessage");
-        
assertThat(eventDescriptions).extracting("eventType").contains("message", 
"message");
-        
assertThat(eventDescriptions).extracting("dataType").hasOnlyElementsOfType(NamedDataType.class)
-                
.extracting("dataType").hasOnlyElementsOfType(StringDataType.class);
-        
assertThat(eventDescriptions).extracting("processInstanceId").contains(processInstance.getStringId());
+        Set<EventDescription<?>> eventDescriptions = instance.events();
+        assertThat(eventDescriptions).hasSize(2)
+                .extracting(EventDescription::getEvent)
+                .contains("Message-YesMessage", "Message-NoMessage");
+        
assertThat(eventDescriptions).extracting(EventDescription::getEventType)
+                .contains("message", "message");
+        assertThat(eventDescriptions).extracting(EventDescription::getDataType)
+                .hasOnlyElementsOfType(NamedDataType.class);
+        assertThat(eventDescriptions).extracting(event -> ((NamedDataType) 
event.getDataType()).getDataType())
+                .hasOnlyElementsOfType(StringDataType.class);
+        
assertThat(eventDescriptions).extracting(EventDescription::getProcessInstanceId)
+                .contains(instance.id());
 
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new SystemOutWorkItemHandler());
-        kruntime.signalEvent("Message-YesMessage", "YesValue", 
processInstance.getStringId());
-        assertProcessInstanceFinished(processInstance, kruntime);
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new SystemOutWorkItemHandler());
-        // No
-        processInstance = kruntime.startProcess("EventBasedSplit4");
-        kruntime.signalEvent("Message-NoMessage", "NoValue", 
processInstance.getStringId());
-        assertProcessInstanceFinished(processInstance, kruntime);
+        instance.send(Sig.of("Message-YesMessage", "YesValue"));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
 
+        instance = processDefinition.createInstance(model);
+        instance.start();
+        instance.send(Sig.of("Message-NoMessage", "NoValue"));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
@@ -929,6 +981,7 @@ public class IntermediateEventTest extends 
JbpmBpmn2TestCase {
 
             @Override
             public void afterNodeLeft(ProcessNodeLeftEvent event) {
+
                 @SuppressWarnings("unchecked")
                 Map<String, String> variable = (Map<String, String>) 
event.getNodeInstance().getVariable("richiesta");
                 if (variable != null) {
@@ -1040,7 +1093,6 @@ public class IntermediateEventTest extends 
JbpmBpmn2TestCase {
         countDownListener.waitTillCompleted();
 
         assertProcessInstanceFinished(processInstance, kruntime);
-
     }
 
     @Test
@@ -1062,35 +1114,39 @@ public class IntermediateEventTest extends 
JbpmBpmn2TestCase {
     }
 
     @Test
-    public void testTimerBoundaryEventCycle1() throws Exception {
-        ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener();
-
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/timer/BPMN2-TimerBoundaryEventCycle1.bpmn2");
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("MyTask", 
new DoNothingWorkItemHandler());
-        kruntime.getProcessEventManager().addEventListener(countDownListener);
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("TimerBoundaryEventCycle1");
-        assertProcessInstanceActive(processInstance);
-        countDownListener.waitTillCompleted();
+    public void testTimerBoundaryEventCycle1() {
+        ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener(2);
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerHandler(app, "MyTask", new 
DoNothingWorkItemHandler());
+        ProcessTestHelper.registerProcessEventListener(app, countDownListener);
 
-        assertProcessInstanceFinished(processInstance, kruntime);
+        org.kie.kogito.process.Process<TimerBoundaryEventCycle1Model> 
processDefinition = TimerBoundaryEventCycle1Process.newProcess(app);
+        TimerBoundaryEventCycle1Model model = processDefinition.createModel();
+        org.kie.kogito.process.ProcessInstance<TimerBoundaryEventCycle1Model> 
instance = processDefinition.createInstance(model);
+        instance.start();
 
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+        countDownListener.waitTillCompleted();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testTimerBoundaryEventCycle2() throws Exception {
-        NodeLeftCountDownProcessEventListener countDownListener = new 
NodeLeftCountDownProcessEventListener(
-                "TimerEvent", 3);
-
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/timer/BPMN2-TimerBoundaryEventCycle2.bpmn2");
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("MyTask", 
new DoNothingWorkItemHandler());
-        kruntime.getProcessEventManager().addEventListener(countDownListener);
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("TimerBoundaryEventCycle2");
-        assertProcessInstanceActive(processInstance);
-        countDownListener.waitTillCompleted();
+    public void testTimerBoundaryEventCycle2() {
+        NodeLeftCountDownProcessEventListener countDownListener = new 
NodeLeftCountDownProcessEventListener("TimerEvent", 3);
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerHandler(app, "MyTask", new 
DoNothingWorkItemHandler());
+        ProcessTestHelper.registerProcessEventListener(app, countDownListener);
 
-        assertProcessInstanceActive(processInstance);
-        kruntime.abortProcessInstance(processInstance.getStringId());
+        org.kie.kogito.process.Process<TimerBoundaryEventCycle2Model> 
processDefinition = TimerBoundaryEventCycle2Process.newProcess(app);
+        TimerBoundaryEventCycle2Model model = processDefinition.createModel();
+        org.kie.kogito.process.ProcessInstance<TimerBoundaryEventCycle2Model> 
instance = processDefinition.createInstance(model);
+        instance.start();
 
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+        countDownListener.waitTillCompleted();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+        instance.abort();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ABORTED);
     }
 
     @Test
@@ -1109,62 +1165,59 @@ public class IntermediateEventTest extends 
JbpmBpmn2TestCase {
     }
 
     @Test
-    public void testTimerBoundaryEventInterrupting() throws Exception {
-        ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener();
+    public void testTimerBoundaryEventInterrupting() {
+        ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener(2);
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerHandler(app, "MyTask", new 
DoNothingWorkItemHandler());
+        ProcessTestHelper.registerProcessEventListener(app, countDownListener);
 
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/timer/BPMN2-TimerBoundaryEventInterrupting.bpmn2");
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("MyTask", 
new DoNothingWorkItemHandler());
-        kruntime.getProcessEventManager().addEventListener(countDownListener);
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("TimerBoundaryEventInterrupting");
-        assertProcessInstanceActive(processInstance);
+        org.kie.kogito.process.Process<TimerBoundaryEventInterruptingModel> 
processDefinition = TimerBoundaryEventInterruptingProcess.newProcess(app);
+        TimerBoundaryEventInterruptingModel model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<TimerBoundaryEventInterruptingModel> 
instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
 
         countDownListener.waitTillCompleted();
-
         logger.debug("Firing timer");
-
-        assertProcessInstanceFinished(processInstance, kruntime);
-
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testTimerBoundaryEventInterruptingOnTask() throws Exception {
-        ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener();
+    public void testTimerBoundaryEventInterruptingOnTask() {
+        ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener(2); // Expecting 2 completion 
events
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerHandler(app, "Human Task", new 
TestWorkItemHandler());
+        ProcessTestHelper.registerProcessEventListener(app, countDownListener);
 
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/timer/BPMN2-TimerBoundaryEventInterruptingOnTask.bpmn2");
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", new TestWorkItemHandler());
-        kruntime.getProcessEventManager().addEventListener(countDownListener);
+        
org.kie.kogito.process.Process<TimerBoundaryEventInterruptingOnTaskModel> 
processDefinition = TimerBoundaryEventInterruptingOnTaskProcess.newProcess(app);
+        TimerBoundaryEventInterruptingOnTaskModel model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<TimerBoundaryEventInterruptingOnTaskModel>
 instance = processDefinition.createInstance(model);
+        instance.start();
 
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("TimerBoundaryEventInterruptingOnTask");
-        assertProcessInstanceActive(processInstance);
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE);
         countDownListener.waitTillCompleted();
-
         logger.debug("Firing timer");
-
-        assertProcessInstanceFinished(processInstance, kruntime);
-
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testTimerBoundaryEventInterruptingOnTaskCancelTimer() throws 
Exception {
-        kruntime = createKogitoProcessRuntime(
-                
"org/jbpm/bpmn2/timer/BPMN2-TimerBoundaryEventInterruptingOnTaskCancelTimer.bpmn2");
+    public void testTimerBoundaryEventInterruptingOnTaskCancelTimer() {
+        Application app = ProcessTestHelper.newApplication();
         TestWorkItemHandler handler = new TestWorkItemHandler();
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", handler);
-        KogitoProcessInstance processInstance = kruntime
-                
.startProcess("TimerBoundaryEventInterruptingOnTaskCancelTimer");
-        assertProcessInstanceActive(processInstance);
-
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", handler);
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(handler.getWorkItem().getStringId(),
 null);
-
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", handler);
+        ProcessTestHelper.registerHandler(app, "Human Task", handler);
+        
org.kie.kogito.process.Process<TimerBoundaryEventInterruptingOnTaskCancelTimerModel>
 processDefinition = 
TimerBoundaryEventInterruptingOnTaskCancelTimerProcess.newProcess(app);
+        TimerBoundaryEventInterruptingOnTaskCancelTimerModel model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<TimerBoundaryEventInterruptingOnTaskCancelTimerModel>
 instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE);
         KogitoWorkItem workItem = handler.getWorkItem();
-        if (workItem != null) {
-            
kruntime.getKogitoWorkItemManager().completeWorkItem(workItem.getStringId(), 
null);
-        }
-
-        assertProcessInstanceFinished(processInstance, kruntime);
+        assertThat(workItem).isNotNull();
+        instance.completeWorkItem(workItem.getStringId(), null);
+        workItem = handler.getWorkItem();
+        assertThat(workItem).isNotNull();
+        instance.completeWorkItem(workItem.getStringId(), null);
 
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
@@ -1182,136 +1235,142 @@ public class IntermediateEventTest extends 
JbpmBpmn2TestCase {
     }
 
     @Test
-    public void testIntermediateCatchEventMessage() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventMessage.bpmn2");
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", new SystemOutWorkItemHandler());
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("IntermediateCatchEventMessage");
-        assertProcessInstanceActive(processInstance); // now signal process 
instance
-        kruntime.signalEvent("Message-HelloMessage", "SomeValue", 
processInstance.getStringId());
-        assertProcessInstanceFinished(processInstance, kruntime);
-
+    public void testIntermediateCatchEventMessage() {
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerHandler(app, "Human Task", new 
SystemOutWorkItemHandler());
+        org.kie.kogito.process.Process<IntermediateCatchEventMessageModel> 
processDefinition = IntermediateCatchEventMessageProcess.newProcess(app);
+        IntermediateCatchEventMessageModel model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<IntermediateCatchEventMessageModel> 
instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE);
+        instance.send(Sig.of("Message-HelloMessage", "SomeValue"));
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testIntermediateCatchEventMessageWithRef() throws Exception {
-        kruntime = createKogitoProcessRuntime(
-                
"org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventMessageWithRef.bpmn2");
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", new SystemOutWorkItemHandler());
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("IntermediateCatchEventMessageWithRef");
-        assertProcessInstanceActive(processInstance);
-
-        // now signal process instance
-        kruntime.signalEvent("Message-HelloMessage", "SomeValue", 
processInstance.getStringId());
-        assertProcessInstanceFinished(processInstance, kruntime);
-
+    public void testIntermediateCatchEventMessageWithRef() {
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerHandler(app, "Human Task", new 
SystemOutWorkItemHandler());
+        
org.kie.kogito.process.Process<IntermediateCatchEventMessageWithRefModel> 
processDefinition = IntermediateCatchEventMessageWithRefProcess.newProcess(app);
+        IntermediateCatchEventMessageWithRefModel model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<IntermediateCatchEventMessageWithRefModel>
 instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE);
+        instance.send(Sig.of("Message-HelloMessage", "SomeValue"));
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testIntermediateCatchEventTimerDuration() throws Exception {
-        ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener();
+    public void testIntermediateCatchEventTimerDuration() {
 
-        kruntime = createKogitoProcessRuntime(
-                
"org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerDuration.bpmn2");
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", new DoNothingWorkItemHandler());
-        kruntime.getProcessEventManager().addEventListener(countDownListener);
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("IntermediateCatchEventTimerDuration");
-        assertProcessInstanceActive(processInstance);
+        Application app = ProcessTestHelper.newApplication();
 
-        // now wait for 1 second for timer to trigger
-        countDownListener.waitTillCompleted();
+        ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener(1);
+        ProcessTestHelper.registerProcessEventListener(app, countDownListener);
+        ProcessTestHelper.registerHandler(app, "Human Task", new 
DoNothingWorkItemHandler());
 
-        assertProcessInstanceFinished(processInstance, kruntime);
+        
org.kie.kogito.process.Process<IntermediateCatchEventTimerDurationModel> 
processDefinition = IntermediateCatchEventTimerDurationProcess.newProcess(app);
+        IntermediateCatchEventTimerDurationModel model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<IntermediateCatchEventTimerDurationModel>
 instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE);
+        countDownListener.waitTillCompleted();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testIntermediateCatchEventTimerDateISO() throws Exception {
+    public void testIntermediateCatchEventTimerDateISO() {
+        Application app = ProcessTestHelper.newApplication();
         ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener();
+        ProcessTestHelper.registerProcessEventListener(app, countDownListener);
+        ProcessTestHelper.registerHandler(app, "Human Task", new 
DoNothingWorkItemHandler());
 
-        kruntime = createKogitoProcessRuntime(
-                
"org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerDateISO.bpmn2");
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", new DoNothingWorkItemHandler());
-        kruntime.getProcessEventManager().addEventListener(countDownListener);
-
-        HashMap<String, Object> params = new HashMap<>();
+        
org.kie.kogito.process.Process<IntermediateCatchEventTimerDateISOModel> 
processDefinition = IntermediateCatchEventTimerDateISOProcess.newProcess(app);
+        IntermediateCatchEventTimerDateISOModel model = 
processDefinition.createModel();
         OffsetDateTime plusTwoSeconds = OffsetDateTime.now().plusSeconds(2);
-        params.put("date", plusTwoSeconds.toString());
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("IntermediateCatchEventTimerDateISO", params);
-        assertProcessInstanceActive(processInstance);
-        // now wait for 1 second for timer to trigger
-        countDownListener.waitTillCompleted();
+        model.setDate(plusTwoSeconds.toString());
+        
org.kie.kogito.process.ProcessInstance<IntermediateCatchEventTimerDateISOModel> 
instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE);
 
-        assertProcessInstanceFinished(processInstance, kruntime);
+        boolean completed = countDownListener.waitTillCompleted(3000);
+        assertThat(completed).isTrue();
 
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testIntermediateCatchEventTimerDurationISO() throws Exception {
-        ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener();
-
-        kruntime = createKogitoProcessRuntime(
-                
"org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerDurationISO.bpmn2");
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", new DoNothingWorkItemHandler());
-        kruntime.getProcessEventManager().addEventListener(countDownListener);
+    public void testIntermediateCatchEventTimerDurationISO() {
+        Application app = ProcessTestHelper.newApplication();
 
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("IntermediateCatchEventTimerDurationISO");
-        assertProcessInstanceActive(processInstance);
-        // now wait for 1.5 second for timer to trigger
-        countDownListener.waitTillCompleted();
+        ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener();
+        ProcessTestHelper.registerProcessEventListener(app, countDownListener);
+        ProcessTestHelper.registerHandler(app, "Human Task", new 
DoNothingWorkItemHandler());
 
-        assertProcessInstanceFinished(processInstance, kruntime);
+        
org.kie.kogito.process.Process<IntermediateCatchEventTimerDurationISOModel> 
processDefinition = 
IntermediateCatchEventTimerDurationISOProcess.newProcess(app);
+        IntermediateCatchEventTimerDurationISOModel model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<IntermediateCatchEventTimerDurationISOModel>
 instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE);
+        boolean completed = countDownListener.waitTillCompleted(2000);
+        assertThat(completed).isTrue();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testIntermediateCatchEventTimerCycle1() throws Exception {
-        ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener();
-
-        kruntime = createKogitoProcessRuntime(
-                
"org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerCycle1.bpmn2");
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", new DoNothingWorkItemHandler());
-        kruntime.getProcessEventManager().addEventListener(countDownListener);
-
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("IntermediateCatchEventTimerCycle1");
-        assertProcessInstanceActive(processInstance);
-        // now wait for 1 second for timer to trigger
-        countDownListener.waitTillCompleted();
+    public void testIntermediateCatchEventTimerCycle1() {
+        Application app = ProcessTestHelper.newApplication();
+        ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener(); // Expecting 1 completion event
+        ProcessTestHelper.registerProcessEventListener(app, countDownListener);
+        ProcessTestHelper.registerHandler(app, "Human Task", new 
DoNothingWorkItemHandler());
 
-        assertProcessInstanceFinished(processInstance, kruntime);
+        org.kie.kogito.process.Process<IntermediateCatchEventTimerCycle1Model> 
processDefinition = IntermediateCatchEventTimerCycle1Process.newProcess(app);
+        IntermediateCatchEventTimerCycle1Model model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<IntermediateCatchEventTimerCycle1Model> 
instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE);
+        boolean completed = countDownListener.waitTillCompleted(2000); // Wait 
for up to 2 seconds
+        assertThat(completed).isTrue();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testIntermediateCatchEventTimerCycleISO() throws Exception {
+    public void testIntermediateCatchEventTimerCycleISO() {
+        Application app = ProcessTestHelper.newApplication();
         NodeLeftCountDownProcessEventListener countDownListener = new 
NodeLeftCountDownProcessEventListener("timer", 5);
-
-        kruntime = createKogitoProcessRuntime(
-                
"org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerCycleISO.bpmn2");
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", new DoNothingWorkItemHandler());
-        kruntime.getProcessEventManager().addEventListener(countDownListener);
-
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("IntermediateCatchEventTimerCycleISO");
-        assertProcessInstanceActive(processInstance);
-
-        countDownListener.waitTillCompleted();
-        assertProcessInstanceActive(processInstance);
-        kruntime.abortProcessInstance(processInstance.getStringId());
-
+        ProcessTestHelper.registerProcessEventListener(app, countDownListener);
+        ProcessTestHelper.registerHandler(app, "Human Task", new 
DoNothingWorkItemHandler());
+        
org.kie.kogito.process.Process<IntermediateCatchEventTimerCycleISOModel> 
processDefinition = IntermediateCatchEventTimerCycleISOProcess.newProcess(app);
+        IntermediateCatchEventTimerCycleISOModel model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<IntermediateCatchEventTimerCycleISOModel>
 instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE);
+        boolean completed = countDownListener.waitTillCompleted();
+        assertThat(completed).isTrue();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE);
+        instance.abort();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ABORTED);
     }
 
     @Test
-    public void testIntermediateCatchEventTimerCycle2() throws Exception {
+    public void testIntermediateCatchEventTimerCycle2() {
+        Application app = ProcessTestHelper.newApplication();
         NodeLeftCountDownProcessEventListener countDownListener = new 
NodeLeftCountDownProcessEventListener("timer", 3);
+        ProcessTestHelper.registerProcessEventListener(app, countDownListener);
+        ProcessTestHelper.registerHandler(app, "Human Task", new 
DoNothingWorkItemHandler());
 
-        kruntime = createKogitoProcessRuntime(
-                
"org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerCycle2.bpmn2");
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", new DoNothingWorkItemHandler());
-        kruntime.getProcessEventManager().addEventListener(countDownListener);
+        org.kie.kogito.process.Process<IntermediateCatchEventTimerCycle2Model> 
processDefinition = IntermediateCatchEventTimerCycle2Process.newProcess(app);
+        IntermediateCatchEventTimerCycle2Model model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<IntermediateCatchEventTimerCycle2Model> 
instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE);
 
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("IntermediateCatchEventTimerCycle2");
-        assertProcessInstanceActive(processInstance);
         // now wait for 1 second for timer to trigger
-        countDownListener.waitTillCompleted();
-        assertProcessInstanceActive(processInstance);
-        kruntime.abortProcessInstance(processInstance.getStringId());
-
+        boolean completed = countDownListener.waitTillCompleted(); // Wait for 
up to 10 seconds
+        assertThat(completed).isTrue();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE);
+        instance.abort();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ABORTED);
     }
 
     @Test
@@ -1434,27 +1493,34 @@ public class IntermediateEventTest extends 
JbpmBpmn2TestCase {
     }
 
     @Test
-    public void testNoneIntermediateThrow() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-IntermediateThrowEventNone.bpmn2");
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("IntermediateThrowEventNone");
-        assertProcessInstanceCompleted(processInstance);
-
+    public void testNoneIntermediateThrow() {
+        Application app = ProcessTestHelper.newApplication();
+        org.kie.kogito.process.Process<IntermediateThrowEventNoneModel> 
processDefinition = IntermediateThrowEventNoneProcess.newProcess(app);
+        IntermediateThrowEventNoneModel model = 
processDefinition.createModel();
+        
org.kie.kogito.process.ProcessInstance<IntermediateThrowEventNoneModel> 
instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testLinkIntermediateEvent() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-IntermediateLinkEvent.bpmn2");
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("IntermediateLinkEvent");
-        assertProcessInstanceCompleted(processInstance);
-
+    public void testLinkIntermediateEvent() {
+        Application app = ProcessTestHelper.newApplication();
+        org.kie.kogito.process.Process<IntermediateLinkEventModel> 
processDefinition = IntermediateLinkEventProcess.newProcess(app);
+        IntermediateLinkEventModel model = processDefinition.createModel();
+        org.kie.kogito.process.ProcessInstance<IntermediateLinkEventModel> 
instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED);
     }
 
     @Test
-    public void testLinkEventCompositeProcess() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-LinkEventCompositeProcess.bpmn2");
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("LinkEventCompositeProcess");
-        assertProcessInstanceCompleted(processInstance);
+    public void testLinkEventCompositeProcess() {
+        Application app = ProcessTestHelper.newApplication();
 
+        org.kie.kogito.process.Process<LinkEventCompositeProcessModel> 
processDefinition = LinkEventCompositeProcessProcess.newProcess(app);
+        LinkEventCompositeProcessModel model = processDefinition.createModel();
+        org.kie.kogito.process.ProcessInstance<LinkEventCompositeProcessModel> 
instance = processDefinition.createInstance(model);
+        instance.start();
+        
assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED);
     }
 
     @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to