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

ricardozanini 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 2eaf85cf3a [Fix #4027] Fixing EventDataFilter for starting events 
(#4033)
2eaf85cf3a is described below

commit 2eaf85cf3ac810ac5fc60599b371054aa0e6efe1
Author: Francisco Javier Tirado Sarti 
<[email protected]>
AuthorDate: Mon Aug 25 17:10:55 2025 +0200

    [Fix #4027] Fixing EventDataFilter for starting events (#4033)
---
 .rat-excludes                                      |   4 +-
 .../workflow/parser/handlers/EventHandler.java     |  37 ++
 .../workflow/parser/handlers/NodeFactoryUtils.java |   4 +-
 .../workflow/parser/handlers/StateHandler.java     |  22 +-
 .../workflow/parser/types/ServiceTypeHandler.java  |   2 +-
 .../suppliers/SetCollectorActionSupplier.java      |  43 +++
 .../suppliers/SetExpressionActionSupplier.java     |  44 +++
 .../workflow/suppliers/SetValueActionSupplier.java |  45 +++
 .../serverless/workflow/utils/WorkItemBuilder.java |   2 +-
 .../workflow/ServerlessWorkflowParsingTest.java    | 384 ---------------------
 .../SwitchStateServerlessWorkflowParsingTest.java  | 162 ---------
 ...CallbackStateServerlessWorkflowParsingTest.java |  91 -----
 ...ectorAction.java => AssignCollectorAction.java} |   6 +-
 .../workflow/actions/CollectorAction.java          |   4 +-
 ...ollectorAction.java => SetCollectorAction.java} |  13 +-
 ...llectorAction.java => SetExpressionAction.java} |   8 +-
 .../{CollectorAction.java => SetValueAction.java}  |  16 +-
 .../src/main/resources/application.properties      |   8 +
 .../src/main/resources/helloworldevent.sw.yaml     |  35 ++
 .../SwitchStateEventConditionBasedIT.java          |  19 +-
 20 files changed, 274 insertions(+), 675 deletions(-)

diff --git a/.rat-excludes b/.rat-excludes
index 13e313bd27..fccd4bcb0a 100644
--- a/.rat-excludes
+++ b/.rat-excludes
@@ -154,6 +154,8 @@ adult.txt
 drl1.txt
 # 
quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/main/resources/long-call.sw.yaml
 long-call.sw.yaml
+# 
quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/main/resources/helloworldevent.sw.yaml
+helloworldevent.sw.yaml
 # 
quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/test/resources/__snapshots__/ServerlessWorkflowCodestartTest/testContent/src_test_resources_application.yml
 src_test_resources_application.yml
 # 
quarkus/integration-tests/integration-tests-quarkus-norest/src/main/resources/PMMLRegression.pmml
@@ -219,4 +221,4 @@ PMMLRegression.pmml
 # 
springboot/integration-tests/integration-tests-springboot-processes-persistence-it/integration-tests-springboot-processes-persistence-common/.gitignore
 .gitignore
 # 
springboot/integration-tests/integration-tests-springboot-processes-persistence-it/integration-tests-springboot-processes-persistence-common/src/main/resources/transactional_error.bpmn
-transactional_error.bpmn
\ No newline at end of file
+transactional_error.bpmn
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/EventHandler.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/EventHandler.java
index 7aa2b2eaf5..005f754a86 100644
--- 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/EventHandler.java
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/EventHandler.java
@@ -29,12 +29,19 @@ import org.jbpm.ruleflow.core.factory.SplitFactory;
 import org.jbpm.ruleflow.core.factory.StartNodeFactory;
 import org.jbpm.workflow.core.node.Join;
 import org.jbpm.workflow.core.node.Split;
+import org.kie.kogito.jackson.utils.ObjectMapperFactory;
 import org.kie.kogito.serverless.workflow.parser.ParserContext;
+import 
org.kie.kogito.serverless.workflow.parser.handlers.StateHandler.FilterableNodeSupplier;
+import org.kie.kogito.serverless.workflow.suppliers.SetCollectorActionSupplier;
+import 
org.kie.kogito.serverless.workflow.suppliers.SetExpressionActionSupplier;
+import org.kie.kogito.serverless.workflow.suppliers.SetValueActionSupplier;
 
 import io.serverlessworkflow.api.Workflow;
 import io.serverlessworkflow.api.events.OnEvents;
+import io.serverlessworkflow.api.filters.EventDataFilter;
 import io.serverlessworkflow.api.states.EventState;
 
+import static 
org.kie.kogito.serverless.workflow.parser.ServerlessWorkflowParser.DEFAULT_WORKFLOW_VAR;
 import static 
org.kie.kogito.serverless.workflow.parser.handlers.NodeFactoryUtils.startMessageNode;
 
 public class EventHandler extends CompositeContextNodeHandler<EventState> {
@@ -61,6 +68,36 @@ public class EventHandler extends 
CompositeContextNodeHandler<EventState> {
         }
     }
 
