This is an automated email from the ASF dual-hosted git repository.

mweiler 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 3ecc10d999 [incubator-kie-issues#1719] Enable onEntry/onExit scripts 
in embedded nodes (#3815)
3ecc10d999 is described below

commit 3ecc10d9994c057ecbddbfa4ee216896ccd0d9e7
Author: Martin Weiler <[email protected]>
AuthorDate: Fri Dec 20 13:38:38 2024 -0700

    [incubator-kie-issues#1719] Enable onEntry/onExit scripts in embedded nodes 
(#3815)
    
    * [incubator-kie-issues#1719] Enable onEntry/onExit scripts in embedded 
nodes
    
    * Fix process to use java syntax for the onEntry script
    
    * Remove outdated comment
---
 .../canonical/AbstractCompositeNodeVisitor.java    |  2 +-
 .../compiler/canonical/AbstractNodeVisitor.java    |  4 +-
 .../jbpm/compiler/canonical/ProcessVisitor.java    |  2 +-
 ...cteristicsTaskWithOutputCmpCondSequential.bpmn2 |  6 +--
 .../src/test/java/org/jbpm/bpmn2/FlowTest.java     | 44 +++++++++++-----------
 5 files changed, 30 insertions(+), 28 deletions(-)

diff --git 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractCompositeNodeVisitor.java
 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractCompositeNodeVisitor.java
index fd7b95c445..b013e53264 100644
--- 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractCompositeNodeVisitor.java
+++ 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractCompositeNodeVisitor.java
@@ -40,7 +40,7 @@ public abstract class AbstractCompositeNodeVisitor<T extends 
CompositeContextNod
             if (visitor == null) {
                 continue;
             }
-            visitor.visitNode(factoryField, node, body, variableScope, 
metadata);
+            visitor.visitNodeEntryPoint(factoryField, node, body, 
variableScope, metadata);
         }
     }
 
diff --git 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractNodeVisitor.java
 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractNodeVisitor.java
index 1946318d05..d54eafedc3 100644
--- 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractNodeVisitor.java
+++ 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractNodeVisitor.java
@@ -114,8 +114,8 @@ public abstract class AbstractNodeVisitor<T extends Node> 
extends AbstractVisito
         return returnValueEvaluatorBuilderService;
     }
 
-    public void visitNode(T node, BlockStmt body, VariableScope variableScope, 
ProcessMetaData metadata) {
-        visitNode(FACTORY_FIELD_NAME, node, body, variableScope, metadata);
+    public void visitNodeEntryPoint(String factoryName, T node, BlockStmt 
body, VariableScope variableScope, ProcessMetaData metadata) {
+        visitNode((factoryName != null ? factoryName : FACTORY_FIELD_NAME), 
node, body, variableScope, metadata);
         if (isAdHocNode(node)) {
             metadata.addSignal(node.getName(), null);
         }
diff --git 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ProcessVisitor.java
 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ProcessVisitor.java
index 39605eafc5..0883e0d0ec 100644
--- 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ProcessVisitor.java
+++ 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ProcessVisitor.java
@@ -230,7 +230,7 @@ public class ProcessVisitor extends AbstractVisitor {
             if (visitor == null) {
                 throw new IllegalStateException("No visitor found for node " + 
node.getClass().getName());
             }
-            visitor.visitNode(node, body, variableScope, metadata);
+            visitor.visitNodeEntryPoint(null, node, body, variableScope, 
metadata);
         }
     }
 
diff --git 
a/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/loop/BPMN2-MultiInstanceLoopCharacteristicsTaskWithOutputCmpCondSequential.bpmn2
 
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/loop/BPMN2-MultiInstanceLoopCharacteristicsTaskWithOutputCmpCondSequential.bpmn2
index 0b8a32113a..284b56fc3d 100644
--- 
a/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/loop/BPMN2-MultiInstanceLoopCharacteristicsTaskWithOutputCmpCondSequential.bpmn2
+++ 
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/loop/BPMN2-MultiInstanceLoopCharacteristicsTaskWithOutputCmpCondSequential.bpmn2
@@ -45,8 +45,8 @@
     <startEvent id="_1" name="StartProcess" />
     <userTask id="_2" name="Hello" tns:taskName="Human Task">
       <extensionElements>
-        <tns:onEntry-script>
-          
<tns:script>System.out.println("Hello");context.setVariable("itemOut", 
"test");</tns:script>
+        <tns:onEntry-script scriptFormat="http://www.java.com/java";>
+          
<tns:script>System.out.println("Hello");kcontext.setVariable("itemOut", 
"test");</tns:script>
         </tns:onEntry-script>
       </extensionElements>
       <ioSpecification>
@@ -122,4 +122,4 @@
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 
-</definitions>
\ No newline at end of file
+</definitions>
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/FlowTest.java 
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/FlowTest.java
index 1d36f6f335..4da5bd3497 100755
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/FlowTest.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/FlowTest.java
@@ -57,6 +57,8 @@ import 
org.jbpm.bpmn2.flow.InclusiveGatewayWithHumanTasksProcessModel;
 import org.jbpm.bpmn2.flow.InclusiveGatewayWithHumanTasksProcessProcess;
 import org.jbpm.bpmn2.flow.InclusiveGatewayWithLoopInsideModel;
 import org.jbpm.bpmn2.flow.InclusiveGatewayWithLoopInsideProcess;
+import org.jbpm.bpmn2.flow.InclusiveGatewayWithLoopInsideSubprocessModel;
+import org.jbpm.bpmn2.flow.InclusiveGatewayWithLoopInsideSubprocessProcess;
 import org.jbpm.bpmn2.flow.InclusiveNestedInParallelNestedInExclusiveModel;
 import org.jbpm.bpmn2.flow.InclusiveNestedInParallelNestedInExclusiveProcess;
 import org.jbpm.bpmn2.flow.InclusiveSplitAndJoinEmbeddedModel;
@@ -846,12 +848,10 @@ public class FlowTest extends JbpmBpmn2TestCase {
     }
 
     @Test
-    @Disabled("On Exit not supported, see 
https://issues.redhat.com/browse/KOGITO-2067";)
     public void testInclusiveSplitWithLoopInsideSubprocess() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/flow/BPMN2-InclusiveGatewayWithLoopInsideSubprocess.bpmn2");
-
+        Application app = ProcessTestHelper.newApplication();
         final Map<String, Integer> nodeInstanceExecutionCounter = new 
HashMap<>();
-        kruntime.getProcessEventManager().addEventListener(new 
DefaultKogitoProcessEventListener() {
+        ProcessTestHelper.registerProcessEventListener(app, new 
DefaultKogitoProcessEventListener() {
 
             @Override
             public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) {
@@ -866,30 +866,32 @@ public class FlowTest extends JbpmBpmn2TestCase {
             }
 
         });
+
         TestWorkItemHandler handler = new TestWorkItemHandler();
         TestWorkItemHandler handler2 = new TestWorkItemHandler();
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("testWI", 
handler);
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("testWI2", 
handler2);
-        Map<String, Object> params = new HashMap<>();
-        params.put("x", -1);
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("InclusiveGatewayWithLoopInsideSubprocess", params);
+        ProcessTestHelper.registerHandler(app, "testWI", handler);
+        ProcessTestHelper.registerHandler(app, "testWI2", handler2);
 
-        assertProcessInstanceActive(processInstance);
+        Process<InclusiveGatewayWithLoopInsideSubprocessModel> process = 
InclusiveGatewayWithLoopInsideSubprocessProcess.newProcess(app);
+        InclusiveGatewayWithLoopInsideSubprocessModel model = 
process.createModel();
+        model.setX(-1);
+        ProcessInstance<InclusiveGatewayWithLoopInsideSubprocessModel> 
instance = process.createInstance(model);
+        instance.start();
+
+        assertThat(instance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
         List<KogitoWorkItem> workItems = handler.getWorkItems();
         assertThat(workItems).isNotNull().hasSize(2);
-
         for (KogitoWorkItem wi : workItems) {
-            assertProcessInstanceActive(processInstance);
-            
kruntime.getKogitoWorkItemManager().completeWorkItem(wi.getStringId(), null);
+            
assertThat(instance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
+            instance.completeWorkItem(wi.getStringId(), null);
         }
-
-        assertProcessInstanceActive(processInstance);
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(handler2.getWorkItem().getStringId(),
 null);
-        assertProcessInstanceActive(processInstance);
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(handler2.getWorkItem().getStringId(),
 null);
-        assertProcessInstanceActive(processInstance);
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(handler.getWorkItem().getStringId(),
 null);
-        assertProcessInstanceCompleted(processInstance);
+        assertThat(instance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
+        instance.completeWorkItem(handler2.getWorkItem().getStringId(), null);
+        assertThat(instance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
+        instance.completeWorkItem(handler2.getWorkItem().getStringId(), null);
+        assertThat(instance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
+        instance.completeWorkItem(handler.getWorkItem().getStringId(), null);
+        
assertThat(instance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
         assertThat(nodeInstanceExecutionCounter).hasSize(13);
         assertThat((int) 
nodeInstanceExecutionCounter.get("Start")).isEqualTo(1);
         assertThat((int) nodeInstanceExecutionCounter.get("Sub Process 
1")).isEqualTo(1);


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

Reply via email to