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]