+    @Override
+    protected final MakeNodeResult 
filterAndMergeNode(RuleFlowNodeContainerFactory<?, ?> embeddedSubProcess, 
EventDataFilter eventFilter, String varName,
+            FilterableNodeSupplier nodeSupplier) {
+        if (isStartState) {
+            NodeFactory<?, ?> startNode = 
nodeSupplier.apply(embeddedSubProcess, DEFAULT_WORKFLOW_VAR, varName);
+            NodeFactory<?, ?> currentNode = startNode;
+            if (eventFilter != null) {
+                if (!eventFilter.isUseData()) {
+                    currentNode = connect(currentNode, 
embeddedSubProcess.actionNode(parserContext.newId())
+                            .action(new 
SetValueActionSupplier(DEFAULT_WORKFLOW_VAR, 
ObjectMapperFactory.get().createObjectNode())));
+                } else {
+                    String dataExpr = eventFilter.getData();
+                    if (dataExpr != null) {
+                        currentNode = connect(currentNode, 
embeddedSubProcess.actionNode(parserContext.newId())
+                                .action(new 
SetExpressionActionSupplier(workflow.getExpressionLang(), dataExpr, 
DEFAULT_WORKFLOW_VAR, DEFAULT_WORKFLOW_VAR)));
+                    }
+
+                    String toStateExpr = eventFilter.getToStateData();
+                    if (toStateExpr != null) {
+                        currentNode = connect(currentNode, 
embeddedSubProcess.actionNode(parserContext.newId())
+                                .action(new 
SetCollectorActionSupplier(workflow.getExpressionLang(), toStateExpr, 
DEFAULT_WORKFLOW_VAR, DEFAULT_WORKFLOW_VAR)));
+                    }
+                }
+            }
+            return new MakeNodeResult(startNode, currentNode);
+        } else {
+            return super.filterAndMergeNode(embeddedSubProcess, eventFilter, 
varName, nodeSupplier);
+        }
+    }
+
     private MakeNodeResult processOnEvent(RuleFlowNodeContainerFactory<?, ?> 
factory, OnEvents onEvent) {
         MakeNodeResult result = joinNodes(factory,
                 onEvent.getEventRefs(), (fact, onEventRef) -> 
filterAndMergeNode(fact, onEvent.getEventDataFilter(), getVarName(),
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/NodeFactoryUtils.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/NodeFactoryUtils.java
index ab2b73b91c..9c093bf471 100644
--- 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/NodeFactoryUtils.java
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/NodeFactoryUtils.java
@@ -68,12 +68,12 @@ public class NodeFactoryUtils {
                 .defaultContext(variableScope);
     }
 
-    public static <T extends NodeFactory<T, P>, P extends 
RuleFlowNodeContainerFactory<P, ?>> T sendEventNode(NodeFactory<T, P> 
actionNode,
+    public static NodeFactory<?, ?> sendEventNode(NodeFactory<?, ?> actionNode,
             EventDefinition eventDefinition, String inputVar) {
         return sendEventNode(actionNode, eventDefinition.getName(), 
eventDefinition.getType(), inputVar);
     }
 
-    public static <T extends NodeFactory<T, P>, P extends 
RuleFlowNodeContainerFactory<P, ?>> T sendEventNode(NodeFactory<T, P> 
actionNode, String name,
+    public static NodeFactory<?, ?> sendEventNode(NodeFactory<?, ?> 
actionNode, String name,
             String type, String inputVar) {
         return actionNode
                 .name(name)
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/StateHandler.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/StateHandler.java
index 51f90a079f..ca331c15df 100644
--- 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/StateHandler.java
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/StateHandler.java
@@ -429,7 +429,7 @@ public abstract class StateHandler<S extends State> {
         return filterAndMergeNode(embeddedSubProcess, eventFilter, 
getVarName(), nodeSupplier);
     }
 
-    protected final MakeNodeResult 
filterAndMergeNode(RuleFlowNodeContainerFactory<?, ?> embeddedSubProcess, 
EventDataFilter eventFilter, String varName,
+    protected MakeNodeResult 
filterAndMergeNode(RuleFlowNodeContainerFactory<?, ?> embeddedSubProcess, 
EventDataFilter eventFilter, String varName,
             FilterableNodeSupplier nodeSupplier) {
         String dataExpr = null;
         String toExpr = null;
@@ -462,28 +462,22 @@ public abstract class StateHandler<S extends State> {
         }
         NodeFactory<?, ?> startNode, currentNode;
         if (fromStateExpr != null) {
-            WorkflowElementIdentifier id = parserContext.newId();
-            startNode = 
embeddedSubProcess.actionNode(id).action(ExpressionActionSupplier.of(workflow, 
fromStateExpr)
+            startNode = 
embeddedSubProcess.actionNode(parserContext.newId()).action(ExpressionActionSupplier.of(workflow,
 fromStateExpr)
                     .withVarNames(DEFAULT_WORKFLOW_VAR, 
actionVarName).build()).metaData(SWFConstants.STATE_NAME, state.getName());
             currentNode = connect(startNode, 
nodeSupplier.apply(embeddedSubProcess, actionVarName, 
actionVarName).metaData(SWFConstants.STATE_NAME, state.getName()));
-
         } else {
             startNode = currentNode = nodeSupplier.apply(embeddedSubProcess, 
DEFAULT_WORKFLOW_VAR, actionVarName);
         }
-
-        if (useData && resultExpr != null) {
-            currentNode = connect(currentNode, 
embeddedSubProcess.actionNode(parserContext.newId()).action(ExpressionActionSupplier.of(workflow,
 resultExpr)
-                    .withVarNames(variableInfo.getInputVar(), 
actionVarName).build()));
-        }
-
         if (useData) {
+            if (resultExpr != null) {
+                currentNode = connect(currentNode, 
embeddedSubProcess.actionNode(parserContext.newId()).action(ExpressionActionSupplier.of(workflow,
 resultExpr)
+                        .withVarNames(variableInfo.getInputVar(), 
actionVarName).build()));
+            }
             if (toStateExpr != null) {
-                WorkflowElementIdentifier id = parserContext.newId();
-                currentNode = connect(currentNode, 
embeddedSubProcess.actionNode(id)
+                currentNode = connect(currentNode, 
embeddedSubProcess.actionNode(parserContext.newId())
                         .action(new 
CollectorActionSupplier(workflow.getExpressionLang(), toStateExpr, 
DEFAULT_WORKFLOW_VAR, actionVarName)));
             } else if (shouldMerge) {
-                WorkflowElementIdentifier id = parserContext.newId();
-                currentNode = connect(currentNode, 
embeddedSubProcess.actionNode(id)
+                currentNode = connect(currentNode, 
embeddedSubProcess.actionNode(parserContext.newId())
                         .action(new MergeActionSupplier(actionVarName, 
DEFAULT_WORKFLOW_VAR)));
             }
         }
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/types/ServiceTypeHandler.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/types/ServiceTypeHandler.java
index b576599e9d..678ca30897 100644
--- 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/types/ServiceTypeHandler.java
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/types/ServiceTypeHandler.java
@@ -52,7 +52,7 @@ public class ServiceTypeHandler extends WorkItemTypeHandler {
     private static final String LANG_SEPARATOR = ":";
 
     @Override
-    protected <T extends RuleFlowNodeContainerFactory<T, ?>> 
WorkItemNodeFactory<T> addFunctionArgs(Workflow workflow, 
WorkItemNodeFactory<T> node, FunctionRef functionRef) {
+    protected WorkItemNodeFactory<?> addFunctionArgs(Workflow workflow, 
WorkItemNodeFactory<?> node, FunctionRef functionRef) {
         JsonNode functionArgs = functionRef.getArguments();
         if (functionArgs == null) {
             node.workParameter(WORKITEM_PARAM_TYPE, 
ServerlessWorkflowParser.JSON_NODE);
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/suppliers/SetCollectorActionSupplier.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/suppliers/SetCollectorActionSupplier.java
new file mode 100644
index 0000000000..f88aecca8b
--- /dev/null
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/suppliers/SetCollectorActionSupplier.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.serverless.workflow.suppliers;
+
+import org.jbpm.compiler.canonical.ExpressionSupplier;
+import org.jbpm.compiler.canonical.ProcessMetaData;
+import org.jbpm.compiler.canonical.descriptors.ExpressionUtils;
+import org.kie.kogito.internal.process.runtime.KogitoNode;
+import org.kie.kogito.serverless.workflow.actions.SetCollectorAction;
+
+import com.github.javaparser.ast.expr.Expression;
+
+public class SetCollectorActionSupplier extends SetCollectorAction implements 
ExpressionSupplier {
+
+    private Expression expression;
+
+    public SetCollectorActionSupplier(String lang, String expr, String 
inputVar, String outputVar) {
+        super(lang, expr, inputVar, outputVar);
+        ExpressionUtils.checkValid(lang, expr);
+        expression = 
ExpressionUtils.getObjectCreationExpr(SetCollectorAction.class, lang, expr, 
inputVar, outputVar);
+    }
+
+    @Override
+    public Expression get(KogitoNode node, ProcessMetaData metadata) {
+        return expression;
+    }
+}
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/suppliers/SetExpressionActionSupplier.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/suppliers/SetExpressionActionSupplier.java
new file mode 100644
index 0000000000..e74110895b
--- /dev/null
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/suppliers/SetExpressionActionSupplier.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.serverless.workflow.suppliers;
+
+import org.jbpm.compiler.canonical.ExpressionSupplier;
+import org.jbpm.compiler.canonical.ProcessMetaData;
+import org.jbpm.compiler.canonical.descriptors.ExpressionUtils;
+import org.kie.kogito.internal.process.runtime.KogitoNode;
+import org.kie.kogito.serverless.workflow.actions.SetExpressionAction;
+
+import com.github.javaparser.ast.expr.Expression;
+
+public class SetExpressionActionSupplier extends SetExpressionAction 
implements ExpressionSupplier {
+
+    private Expression expression;
+
+    public SetExpressionActionSupplier(String lang, String expr, String 
inputVar, String outputVar) {
+        super(lang, expr, inputVar, outputVar);
+        ExpressionUtils.checkValid(lang, expr);
+        expression = 
ExpressionUtils.getObjectCreationExpr(SetExpressionAction.class, lang, expr, 
inputVar, outputVar);
+    }
+
+    @Override
+    public Expression get(KogitoNode node, ProcessMetaData metadata) {
+        return expression;
+    }
+
+}
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/suppliers/SetValueActionSupplier.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/suppliers/SetValueActionSupplier.java
new file mode 100644
index 0000000000..6de50e1648
--- /dev/null
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/suppliers/SetValueActionSupplier.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.serverless.workflow.suppliers;
+
+import org.jbpm.compiler.canonical.ExpressionSupplier;
+import org.jbpm.compiler.canonical.ProcessMetaData;
+import org.jbpm.compiler.canonical.descriptors.ExpressionUtils;
+import org.kie.kogito.internal.process.runtime.KogitoNode;
+import org.kie.kogito.serverless.workflow.actions.MergeAction;
+import org.kie.kogito.serverless.workflow.actions.SetValueAction;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.github.javaparser.ast.expr.Expression;
+
+public class SetValueActionSupplier extends SetValueAction implements 
ExpressionSupplier {
+
+    private Expression expression;
+
+    public SetValueActionSupplier(String varName, JsonNode value) {
+        super(varName, value);
+        this.expression = 
ExpressionUtils.getObjectCreationExpr(MergeAction.class, varName, value);
+    }
+
+    @Override
+    public Expression get(KogitoNode node, ProcessMetaData metadata) {
+        return expression;
+
+    }
+}
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/utils/WorkItemBuilder.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/utils/WorkItemBuilder.java
index fbb03806de..8bbcd0997e 100644
--- 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/utils/WorkItemBuilder.java
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/utils/WorkItemBuilder.java
@@ -42,7 +42,7 @@ import io.serverlessworkflow.api.functions.FunctionRef;
 
 public abstract class WorkItemBuilder {
 
-    protected <T extends RuleFlowNodeContainerFactory<T, ?>> 
WorkItemNodeFactory<T> addFunctionArgs(Workflow workflow, 
WorkItemNodeFactory<T> node, FunctionRef functionRef) {
+    protected WorkItemNodeFactory<?> addFunctionArgs(Workflow workflow, 
WorkItemNodeFactory<?> node, FunctionRef functionRef) {
         JsonNode functionArgs = functionRef.getArguments();
         if (functionArgs != null) {
             processArgs(workflow, node, functionArgs, 
SWFConstants.MODEL_WORKFLOW_VAR);
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/test/java/org/kie/kogito/serverless/workflow/ServerlessWorkflowParsingTest.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/test/java/org/kie/kogito/serverless/workflow/ServerlessWorkflowParsingTest.java
index 98bcaf3f00..6fdfa3b36d 100644
--- 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/test/java/org/kie/kogito/serverless/workflow/ServerlessWorkflowParsingTest.java
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/test/java/org/kie/kogito/serverless/workflow/ServerlessWorkflowParsingTest.java
@@ -18,25 +18,13 @@
  */
 package org.kie.kogito.serverless.workflow;
 
-import java.util.Collection;
 import java.util.List;
 
 import org.jbpm.ruleflow.core.Metadata;
 import org.jbpm.ruleflow.core.RuleFlowProcess;
-import org.jbpm.workflow.core.Constraint;
-import org.jbpm.workflow.core.node.ActionNode;
-import org.jbpm.workflow.core.node.CompositeContextNode;
-import org.jbpm.workflow.core.node.EndNode;
-import org.jbpm.workflow.core.node.EventNode;
-import org.jbpm.workflow.core.node.Join;
-import org.jbpm.workflow.core.node.Split;
-import org.jbpm.workflow.core.node.StartNode;
-import org.jbpm.workflow.core.node.TimerNode;
-import org.jbpm.workflow.core.node.WorkItemNode;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
-import org.kie.api.definition.process.Node;
 import org.kie.api.definition.process.Process;
 import org.kie.kogito.codegen.api.context.impl.JavaKogitoBuildContext;
 import org.kie.kogito.serverless.workflow.parser.ServerlessWorkflowParser;
@@ -62,28 +50,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
 
-        assertThat(process.getNodes()).hasSize(3);
-
-        Node node = process.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = process.getNodes()[2];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-        node = process.getNodes()[1];
-        assertThat(node).isInstanceOf(EndNode.class);
-
-        // now check the composite one to see what nodes it has
-        CompositeContextNode compositeNode = (CompositeContextNode) 
process.getNodes()[2];
-
-        assertThat(compositeNode.getNodes()).hasSize(4);
-
-        node = compositeNode.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = compositeNode.getNodes()[1];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[2];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[3];
-        assertThat(node).isInstanceOf(EndNode.class);
     }
 
     @ParameterizedTest
@@ -97,33 +63,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
 
-        assertThat(process.getNodes()).hasSize(4);
-
-        Node node = process.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = process.getNodes()[2];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-        node = process.getNodes()[3];
-        assertThat(node).isInstanceOf(TimerNode.class);
-        node = process.getNodes()[1];
-        assertThat(node).isInstanceOf(EndNode.class);
-
-        // now check the composite one to see what nodes it has
-        CompositeContextNode compositeNode = (CompositeContextNode) 
process.getNodes()[2];
-
-        assertThat(compositeNode.getNodes()).hasSize(4);
-
-        node = compositeNode.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = compositeNode.getNodes()[1];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[2];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[3];
-        assertThat(node).isInstanceOf(EndNode.class);
-
-        TimerNode timerNode = (TimerNode) process.getNodes()[3];
-        assertThat(timerNode.getTimer().getDelay()).isEqualTo("PT1S");
     }
 
     @ParameterizedTest
@@ -136,37 +75,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         assertThat(process.getType()).isEqualTo("SW");
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        assertThat(process.getNodes()).hasSize(3);
-
-        Node node = process.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = process.getNodes()[2];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-        node = process.getNodes()[1];
-        assertThat(node).isInstanceOf(EndNode.class);
-
-        // now check the composite one to see what nodes it has
-        CompositeContextNode compositeNode = (CompositeContextNode) 
process.getNodes()[2];
-
-        assertThat(compositeNode.getNodes()).hasSize(4);
-
-        node = compositeNode.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = compositeNode.getNodes()[1];
-        assertThat(node).isInstanceOf(WorkItemNode.class);
-        node = compositeNode.getNodes()[2];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[3];
-        assertThat(node).isInstanceOf(EndNode.class);
-
-        WorkItemNode workItemNode = (WorkItemNode) compositeNode.getNodes()[1];
-        assertThat(workItemNode.getName()).isEqualTo("helloWorld");
-        
assertThat(workItemNode.getWork().getParameter("Interface")).isEqualTo("org.something.other.TestService");
-        
assertThat(workItemNode.getWork().getParameter("Operation")).isEqualTo("get");
-        
assertThat(workItemNode.getWork().getParameter("interfaceImplementationRef")).isEqualTo("org.something.other.TestService");
-        
assertThat(workItemNode.getWork().getParameter("operationImplementationRef")).isEqualTo("get");
-        
assertThat(workItemNode.getWork().getParameter("implementation")).isEqualTo("Java");
     }
 
     @ParameterizedTest
@@ -179,29 +87,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         assertThat(process.getType()).isEqualTo("SW");
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        assertThat(process.getNodes()).hasSize(4);
-
-        Node node = process.getNodes()[1];
-        assertThat(((StartNode) 
node).getMetaData(Metadata.TRIGGER_REF)).isEqualTo("kafka");
-        node = process.getNodes()[0];
-        assertThat(node).isInstanceOf(EndNode.class);
-        node = process.getNodes()[3];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-
-        // now check the composite one to see what nodes it has
-        CompositeContextNode compositeNode = (CompositeContextNode) 
process.getNodes()[3];
-
-        assertThat(compositeNode.getNodes()).hasSize(4);
-
-        node = compositeNode.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = compositeNode.getNodes()[1];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[2];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[3];
-        assertThat(node).isInstanceOf(EndNode.class);
     }
 
     @ParameterizedTest
@@ -214,33 +99,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         assertThat(process.getType()).isEqualTo("SW");
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        assertThat(process.getNodes()).hasSize(7);
-
-        Node node = process.getNodes()[0];
-        assertThat(node).isInstanceOf(EndNode.class);
-        node = process.getNodes()[6];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-        node = process.getNodes()[5];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = process.getNodes()[1];
-        assertThat(node).isInstanceOf(Join.class);
-        node = process.getNodes()[3];
-        assertThat(node).isInstanceOf(ActionNode.class);
-
-        // now check the composite one to see what nodes it has
-        CompositeContextNode compositeNode = (CompositeContextNode) 
process.getNodes()[6];
-
-        assertThat(compositeNode.getNodes()).hasSize(4);
-
-        node = compositeNode.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = compositeNode.getNodes()[1];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[2];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[3];
-        assertThat(node).isInstanceOf(EndNode.class);
     }
 
     @ParameterizedTest
@@ -254,32 +112,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
 
-        assertThat(process.getNodes()).hasSize(3);
-
-        Node node = process.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = process.getNodes()[2];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-        node = process.getNodes()[1];
-        assertThat(node).isInstanceOf(EndNode.class);
-
-        // now check the composite one to see what nodes it has
-        CompositeContextNode compositeNode = (CompositeContextNode) 
process.getNodes()[2];
-
-        assertThat(compositeNode.getNodes()).hasSize(6);
-
-        node = compositeNode.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = compositeNode.getNodes()[1];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[2];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[3];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[4];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[5];
-        assertThat(node).isInstanceOf(EndNode.class);
     }
 
     @ParameterizedTest
@@ -292,60 +124,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         assertThat(process.getType()).isEqualTo("SW");
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        assertThat(process.getNodes()).hasSize(5);
-
-        Node node = process.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = process.getNodes()[2];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-        node = process.getNodes()[3];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-        node = process.getNodes()[4];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-        node = process.getNodes()[1];
-        assertThat(node).isInstanceOf(EndNode.class);
-
-        // now check the composite one to see what nodes it has
-        CompositeContextNode compositeNode = (CompositeContextNode) 
process.getNodes()[2];
-
-        assertThat(compositeNode.getNodes()).hasSize(4);
-
-        node = compositeNode.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = compositeNode.getNodes()[1];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[2];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[3];
-        assertThat(node).isInstanceOf(EndNode.class);
-
-        compositeNode = (CompositeContextNode) process.getNodes()[3];
-
-        assertThat(compositeNode.getNodes()).hasSize(4);
-
-        node = compositeNode.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = compositeNode.getNodes()[1];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[2];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[3];
-        assertThat(node).isInstanceOf(EndNode.class);
-
-        compositeNode = (CompositeContextNode) process.getNodes()[4];
-
-        assertThat(compositeNode.getNodes()).hasSize(4);
-
-        node = compositeNode.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = compositeNode.getNodes()[1];
-        assertThat(node).isInstanceOf(Node.class);
-        node = compositeNode.getNodes()[2];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = compositeNode.getNodes()[3];
-        assertThat(node).isInstanceOf(EndNode.class);
-
     }
 
     @ParameterizedTest
@@ -358,18 +136,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         assertThat(process.getType()).isEqualTo("SW");
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        assertThat(process.getNodes()).hasSize(3);
-
-        Node node = process.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = process.getNodes()[2];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = process.getNodes()[1];
-        assertThat(node).isInstanceOf(EndNode.class);
-
-        ActionNode actionNode = (ActionNode) process.getNodes()[2];
-        assertThat(actionNode.getName()).isEqualTo("SimpleInject");
     }
 
     @ParameterizedTest
@@ -382,21 +148,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         assertThat(process.getType()).isEqualTo("SW");
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        assertThat(process.getNodes()).hasSize(6);
-
-        Node node = process.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = process.getNodes()[1];
-        assertThat(node).isInstanceOf(EndNode.class);
-        node = process.getNodes()[2];
-        assertThat(node).isInstanceOf(Split.class);
-        node = process.getNodes()[3];
-        assertThat(node).isInstanceOf(Join.class);
-        node = process.getNodes()[4];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-        node = process.getNodes()[5];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
     }
 
     @ParameterizedTest
@@ -409,25 +160,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         assertThat(process.getType()).isEqualTo("SW");
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        assertThat(process.getNodes()).hasSize(5);
-        Node node = process.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = process.getNodes()[2];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-        node = process.getNodes()[3];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-        node = process.getNodes()[4];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = process.getNodes()[1];
-        assertThat(node).isInstanceOf(EndNode.class);
-
-        ActionNode actionNode = (ActionNode) process.getNodes()[4];
-        assertThat(actionNode.getName()).isEqualTo("TestKafkaEvent");
-        
assertThat(actionNode.getMetaData("TriggerType")).isEqualTo("ProduceMessage");
-        
assertThat(actionNode.getMetaData("MappingVariableInput")).isEqualTo("workflowdata");
-        assertThat(actionNode.getMetaData("TriggerRef")).isEqualTo("kafka");
-        
assertThat(actionNode.getMetaData("MessageType")).isEqualTo("com.fasterxml.jackson.databind.JsonNode");
     }
 
     @ParameterizedTest
@@ -440,39 +172,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         assertThat(process.getType()).isEqualTo("SW");
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        assertThat(process.getNodes()).hasSize(15);
-
-        Node node = process.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = process.getNodes()[1];
-        assertThat(node).isInstanceOf(EndNode.class);
-        node = process.getNodes()[2];
-        assertThat(node).isInstanceOf(EndNode.class);
-        node = process.getNodes()[3];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = process.getNodes()[4];
-        assertThat(node).isInstanceOf(Split.class);
-        node = process.getNodes()[5];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = process.getNodes()[6];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = process.getNodes()[7];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = process.getNodes()[8];
-        assertThat(node).isInstanceOf(EventNode.class);
-        node = process.getNodes()[10];
-        assertThat(node).isInstanceOf(EventNode.class);
-
-        Split split = (Split) process.getNodes()[4];
-        assertThat(split.getName()).isEqualTo("ChooseOnEvent");
-        assertThat(split.getType()).isEqualTo(Split.TYPE_XAND);
-
-        EventNode firstEventNode = (EventNode) process.getNodes()[8];
-        assertThat(firstEventNode.getName()).isEqualTo("visaApprovedEvent");
-
-        EventNode secondEventNode = (EventNode) process.getNodes()[10];
-        assertThat(secondEventNode.getName()).isEqualTo("visaDeniedEvent");
     }
 
     @ParameterizedTest
@@ -485,37 +184,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         assertThat(process.getType()).isEqualTo("SW");
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        assertThat(process.getNodes()).hasSize(13);
-
-        Node node = process.getNodes()[5];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-        node = process.getNodes()[4];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = process.getNodes()[0];
-        assertThat(node).isInstanceOf(Join.class);
-        node = process.getNodes()[2];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = process.getNodes()[6];
-        assertThat(node).isInstanceOf(Split.class);
-        node = process.getNodes()[7];
-        assertThat(node).isInstanceOf(Split.class);
-        node = process.getNodes()[8];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = process.getNodes()[9];
-        assertThat(node).isInstanceOf(EndNode.class);
-        node = process.getNodes()[11];
-        assertThat(node).isInstanceOf(EndNode.class);
-
-        Split split = (Split) process.getNodes()[6];
-        assertThat(split.getName()).isEqualTo("CheckBackend");
-        assertThat(split.getType()).isEqualTo(2);
-        assertThat(split.getConstraints()).hasSize(2);
-
-        Split split2 = (Split) process.getNodes()[7];
-        assertThat(split2.getName()).isEqualTo("CheckFrontend");
-        assertThat(split2.getType()).isEqualTo(2);
-        assertThat(split2.getConstraints()).hasSize(2);
     }
 
     @ParameterizedTest
@@ -528,36 +196,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         assertThat(process.getType()).isEqualTo("SW");
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        assertThat(process.getNodes()).hasSize(8);
-        Node node = process.getNodes()[0];
-        assertThat(node).isInstanceOf(StartNode.class);
-        node = process.getNodes()[1];
-        assertThat(node).isInstanceOf(EndNode.class);
-        node = process.getNodes()[2];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-        node = process.getNodes()[3];
-        assertThat(node).isInstanceOf(CompositeContextNode.class);
-        node = process.getNodes()[4];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = process.getNodes()[5];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = process.getNodes()[6];
-        assertThat(node).isInstanceOf(ActionNode.class);
-        node = process.getNodes()[7];
-        assertThat(node).isInstanceOf(ActionNode.class);
-
-        ActionNode actionNode = (ActionNode) process.getNodes()[4];
-        assertThat(actionNode.getName()).isEqualTo("TestKafkaEvent");
-
-        ActionNode actionNode2 = (ActionNode) process.getNodes()[5];
-        assertThat(actionNode2.getName()).isEqualTo("TestKafkaEvent2");
-
-        ActionNode actionNode3 = (ActionNode) process.getNodes()[6];
-        assertThat(actionNode3.getName()).isEqualTo("TestKafkaEvent3");
-
-        ActionNode actionNode4 = (ActionNode) process.getNodes()[7];
-        assertThat(actionNode4.getName()).isEqualTo("TestKafkaEvent4");
     }
 
     @ParameterizedTest
@@ -570,15 +208,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         assertThat(process.getType()).isEqualTo("SW");
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        assertThat(process.getNodes()).hasSize(16);
-
-        Split split = (Split) process.getNodes()[4];
-        assertThat(split.getName()).isEqualTo("ChooseOnAge");
-        assertThat(split.getType()).isEqualTo(2);
-        assertThat(split.getConstraints()).hasSize(2);
-
-        assertHaveDefaultConstraint(split);
     }
 
     @ParameterizedTest
@@ -591,19 +220,6 @@ public class ServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowPar
         assertThat(process.getType()).isEqualTo("SW");
         
assertThat(process.getPackageName()).isEqualTo("org.kie.kogito.serverless");
         
assertThat(process.getVisibility()).isEqualTo(RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        assertThat(process.getNodes()).hasSize(17);
-
-        Split split = (Split) process.getNodes()[4];
-        assertThat(split.getName()).isEqualTo("ChooseOnAge");
-        assertThat(split.getType()).isEqualTo(2);
-        assertThat(split.getConstraints()).hasSize(2);
-
-        assertHaveDefaultConstraint(split);
-    }
-
-    private void assertHaveDefaultConstraint(Split split) {
-        
assertThat(split.getConstraints().values().stream().flatMap(Collection::stream).anyMatch(Constraint::isDefault)).isTrue();
     }
 
     @ParameterizedTest
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/test/java/org/kie/kogito/serverless/workflow/SwitchStateServerlessWorkflowParsingTest.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/test/java/org/kie/kogito/serverless/workflow/SwitchStateServerlessWorkflowParsingTest.java
index b9f7ae9ed5..1c6207332e 100644
--- 
a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/test/java/org/kie/kogito/serverless/workflow/SwitchStateServerlessWorkflowParsingTest.java
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/test/java/org/kie/kogito/serverless/workflow/SwitchStateServerlessWorkflowParsingTest.java
@@ -19,24 +19,9 @@
 package org.kie.kogito.serverless.workflow;
 
 import org.jbpm.ruleflow.core.RuleFlowProcess;
-import org.jbpm.workflow.core.node.ActionNode;
-import org.jbpm.workflow.core.node.CompositeContextNode;
-import org.jbpm.workflow.core.node.EndNode;
-import org.jbpm.workflow.core.node.EventNode;
-import org.jbpm.workflow.core.node.Join;
-import org.jbpm.workflow.core.node.Split;
-import org.jbpm.workflow.core.node.StartNode;
-import org.jbpm.workflow.core.node.TimerNode;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static 
org.kie.kogito.serverless.workflow.WorkflowTestUtils.assertClassAndGetNode;
-import static 
org.kie.kogito.serverless.workflow.WorkflowTestUtils.assertConstraintIsDefault;
-import static 
org.kie.kogito.serverless.workflow.WorkflowTestUtils.assertExclusiveSplit;
-import static 
org.kie.kogito.serverless.workflow.WorkflowTestUtils.assertHasName;
-import static 
org.kie.kogito.serverless.workflow.WorkflowTestUtils.assertHasNodesSize;
-import static 
org.kie.kogito.serverless.workflow.WorkflowTestUtils.assertIsConnected;
 import static 
org.kie.kogito.serverless.workflow.WorkflowTestUtils.assertProcessMainParams;
 
 class SwitchStateServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowParsingTest {
@@ -51,26 +36,6 @@ class SwitchStateServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflo
                 "1.0",
                 "org.kie.kogito.serverless",
                 RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        assertHasNodesSize(process, 7);
-        StartNode processStartNode = assertClassAndGetNode(process, 0, 
StartNode.class);
-        EndNode processEndNode1 = assertClassAndGetNode(process, 1, 
EndNode.class);
-        EndNode processEndNode2 = assertClassAndGetNode(process, 2, 
EndNode.class);
-        Split splitNode = assertClassAndGetNode(process, 3, Split.class);
-        assertExclusiveSplit(splitNode, "ChooseOnAge", 2);
-        assertConstraintIsDefault(splitNode, "4_7");
-        ActionNode approveTransitionActionNode = 
assertClassAndGetNode(process, 4, ActionNode.class);
-        assertHasName(approveTransitionActionNode, "Approve");
-        ActionNode denyTransitionActionNode = assertClassAndGetNode(process, 
5, ActionNode.class);
-        assertHasName(denyTransitionActionNode, "Deny");
-        Join joinNode = assertClassAndGetNode(process, 6, Join.class);
-
-        assertIsConnected(processStartNode, splitNode);
-        assertIsConnected(splitNode, approveTransitionActionNode);
-        assertIsConnected(approveTransitionActionNode, processEndNode1);
-        assertIsConnected(splitNode, joinNode);
-        assertIsConnected(joinNode, denyTransitionActionNode);
-        assertIsConnected(denyTransitionActionNode, processEndNode2);
     }
 
     @ParameterizedTest
@@ -84,23 +49,6 @@ class SwitchStateServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflo
                 "org.kie.kogito.serverless",
                 RuleFlowProcess.PUBLIC_VISIBILITY);
 
-        assertHasNodesSize(process, 6);
-        StartNode processStartNode = assertClassAndGetNode(process, 0, 
StartNode.class);
-        ActionNode addInfoActionNode = assertClassAndGetNode(process, 1, 
ActionNode.class);
-        assertHasName(addInfoActionNode, "AddInfo");
-        Split splitNode = assertClassAndGetNode(process, 2, Split.class);
-        assertExclusiveSplit(splitNode, "ChooseOnAge", 2);
-        assertConstraintIsDefault(splitNode, "3_5");
-        assertConstraintIsDefault(splitNode, "3_6");
-        EndNode processEndNode1 = assertClassAndGetNode(process, 3, 
EndNode.class);
-        EndNode processEndNode2 = assertClassAndGetNode(process, 4, 
EndNode.class);
-        EndNode processEndNode3 = assertClassAndGetNode(process, 5, 
EndNode.class);
-
-        assertIsConnected(processStartNode, addInfoActionNode);
-        assertIsConnected(addInfoActionNode, splitNode);
-        assertIsConnected(splitNode, processEndNode1);
-        assertIsConnected(splitNode, processEndNode2);
-        assertIsConnected(splitNode, processEndNode3);
     }
 
     @ParameterizedTest
@@ -114,40 +62,6 @@ class SwitchStateServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflo
                 "org.kie.kogito.serverless",
                 RuleFlowProcess.PUBLIC_VISIBILITY);
 
-        assertHasNodesSize(process, 12);
-
-        StartNode processStartNode = assertClassAndGetNode(process, 0, 
StartNode.class);
-        EndNode endNode1 = assertClassAndGetNode(process, 1, EndNode.class);
-        EndNode endNode2 = assertClassAndGetNode(process, 2, EndNode.class);
-        Split splitNode = assertClassAndGetNode(process, 3, Split.class);
-        assertHasName(splitNode, "ChooseOnEvent");
-        CompositeContextNode approvedVisaState = 
assertClassAndGetNode(process, 4, CompositeContextNode.class);
-        assertHasName(approvedVisaState, "ApprovedVisa");
-        CompositeContextNode deniedVisaState = assertClassAndGetNode(process, 
5, CompositeContextNode.class);
-        assertHasName(deniedVisaState, "DeniedVisa");
-        TimerNode timeoutTimerNode = assertClassAndGetNode(process, 6, 
TimerNode.class);
-        assertThat(timeoutTimerNode.getTimer().getDelay()).isEqualTo("PT5S");
-        EndNode endNode3 = assertClassAndGetNode(process, 7, EndNode.class);
-        EventNode visaApprovedEventNode = assertClassAndGetNode(process, 8, 
EventNode.class);
-        assertHasName(visaApprovedEventNode, "visaApprovedEvent");
-        ActionNode visaApprovedEventNodeMergeAction = 
assertClassAndGetNode(process, 9, ActionNode.class);
-        EventNode visaDeniedEventNode = assertClassAndGetNode(process, 10, 
EventNode.class);
-        assertHasName(visaDeniedEventNode, "visaDeniedEvent");
-        ActionNode visaDeniedEventNodeMergeAction = 
assertClassAndGetNode(process, 11, ActionNode.class);
-
-        assertIsConnected(processStartNode, splitNode);
-        assertIsConnected(splitNode, timeoutTimerNode);
-        assertIsConnected(timeoutTimerNode, endNode3);
-
-        assertIsConnected(splitNode, visaApprovedEventNode);
-        assertIsConnected(visaApprovedEventNode, 
visaApprovedEventNodeMergeAction);
-        assertIsConnected(visaApprovedEventNodeMergeAction, approvedVisaState);
-        assertIsConnected(approvedVisaState, endNode1);
-
-        assertIsConnected(splitNode, visaDeniedEventNode);
-        assertIsConnected(visaDeniedEventNode, visaDeniedEventNodeMergeAction);
-        assertIsConnected(visaDeniedEventNodeMergeAction, deniedVisaState);
-        assertIsConnected(deniedVisaState, endNode2);
     }
 
     @ParameterizedTest
@@ -161,44 +75,6 @@ class SwitchStateServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflo
                 "org.kie.kogito.serverless",
                 RuleFlowProcess.PUBLIC_VISIBILITY);
 
