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]