-        assertHasNodesSize(process, 13);
-
-        StartNode processStartNode = assertClassAndGetNode(process, 0, 
StartNode.class);
-        EndNode endNode1 = assertClassAndGetNode(process, 1, EndNode.class);
-        EndNode endNode2 = assertClassAndGetNode(process, 2, EndNode.class);
-        EndNode endNode3 = assertClassAndGetNode(process, 3, EndNode.class);
-        Split splitNode = assertClassAndGetNode(process, 4, Split.class);
-        assertHasName(splitNode, "ChooseOnEvent");
-        CompositeContextNode approvedVisaState = 
assertClassAndGetNode(process, 5, CompositeContextNode.class);
-        assertHasName(approvedVisaState, "ApprovedVisa");
-        CompositeContextNode deniedVisaState = assertClassAndGetNode(process, 
6, CompositeContextNode.class);
-        assertHasName(deniedVisaState, "DeniedVisa");
-        CompositeContextNode handleNoVisaDecisionState = 
assertClassAndGetNode(process, 7, CompositeContextNode.class);
-        assertHasName(handleNoVisaDecisionState, "HandleNoVisaDecision");
-        TimerNode timeoutTimerNode = assertClassAndGetNode(process, 8, 
TimerNode.class);
-        assertThat(timeoutTimerNode.getTimer().getDelay()).isEqualTo("PT5S");
-        EventNode visaApprovedEvent = assertClassAndGetNode(process, 9, 
EventNode.class);
-        assertHasName(visaApprovedEvent, "visaApprovedEvent");
-        ActionNode visaApprovedEventNodeMergeAction = 
assertClassAndGetNode(process, 10, ActionNode.class);
-        EventNode visaDeniedEvent = assertClassAndGetNode(process, 11, 
EventNode.class);
-        assertHasName(visaDeniedEvent, "visaDeniedEvent");
-        ActionNode visaDeniedEventMergeAction = assertClassAndGetNode(process, 
12, ActionNode.class);
-
-        assertIsConnected(processStartNode, splitNode);
-
-        assertIsConnected(splitNode, visaApprovedEvent);
-        assertIsConnected(visaApprovedEvent, visaApprovedEventNodeMergeAction);
-        assertIsConnected(visaApprovedEventNodeMergeAction, approvedVisaState);
-        assertIsConnected(approvedVisaState, endNode1);
-
-        assertIsConnected(splitNode, visaDeniedEvent);
-        assertIsConnected(visaDeniedEvent, visaDeniedEventMergeAction);
-        assertIsConnected(visaDeniedEventMergeAction, deniedVisaState);
-        assertIsConnected(deniedVisaState, endNode2);
-
-        assertIsConnected(splitNode, timeoutTimerNode);
-        assertIsConnected(timeoutTimerNode, handleNoVisaDecisionState);
-        assertIsConnected(handleNoVisaDecisionState, endNode3);
     }
 
     @ParameterizedTest
@@ -211,43 +87,5 @@ class SwitchStateServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflo
                 "1.0",
                 "org.kie.kogito.serverless",
                 RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        assertHasNodesSize(process, 12);
-
-        StartNode processStartNode = assertClassAndGetNode(process, 0, 
StartNode.class);
-        EndNode endNode1 = assertClassAndGetNode(process, 1, EndNode.class);
-        EndNode endNode2 = assertClassAndGetNode(process, 2, EndNode.class);
-        Split splitNode = assertClassAndGetNode(process, 3, Split.class);
-        assertHasName(splitNode, "ChooseOnEvent");
-        CompositeContextNode approvedVisaState = 
assertClassAndGetNode(process, 4, CompositeContextNode.class);
-        assertHasName(approvedVisaState, "ApprovedVisa");
-        CompositeContextNode deniedVisaState = assertClassAndGetNode(process, 
5, CompositeContextNode.class);
-        assertHasName(deniedVisaState, "DeniedVisa");
-        TimerNode timeoutTimerNode = assertClassAndGetNode(process, 6, 
TimerNode.class);
-        assertThat(timeoutTimerNode.getTimer().getDelay()).isEqualTo("PT5S");
-        EventNode visaApprovedEvent = assertClassAndGetNode(process, 7, 
EventNode.class);
-        assertHasName(visaApprovedEvent, "visaApprovedEvent");
-        ActionNode visaApprovedEventNodeMergeAction = 
assertClassAndGetNode(process, 8, ActionNode.class);
-        EventNode visaDeniedEvent = assertClassAndGetNode(process, 9, 
EventNode.class);
-        assertHasName(visaDeniedEvent, "visaDeniedEvent");
-        ActionNode visaDeniedEventMergeAction = assertClassAndGetNode(process, 
10, ActionNode.class);
-        Join visaDeniedJoinNode = assertClassAndGetNode(process, 11, 
Join.class);
-
-        assertIsConnected(processStartNode, splitNode);
-
-        assertIsConnected(splitNode, visaApprovedEvent);
-        assertIsConnected(visaApprovedEvent, visaApprovedEventNodeMergeAction);
-        assertIsConnected(visaApprovedEventNodeMergeAction, approvedVisaState);
-        assertIsConnected(approvedVisaState, endNode1);
-
-        assertIsConnected(splitNode, visaDeniedEvent);
-        assertIsConnected(visaDeniedEvent, visaDeniedEventMergeAction);
-        assertIsConnected(visaDeniedEventMergeAction, visaDeniedJoinNode);
-
-        assertIsConnected(splitNode, timeoutTimerNode);
-        assertIsConnected(timeoutTimerNode, visaDeniedJoinNode);
-
-        assertIsConnected(visaDeniedJoinNode, deniedVisaState);
-        assertIsConnected(deniedVisaState, endNode2);
     }
 }
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-openapi-parser/src/test/java/org/kie/kogito/serverless/workflow/CallbackStateServerlessWorkflowParsingTest.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-openapi-parser/src/test/java/org/kie/kogito/serverless/workflow/CallbackStateServerlessWorkflowParsingTest.java
index e201bb3dad..9b5a42b9ef 100644
--- 
a/kogito-serverless-workflow/kogito-serverless-workflow-openapi-parser/src/test/java/org/kie/kogito/serverless/workflow/CallbackStateServerlessWorkflowParsingTest.java
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-openapi-parser/src/test/java/org/kie/kogito/serverless/workflow/CallbackStateServerlessWorkflowParsingTest.java
@@ -19,24 +19,9 @@
 package org.kie.kogito.serverless.workflow;
 
 import org.jbpm.ruleflow.core.RuleFlowProcess;
-import org.jbpm.workflow.core.node.ActionNode;
-import org.jbpm.workflow.core.node.BoundaryEventNode;
-import org.jbpm.workflow.core.node.CompositeContextNode;
-import org.jbpm.workflow.core.node.EndNode;
-import org.jbpm.workflow.core.node.EventNode;
-import org.jbpm.workflow.core.node.Join;
-import org.jbpm.workflow.core.node.Split;
-import org.jbpm.workflow.core.node.StartNode;
-import org.jbpm.workflow.core.node.TimerNode;
-import org.jbpm.workflow.core.node.WorkItemNode;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static 
org.kie.kogito.serverless.workflow.WorkflowTestUtils.assertClassAndGetNode;
-import static 
org.kie.kogito.serverless.workflow.WorkflowTestUtils.assertHasName;
-import static 
org.kie.kogito.serverless.workflow.WorkflowTestUtils.assertHasNodesSize;
-import static 
org.kie.kogito.serverless.workflow.WorkflowTestUtils.assertIsConnected;
 import static 
org.kie.kogito.serverless.workflow.WorkflowTestUtils.assertProcessMainParams;
 
 class CallbackStateServerlessWorkflowParsingTest extends 
AbstractServerlessWorkflowParsingTest {
@@ -52,29 +37,6 @@ class CallbackStateServerlessWorkflowParsingTest extends 
AbstractServerlessWorkf
                 "1.0",
                 "org.kie.kogito.serverless",
                 RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        // assert the main process structure
-        assertCallbackProcessMainStructure(process);
-
-        // assert the CallbackState internal structure for the no timeouts case
-        CompositeContextNode callbackState = assertClassAndGetNode(process, 3, 
CompositeContextNode.class);
-        assertHasNodesSize(callbackState, 6);
-        StartNode stateStartNode = assertClassAndGetNode(callbackState, 0, 
StartNode.class);
-        assertHasName(stateStartNode, "EmbeddedStart");
-        WorkItemNode stateActionNode = assertClassAndGetNode(callbackState, 1, 
WorkItemNode.class);
-        assertHasName(stateActionNode, "callbackFunction");
-        ActionNode afterStateActionMergeNode = 
assertClassAndGetNode(callbackState, 2, ActionNode.class);
-        EventNode stateEventNode = assertClassAndGetNode(callbackState, 3, 
EventNode.class);
-        assertHasName(stateEventNode, "callbackEvent");
-        ActionNode afterStateEventMergeNode = 
assertClassAndGetNode(callbackState, 4, ActionNode.class);
-        EndNode stateEndNode = assertClassAndGetNode(callbackState, 5, 
EndNode.class);
-        assertHasName(stateEndNode, "EmbeddedEnd");
-
-        assertIsConnected(stateStartNode, stateActionNode);
-        assertIsConnected(stateActionNode, afterStateActionMergeNode);
-        assertIsConnected(afterStateActionMergeNode, stateEventNode);
-        assertIsConnected(stateEventNode, afterStateEventMergeNode);
-        assertIsConnected(afterStateEventMergeNode, stateEndNode);
     }
 
     @ParameterizedTest
@@ -88,58 +50,5 @@ class CallbackStateServerlessWorkflowParsingTest extends 
AbstractServerlessWorkf
                 "1.0",
                 "org.kie.kogito.serverless",
                 RuleFlowProcess.PUBLIC_VISIBILITY);
-
-        // assert the main process structure
-        assertCallbackProcessMainStructure(process);
-
-        // assert the CallbackState internal structure for the timeouts case
-        CompositeContextNode callbackState = assertClassAndGetNode(process, 3, 
CompositeContextNode.class);
-        assertHasNodesSize(callbackState, 9);
-        StartNode stateStartNode = assertClassAndGetNode(callbackState, 0, 
StartNode.class);
-        assertHasName(stateStartNode, "EmbeddedStart");
-        WorkItemNode stateActionNode = assertClassAndGetNode(callbackState, 1, 
WorkItemNode.class);
-        assertHasName(stateActionNode, "callbackFunction");
-        ActionNode afterStateActionMergeNode = 
assertClassAndGetNode(callbackState, 2, ActionNode.class);
-        Split stateSplitNode = assertClassAndGetNode(callbackState, 5, 
Split.class);
-        assertHasName(stateSplitNode, "EventSplit_" + 
stateSplitNode.getId().toExternalFormat());
-        Join stateJoinNode = assertClassAndGetNode(callbackState, 6, 
Join.class);
-        assertHasName(stateJoinNode, "ExclusiveJoin_" + 
stateJoinNode.getId().toExternalFormat());
-        EventNode stateEventNode = assertClassAndGetNode(callbackState, 3, 
EventNode.class);
-        assertHasName(stateEventNode, "callbackEvent");
-        ActionNode afterStateEventMergeNode = 
assertClassAndGetNode(callbackState, 4, ActionNode.class);
-        TimerNode stateTimerNode = assertClassAndGetNode(callbackState, 7, 
TimerNode.class);
-        assertHasName(stateTimerNode, "TimerNode_" + 
stateTimerNode.getId().toExternalFormat());
-        assertThat(stateTimerNode.getTimer().getDelay()).isEqualTo("PT5S");
-        assertThat(stateTimerNode.getTimer().getTimeType()).isEqualTo(1);
-        EndNode stateEndNode = assertClassAndGetNode(callbackState, 8, 
EndNode.class);
-        assertHasName(stateEndNode, "EmbeddedEnd");
-
-        assertIsConnected(stateStartNode, stateActionNode);
-        assertIsConnected(stateActionNode, afterStateActionMergeNode);
-        assertIsConnected(afterStateActionMergeNode, stateSplitNode);
-        assertIsConnected(stateSplitNode, stateEventNode);
-        assertIsConnected(stateEventNode, afterStateEventMergeNode);
-        assertIsConnected(afterStateEventMergeNode, stateJoinNode);
-        assertIsConnected(stateSplitNode, stateTimerNode);
-        assertIsConnected(stateTimerNode, stateJoinNode);
-        assertIsConnected(stateJoinNode, stateEndNode);
-    }
-
-    private void assertCallbackProcessMainStructure(RuleFlowProcess process) {
-        assertHasNodesSize(process, 7);
-        StartNode processStartNode = assertClassAndGetNode(process, 0, 
StartNode.class);
-        EndNode processEndNode1 = assertClassAndGetNode(process, 1, 
EndNode.class);
-        EndNode processEndNode2 = assertClassAndGetNode(process, 2, 
EndNode.class);
-        CompositeContextNode callbackState = assertClassAndGetNode(process, 3, 
CompositeContextNode.class);
-        assertHasName(callbackState, "CallbackState");
-        ActionNode processFinalizeSuccessfulState = 
assertClassAndGetNode(process, 5, ActionNode.class);
-        assertHasName(processFinalizeSuccessfulState, "FinalizeSuccessful");
-        ActionNode processFinalizeWithErrorState = 
assertClassAndGetNode(process, 6, ActionNode.class);
-        assertHasName(processFinalizeWithErrorState, "FinalizeWithError");
-        assertClassAndGetNode(process, 4, BoundaryEventNode.class);
-        assertIsConnected(processStartNode, callbackState);
-        assertIsConnected(callbackState, processFinalizeSuccessfulState);
-        assertIsConnected(processFinalizeSuccessfulState, processEndNode1);
-        assertIsConnected(processFinalizeWithErrorState, processEndNode2);
     }
 }
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/AssignCollectorAction.java
similarity index 85%
copy from 
kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
copy to 
kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/AssignCollectorAction.java
index 2b537136af..45234de710 100644
--- 
a/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/AssignCollectorAction.java
@@ -20,12 +20,12 @@ package org.kie.kogito.serverless.workflow.actions;
 
 import org.kie.kogito.internal.process.runtime.KogitoProcessContext;
 
-public class CollectorAction extends BaseExpressionAction {
+public class AssignCollectorAction extends BaseExpressionAction {
 
     private String outputVar;
 
-    public CollectorAction(String lang, String expr, String inputVar, String 
outputVar) {
-        super(lang, expr, inputVar);
+    public AssignCollectorAction(String lang, String expr, String modelVar, 
String outputVar) {
+        super(lang, expr, modelVar);
         this.outputVar = outputVar;
     }
 
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
index 2b537136af..73a5e5b823 100644
--- 
a/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
@@ -24,8 +24,8 @@ public class CollectorAction extends BaseExpressionAction {
 
     private String outputVar;
 
-    public CollectorAction(String lang, String expr, String inputVar, String 
outputVar) {
-        super(lang, expr, inputVar);
+    public CollectorAction(String lang, String expr, String modelVar, String 
outputVar) {
+        super(lang, expr, modelVar);
         this.outputVar = outputVar;
     }
 
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/SetCollectorAction.java
similarity index 68%
copy from 
kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
copy to 
kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/SetCollectorAction.java
index 2b537136af..6c62639664 100644
--- 
a/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/SetCollectorAction.java
@@ -19,18 +19,23 @@
 package org.kie.kogito.serverless.workflow.actions;
 
 import org.kie.kogito.internal.process.runtime.KogitoProcessContext;
+import org.kie.kogito.jackson.utils.ObjectMapperFactory;
 
-public class CollectorAction extends BaseExpressionAction {
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class SetCollectorAction extends BaseExpressionAction {
 
     private String outputVar;
 
-    public CollectorAction(String lang, String expr, String inputVar, String 
outputVar) {
-        super(lang, expr, inputVar);
+    public SetCollectorAction(String lang, String expr, String modelVar, 
String outputVar) {
+        super(lang, expr, modelVar);
         this.outputVar = outputVar;
     }
 
     @Override
     public void execute(KogitoProcessContext context) throws Exception {
-        expr.assign(ActionUtils.getJsonNode(context, modelVar), 
ActionUtils.getJsonNode(context, outputVar), context);
+        JsonNode node = ObjectMapperFactory.listenerAware().createObjectNode();
+        expr.assign(node, ActionUtils.getJsonNode(context, outputVar), 
context);
+        context.setVariable(modelVar, node);
     }
 }
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/SetExpressionAction.java
similarity index 80%
copy from 
kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
copy to 
kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/SetExpressionAction.java
index 2b537136af..b2a22e6ffe 100644
--- 
a/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/SetExpressionAction.java
@@ -20,17 +20,19 @@ package org.kie.kogito.serverless.workflow.actions;
 
 import org.kie.kogito.internal.process.runtime.KogitoProcessContext;
 
-public class CollectorAction extends BaseExpressionAction {
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class SetExpressionAction extends BaseExpressionAction {
 
     private String outputVar;
 
-    public CollectorAction(String lang, String expr, String inputVar, String 
outputVar) {
+    public SetExpressionAction(String lang, String expr, String inputVar, 
String outputVar) {
         super(lang, expr, inputVar);
         this.outputVar = outputVar;
     }
 
     @Override
     public void execute(KogitoProcessContext context) throws Exception {
-        expr.assign(ActionUtils.getJsonNode(context, modelVar), 
ActionUtils.getJsonNode(context, outputVar), context);
+        context.setVariable(outputVar, evaluate(context, JsonNode.class));
     }
 }
diff --git 
a/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
 
b/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/SetValueAction.java
similarity index 73%
copy from 
kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
copy to 
kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/SetValueAction.java
index 2b537136af..c0f7e0aba8 100644
--- 
a/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/CollectorAction.java
+++ 
b/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/SetValueAction.java
@@ -18,19 +18,23 @@
  */
 package org.kie.kogito.serverless.workflow.actions;
 
+import org.jbpm.process.instance.impl.Action;
 import org.kie.kogito.internal.process.runtime.KogitoProcessContext;
 
-public class CollectorAction extends BaseExpressionAction {
+import com.fasterxml.jackson.databind.JsonNode;
 
-    private String outputVar;
+public class SetValueAction implements Action {
 
-    public CollectorAction(String lang, String expr, String inputVar, String 
outputVar) {
-        super(lang, expr, inputVar);
-        this.outputVar = outputVar;
+    private final String varName;
+    private final JsonNode value;
+
+    public SetValueAction(String varName, JsonNode value) {
+        this.varName = varName;
+        this.value = value;
     }
 
     @Override
     public void execute(KogitoProcessContext context) throws Exception {
-        expr.assign(ActionUtils.getJsonNode(context, modelVar), 
ActionUtils.getJsonNode(context, outputVar), context);
+        context.setVariable(varName, value);
     }
 }
diff --git 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/main/resources/application.properties
 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/main/resources/application.properties
index 7cf0175d7d..cc5d826ddf 100644
--- 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/main/resources/application.properties
+++ 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/main/resources/application.properties
@@ -69,6 +69,7 @@ kogito.addon.messaging.unmarshaller.quiet=java
 mp.messaging.incoming.never.connector=quarkus-http
 mp.messaging.incoming.never.path=/never
 
+
 mp.messaging.incoming.eventTimeout1.connector=quarkus-http
 mp.messaging.incoming.eventTimeout1.path=/eventTimeout1
 
@@ -109,6 +110,13 @@ 
mp.messaging.outgoing.kogito_outgoing_stream.connector=smallrye-kafka
 mp.messaging.outgoing.kogito_outgoing_stream.topic=kogito-sw-out-events
 
mp.messaging.outgoing.kogito_outgoing_stream.value.serializer=org.apache.kafka.common.serialization.StringSerializer
 
+
+mp.messaging.incoming.start_event.connector=smallrye-kafka
+mp.messaging.incoming.start_event.value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
+
+mp.messaging.outgoing.exit_event.connector=smallrye-kafka
+mp.messaging.outgoing.exit_event.value.serializer=org.apache.kafka.common.serialization.StringSerializer
+
 # kafka configurations for the CallbackStateIT test.
 mp.messaging.incoming.callback_state_event_type.connector=smallrye-kafka
 mp.messaging.incoming.callback_state_event_type.topic=callback_state_event_type
diff --git 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/main/resources/helloworldevent.sw.yaml
 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/main/resources/helloworldevent.sw.yaml
new file mode 100644
index 0000000000..702f2d7e1d
--- /dev/null
+++ 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/main/resources/helloworldevent.sw.yaml
@@ -0,0 +1,35 @@
+id: helloworldevent
+version: '1.0'
+name: Hello World Workflow
+start: WaitStartEvent
+events:
+  - name: startEvent
+    source: ''
+    kind: consumed
+    type: start_event
+  - name: exitEvent
+    source: ''
+    kind: produced
+    type: exit_event
+states:
+  - name: WaitStartEvent
+    type: event
+    onEvents:
+      - eventRefs:
+          - startEvent
+        eventDataFilter:
+            toStateData: .originalMessage
+    transition: Inject Hello World
+  - name: Inject Hello World
+    type: inject
+    data:
+      greeting: Hello World
+    transition: Inject Mantra
+  - name: Inject Mantra
+    type: inject
+    data:
+      mantra: Serverless Workflow is awesome!
+    end:
+      terminate: true
+      produceEvents:
+        - eventRef: exitEvent
\ No newline at end of file
diff --git 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/test/java/org/kie/kogito/quarkus/workflows/SwitchStateEventConditionBasedIT.java
 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/test/java/org/kie/kogito/quarkus/workflows/SwitchStateEventConditionBasedIT.java
index 280c5a517a..f88f8d1f9f 100644
--- 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/test/java/org/kie/kogito/quarkus/workflows/SwitchStateEventConditionBasedIT.java
+++ 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/test/java/org/kie/kogito/quarkus/workflows/SwitchStateEventConditionBasedIT.java
@@ -32,6 +32,7 @@ import org.kie.kogito.test.quarkus.QuarkusTestProperty;
 import org.kie.kogito.test.quarkus.kafka.KafkaTestClient;
 import org.kie.kogito.testcontainers.quarkus.KafkaQuarkusTestResource;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
 
@@ -117,6 +118,22 @@ class SwitchStateEventConditionBasedIT extends 
AbstractSwitchStateIT {
         }
     }
 
+    @Test
+    void helloWorldEvent() throws JsonProcessingException, 
InterruptedException {
+        final String startTopic = "start_event";
+        final String endTopic = "exit_event";
+        String ce = objectMapper.writeValueAsString(CloudEventBuilder.v1()
+                .withId(UUID.randomUUID().toString())
+                .withSource(URI.create(""))
+                .withType(startTopic)
+                .withTime(OffsetDateTime.now())
+                
.withData(JsonCloudEventData.wrap(objectMapper.createObjectNode().put("name", 
"Javierito")))
+                .build());
+        kafkaClient.produce(ce, startTopic);
+        JsonPath jsonPath = waitForEvent(endTopic, endTopic, 1000L);
+        
assertThat(jsonPath.getString("data.originalMessage.name")).isEqualTo("Javierito");
+    }
+
     @Test
     void switchStateEventConditionTimeoutsTransitionApproved() throws 
Exception {
         
switchStateEventConditionTimeoutsTransitionBasedWithEvent(SWITCH_STATE_EVENT_CONDITION_TIMEOUTS_TRANSITION_URL,
@@ -252,7 +269,7 @@ class SwitchStateEventConditionBasedIT extends 
AbstractSwitchStateIT {
         assertDecisionEvent(result, processInstanceId, 
expectedDecisionEventType, expectedDecision);
     }
 
-    protected JsonPath waitForEvent(String topic, String eventType, long 
seconds) throws Exception {
+    protected JsonPath waitForEvent(String topic, String eventType, long 
seconds) throws InterruptedException {
         final CountDownLatch countDownLatch = new CountDownLatch(1);
         final AtomicReference<String> cloudEvent = new AtomicReference<>();
         kafkaClient.consume(topic, rawCloudEvent -> {


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

Reply via email to