This is an automated email from the ASF dual-hosted git repository.
pefernan 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 c8c9c6dbb5 [incubator-kie-issues#2191] Allow nodes public API resolve
the right `NodeType` (#4148)
c8c9c6dbb5 is described below
commit c8c9c6dbb51dcc91eb3b1df499c842735a0d51f7
Author: Pere Fernández <[email protected]>
AuthorDate: Mon Dec 15 17:14:38 2025 +0100
[incubator-kie-issues#2191] Allow nodes public API resolve the right
`NodeType` (#4148)
Co-authored-by: Pere Fernández <[email protected]>
---
.../bpmn2/xml/IntermediateThrowEventHandler.java | 3 +-
.../jbpm/workflow/core/impl/ExtendedNodeImpl.java | 5 ++
.../java/org/jbpm/workflow/core/impl/NodeImpl.java | 16 +++++
.../org/jbpm/workflow/core/node/ActionNode.java | 9 +++
.../jbpm/workflow/core/node/BoundaryEventNode.java | 5 ++
.../org/jbpm/workflow/core/node/CatchLinkNode.java | 4 ++
.../workflow/core/node/CompositeContextNode.java | 9 +++
.../org/jbpm/workflow/core/node/CompositeNode.java | 8 +++
.../org/jbpm/workflow/core/node/DynamicNode.java | 2 +
.../java/org/jbpm/workflow/core/node/EndNode.java | 5 ++
.../org/jbpm/workflow/core/node/EventNode.java | 9 +++
.../workflow/core/node/EventSubProcessNode.java | 5 ++
.../org/jbpm/workflow/core/node/FaultNode.java | 5 ++
.../org/jbpm/workflow/core/node/ForEachNode.java | 10 +++
.../org/jbpm/workflow/core/node/HumanTaskNode.java | 2 +
.../java/org/jbpm/workflow/core/node/Join.java | 12 ++++
.../org/jbpm/workflow/core/node/MilestoneNode.java | 5 ++
.../org/jbpm/workflow/core/node/RuleSetNode.java | 5 ++
.../java/org/jbpm/workflow/core/node/Split.java | 14 ++++
.../org/jbpm/workflow/core/node/StartNode.java | 2 +
.../jbpm/workflow/core/node/StateBasedNode.java | 7 +-
.../org/jbpm/workflow/core/node/StateNode.java | 5 ++
.../jbpm/workflow/core/node/SubProcessNode.java | 5 ++
.../org/jbpm/workflow/core/node/ThrowLinkNode.java | 4 ++
.../org/jbpm/workflow/core/node/TimerNode.java | 5 ++
.../org/jbpm/workflow/core/node/WorkItemNode.java | 9 +++
.../org/jbpm/workflow/core/node/NodeTypeTest.java | 80 ++++++++++++++++++++++
.../org/jbpm/workflow/instance/node/MockNode.java | 4 ++
.../KogitoAddOnJobsKnativeEventingProcessor.java | 8 +--
...ogitoAddOnJobsKnativeEventingProcessorTest.java | 7 +-
30 files changed, 259 insertions(+), 10 deletions(-)
diff --git
a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/IntermediateThrowEventHandler.java
b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/IntermediateThrowEventHandler.java
index 689215bd42..6c6f8b1ba6 100755
---
a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/IntermediateThrowEventHandler.java
+++
b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/IntermediateThrowEventHandler.java
@@ -42,6 +42,7 @@ import org.jbpm.workflow.core.impl.IOSpecification;
import org.jbpm.workflow.core.node.ActionNode;
import org.jbpm.workflow.core.node.CompositeNode;
import org.jbpm.workflow.core.node.ThrowLinkNode;
+import org.kie.api.definition.process.NodeType;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.xml.sax.Attributes;
@@ -70,7 +71,7 @@ public class IntermediateThrowEventHandler extends
AbstractNodeHandler {
@Override
protected Node createNode(Attributes attrs) {
- return new ActionNode();
+ return new ActionNode(NodeType.THROW_EVENT);
}
@Override
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/ExtendedNodeImpl.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/ExtendedNodeImpl.java
index a0f4e21583..a1bd094c28 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/ExtendedNodeImpl.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/ExtendedNodeImpl.java
@@ -23,6 +23,7 @@ import java.util.List;
import java.util.Map;
import org.jbpm.workflow.core.DroolsAction;
+import org.kie.api.definition.process.NodeType;
public class ExtendedNodeImpl extends NodeImpl {
@@ -35,6 +36,10 @@ public class ExtendedNodeImpl extends NodeImpl {
private Map<String, List<DroolsAction>> actions = new HashMap<>();
+ protected ExtendedNodeImpl(NodeType nodeType) {
+ super(nodeType);
+ }
+
public void setActions(String type, List<DroolsAction> actions) {
this.actions.put(type, actions);
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/NodeImpl.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/NodeImpl.java
index 13a21788e1..a840de7927 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/NodeImpl.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/NodeImpl.java
@@ -38,6 +38,7 @@ import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.WorkflowProcess;
import org.kie.api.definition.process.Connection;
import org.kie.api.definition.process.NodeContainer;
+import org.kie.api.definition.process.NodeType;
import org.kie.api.definition.process.WorkflowElementIdentifier;
import static
org.jbpm.workflow.instance.WorkflowProcessParameters.WORKFLOW_PARAM_MULTIPLE_CONNECTIONS;
@@ -62,13 +63,19 @@ public abstract class NodeImpl implements Node,
ContextResolver, Mappable {
private IOSpecification ioSpecification;
private MultiInstanceSpecification multiInstanceSpecification;
+ private NodeType nodeType;
public NodeImpl() {
+ this(NodeType.INTERNAL);
+ }
+
+ protected NodeImpl(NodeType nodeType) {
this.id = WorkflowElementIdentifierFactory.newRandom();
this.incomingConnections = new HashMap<>();
this.outgoingConnections = new HashMap<>();
this.ioSpecification = new IOSpecification();
this.multiInstanceSpecification = new MultiInstanceSpecification();
+ this.nodeType = nodeType;
}
public void setMultiInstanceSpecification(MultiInstanceSpecification
multiInstanceSpecification) {
@@ -152,6 +159,15 @@ public abstract class NodeImpl implements Node,
ContextResolver, Mappable {
return this.id;
}
+ @Override
+ public NodeType getNodeType() {
+ return nodeType;
+ }
+
+ protected void setNodeType(NodeType nodeType) {
+ this.nodeType = nodeType;
+ }
+
@Override
public void setId(WorkflowElementIdentifier id) {
this.id = id;
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/ActionNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/ActionNode.java
index 53f74b4143..5c3d57b618 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/ActionNode.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/ActionNode.java
@@ -26,6 +26,7 @@ import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.impl.DataAssociation;
import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
import org.kie.api.definition.process.Connection;
+import org.kie.api.definition.process.NodeType;
import static
org.jbpm.workflow.instance.WorkflowProcessParameters.WORKFLOW_PARAM_MULTIPLE_CONNECTIONS;
@@ -39,6 +40,14 @@ public class ActionNode extends ExtendedNodeImpl {
private DroolsAction action;
+ public ActionNode() {
+ super(NodeType.SCRIPT_TASK);
+ }
+
+ public ActionNode(NodeType nodeType) {
+ super(nodeType);
+ }
+
public DroolsAction getAction() {
return action;
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/BoundaryEventNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/BoundaryEventNode.java
index 0097be4247..bab0154b94 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/BoundaryEventNode.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/BoundaryEventNode.java
@@ -21,6 +21,7 @@ package org.jbpm.workflow.core.node;
import java.util.function.Function;
import org.jbpm.process.core.event.EventFilter;
+import org.kie.api.definition.process.NodeType;
public class BoundaryEventNode extends EventNode {
@@ -28,6 +29,10 @@ public class BoundaryEventNode extends EventNode {
private String attachedToNodeId;
+ public BoundaryEventNode() {
+ super(NodeType.BOUNDARY_EVENT);
+ }
+
public String getAttachedToNodeId() {
return attachedToNodeId;
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/CatchLinkNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/CatchLinkNode.java
index ff4cec2303..dfdd7d78d6 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/CatchLinkNode.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/CatchLinkNode.java
@@ -19,9 +19,13 @@
package org.jbpm.workflow.core.node;
import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
+import org.kie.api.definition.process.NodeType;
public class CatchLinkNode extends ExtendedNodeImpl {
private static final long serialVersionUID = 201105121554L;
+ public CatchLinkNode() {
+ super(NodeType.CATCH_LINK);
+ }
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/CompositeContextNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/CompositeContextNode.java
index ca9210ad3c..c414ccb593 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/CompositeContextNode.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/CompositeContextNode.java
@@ -24,6 +24,7 @@ import org.jbpm.process.core.Context;
import org.jbpm.process.core.ContextContainer;
import org.jbpm.process.core.context.AbstractContext;
import org.jbpm.process.core.impl.ContextContainerImpl;
+import org.kie.api.definition.process.NodeType;
public class CompositeContextNode extends CompositeNode implements
ContextContainer {
@@ -31,6 +32,14 @@ public class CompositeContextNode extends CompositeNode
implements ContextContai
private ContextContainer contextContainer = new ContextContainerImpl();
+ protected CompositeContextNode(NodeType nodeType) {
+ super(nodeType);
+ }
+
+ public CompositeContextNode() {
+ super(NodeType.INTERNAL);
+ }
+
public List<Context> getContexts(String contextType) {
return this.contextContainer.getContexts(contextType);
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/CompositeNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/CompositeNode.java
index 72a95fb161..641bd40d4e 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/CompositeNode.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/CompositeNode.java
@@ -32,6 +32,7 @@ import org.jbpm.workflow.core.impl.ConnectionImpl;
import org.jbpm.workflow.core.impl.NodeContainerImpl;
import org.jbpm.workflow.core.impl.NodeImpl;
import org.kie.api.definition.process.Connection;
+import org.kie.api.definition.process.NodeType;
import org.kie.api.definition.process.WorkflowElementIdentifier;
public class CompositeNode extends StateBasedNode implements NodeContainer,
EventNodeInterface {
@@ -45,6 +46,11 @@ public class CompositeNode extends StateBasedNode implements
NodeContainer, Even
private boolean autoComplete = true;
public CompositeNode() {
+ this(NodeType.INTERNAL);
+ }
+
+ protected CompositeNode(NodeType type) {
+ super(type);
this.nodeContainer = new NodeContainerImpl();
}
@@ -439,6 +445,7 @@ public class CompositeNode extends StateBasedNode
implements NodeContainer, Even
private String inType;
public CompositeNodeStart(CompositeNode parentNode,
org.kie.api.definition.process.Node outNode, String outType) {
+ super(NodeType.INTERNAL);
setId(WorkflowElementIdentifierFactory.fromExternalFormat(parentNode.getId().toExternalFormat()
+ ":composite:start"));
setName("Composite node start");
this.inNodeId = outNode.getId();
@@ -475,6 +482,7 @@ public class CompositeNode extends StateBasedNode
implements NodeContainer, Even
private String outType;
public CompositeNodeEnd(CompositeNode parentNode,
org.kie.api.definition.process.Node outNode, String outType) {
+ super(NodeType.INTERNAL);
setId(WorkflowElementIdentifierFactory.fromExternalFormat(parentNode.getId().toExternalFormat()
+ ":composite:end"));
setName("Composite node end");
this.outNodeId = outNode.getId();
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/DynamicNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/DynamicNode.java
index d38584d943..8ed3014b29 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/DynamicNode.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/DynamicNode.java
@@ -24,6 +24,7 @@ import java.util.stream.Collectors;
import org.jbpm.process.instance.impl.ReturnValueEvaluator;
import org.kie.api.definition.process.Node;
+import org.kie.api.definition.process.NodeType;
import org.kie.api.definition.process.WorkflowElementIdentifier;
import org.kie.kogito.internal.process.runtime.KogitoProcessContext;
@@ -47,6 +48,7 @@ public class DynamicNode extends CompositeContextNode {
private String language;
public DynamicNode() {
+ super(NodeType.AD_HOC_SUBPROCESS);
setAutoComplete(false);
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/EndNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/EndNode.java
index 222f13d1c7..fbcd73d919 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/EndNode.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/EndNode.java
@@ -21,6 +21,7 @@ package org.jbpm.workflow.core.node;
import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
import org.kie.api.definition.process.Connection;
+import org.kie.api.definition.process.NodeType;
import static
org.jbpm.workflow.instance.WorkflowProcessParameters.WORKFLOW_PARAM_MULTIPLE_CONNECTIONS;
@@ -39,6 +40,10 @@ public class EndNode extends ExtendedNodeImpl {
private boolean terminate = true;
private int scope = CONTAINER_SCOPE;
+ public EndNode() {
+ super(NodeType.END);
+ }
+
public boolean isTerminate() {
return terminate;
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/EventNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/EventNode.java
index 0ce70b86f8..01b712a1b8 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/EventNode.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/EventNode.java
@@ -27,6 +27,7 @@ import org.jbpm.process.core.event.EventTypeFilter;
import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
import org.kie.api.definition.process.Connection;
+import org.kie.api.definition.process.NodeType;
import static
org.jbpm.workflow.instance.WorkflowProcessParameters.WORKFLOW_PARAM_MULTIPLE_CONNECTIONS;
@@ -39,6 +40,14 @@ public class EventNode extends ExtendedNodeImpl implements
EventNodeInterface {
private String variableName;
private String scope;
+ public EventNode() {
+ super(NodeType.CATCH_EVENT);
+ }
+
+ protected EventNode(NodeType nodeType) {
+ super(nodeType);
+ }
+
public String getVariableName() {
return variableName;
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/EventSubProcessNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/EventSubProcessNode.java
index fe9d04c6e3..53f4be094d 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/EventSubProcessNode.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/EventSubProcessNode.java
@@ -26,6 +26,7 @@ import org.jbpm.process.core.event.EventTypeFilter;
import org.jbpm.process.core.timer.Timer;
import org.jbpm.workflow.core.DroolsAction;
import org.kie.api.definition.process.Node;
+import org.kie.api.definition.process.NodeType;
public class EventSubProcessNode extends CompositeContextNode {
@@ -35,6 +36,10 @@ public class EventSubProcessNode extends
CompositeContextNode {
private List<EventTypeFilter> eventTypeFilters = new ArrayList<>();
private boolean keepActive = true;
+ public EventSubProcessNode() {
+ super(NodeType.EVENT_SUBPROCESS);
+ }
+
public void addEvent(EventTypeFilter filter) {
String type = filter.getType();
this.events.add(type);
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/FaultNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/FaultNode.java
index bd5a13bfdf..0522d97de0 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/FaultNode.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/FaultNode.java
@@ -21,6 +21,7 @@ package org.jbpm.workflow.core.node;
import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
import org.kie.api.definition.process.Connection;
+import org.kie.api.definition.process.NodeType;
/**
* Default implementation of a fault node.
@@ -37,6 +38,10 @@ public class FaultNode extends ExtendedNodeImpl {
private String faultVariable;
private boolean terminateParent = false;
+ public FaultNode() {
+ super(NodeType.FAULT);
+ }
+
public String getFaultVariable() {
return faultVariable;
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/ForEachNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/ForEachNode.java
index 2bacf60430..78d60d9581 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/ForEachNode.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/ForEachNode.java
@@ -32,6 +32,7 @@ import
org.jbpm.ruleflow.core.WorkflowElementIdentifierFactory;
import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.impl.ConnectionImpl;
import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
+import org.kie.api.definition.process.NodeType;
import org.kie.api.definition.process.WorkflowElementIdentifier;
import org.kie.kogito.process.expr.Expression;
import org.kie.kogito.process.expr.ExpressionHandlerFactory;
@@ -63,6 +64,8 @@ public class ForEachNode extends CompositeContextNode {
}
public ForEachNode(WorkflowElementIdentifier id) {
+ super(NodeType.FOR_EACH);
+
setId(id);
// Split
ForEachSplitNode split = new ForEachSplitNode();
@@ -298,11 +301,18 @@ public class ForEachNode extends CompositeContextNode {
public static class ForEachSplitNode extends ExtendedNodeImpl {
private static final long serialVersionUID = 510l;
+
+ public ForEachSplitNode() {
+ super(NodeType.INTERNAL);
+ }
}
public static class ForEachJoinNode extends ExtendedNodeImpl {
private static final long serialVersionUID = 510l;
+ public ForEachJoinNode() {
+ super(NodeType.INTERNAL);
+ }
}
@Override
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/HumanTaskNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/HumanTaskNode.java
index 1632732093..50df4d0958 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/HumanTaskNode.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/HumanTaskNode.java
@@ -26,6 +26,7 @@ import org.jbpm.process.core.Work;
import org.jbpm.process.core.datatype.impl.type.StringDataType;
import org.jbpm.process.core.impl.ParameterDefinitionImpl;
import org.jbpm.process.core.impl.WorkImpl;
+import org.kie.api.definition.process.NodeType;
public class HumanTaskNode extends WorkItemNode {
@@ -54,6 +55,7 @@ public class HumanTaskNode extends WorkItemNode {
"BusinessAdministratorGroupId");
public HumanTaskNode() {
+ super(NodeType.HUMAN_TASK);
Work work = new WorkImpl();
work.setName("Human Task");
Set<ParameterDefinition> parameterDefinitions = new HashSet<>();
diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/Join.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/Join.java
index c91fec1525..e1c16b51a4 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/Join.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/Join.java
@@ -21,6 +21,7 @@ package org.jbpm.workflow.core.node;
import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.impl.NodeImpl;
import org.kie.api.definition.process.Connection;
+import org.kie.api.definition.process.NodeType;
/**
* Default implementation of a join.
@@ -60,11 +61,22 @@ public class Join extends NodeImpl {
private String n;
public Join() {
+ super(NodeType.COMPLEX_GATEWAY);
this.type = TYPE_UNDEFINED;
}
public void setType(final int type) {
this.type = type;
+ this.setNodeType(fromType(type));
+ }
+
+ private static NodeType fromType(int type) {
+ return switch (type) {
+ case TYPE_AND -> NodeType.PARALLEL_GATEWAY;
+ case TYPE_OR -> NodeType.INCLUSIVE_GATEWAY;
+ case TYPE_XOR -> NodeType.EXCLUSIVE_GATEWAY;
+ default -> NodeType.COMPLEX_GATEWAY;
+ };
}
public int getType() {
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/MilestoneNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/MilestoneNode.java
index 1a1ba697ff..3e144da016 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/MilestoneNode.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/MilestoneNode.java
@@ -22,6 +22,7 @@ import java.util.function.Predicate;
import org.jbpm.workflow.core.Node;
import org.kie.api.definition.process.Connection;
+import org.kie.api.definition.process.NodeType;
import org.kie.api.runtime.process.ProcessContext;
import static
org.jbpm.workflow.instance.WorkflowProcessParameters.WORKFLOW_PARAM_MULTIPLE_CONNECTIONS;
@@ -39,6 +40,10 @@ public class MilestoneNode extends StateBasedNode implements
Constrainable {
private String condition;
private Predicate<ProcessContext> conditionPredicate;
+ public MilestoneNode() {
+ super(NodeType.MILESTONE);
+ }
+
public void setCondition(String condition) {
this.condition = condition;
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/RuleSetNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/RuleSetNode.java
index b7d9f87207..07109a5fd1 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/RuleSetNode.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/RuleSetNode.java
@@ -32,6 +32,7 @@ import org.jbpm.process.core.impl.ContextContainerImpl;
import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.instance.rule.RuleType;
import org.kie.api.definition.process.Connection;
+import org.kie.api.definition.process.NodeType;
import org.kie.api.runtime.KieRuntime;
import org.kie.kogito.decision.DecisionModel;
@@ -58,6 +59,10 @@ public class RuleSetNode extends StateBasedNode implements
ContextContainer {
private Supplier<KieRuntime> kieRuntime;
private RuleUnitFactory<RuleUnitData> ruleUnitFactory;
+ public RuleSetNode() {
+ super(NodeType.BUSINESS_RULE);
+ }
+
public void setRuleType(RuleType ruleType) {
this.ruleType = ruleType;
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/Split.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/Split.java
index 77c4a8e717..b9f82cd853 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/Split.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/Split.java
@@ -25,6 +25,7 @@ import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.impl.ConnectionRef;
import org.jbpm.workflow.core.impl.NodeImpl;
import org.kie.api.definition.process.Connection;
+import org.kie.api.definition.process.NodeType;
import static
org.jbpm.workflow.instance.WorkflowProcessParameters.WORKFLOW_PARAM_MULTIPLE_CONNECTIONS;
@@ -65,15 +66,28 @@ public class Split extends NodeImpl implements
Constrainable {
private int type;
public Split() {
+ super(NodeType.COMPLEX_GATEWAY);
this.type = TYPE_UNDEFINED;
}
public Split(final int type) {
+ super(fromType(type));
this.type = type;
}
public void setType(final int type) {
this.type = type;
+ setNodeType(fromType(type));
+ }
+
+ private static NodeType fromType(int type) {
+ return switch (type) {
+ case TYPE_AND -> NodeType.PARALLEL_GATEWAY;
+ case TYPE_XAND -> NodeType.EVENT_BASED_GATEWAY;
+ case TYPE_OR -> NodeType.INCLUSIVE_GATEWAY;
+ case TYPE_XOR -> NodeType.EXCLUSIVE_GATEWAY;
+ default -> NodeType.COMPLEX_GATEWAY;
+ };
}
public int getType() {
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StartNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StartNode.java
index e6e43a2bb3..d6b678a00c 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StartNode.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StartNode.java
@@ -26,6 +26,7 @@ import org.jbpm.ruleflow.core.Metadata;
import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
import org.kie.api.definition.process.Connection;
+import org.kie.api.definition.process.NodeType;
import static
org.jbpm.workflow.instance.WorkflowProcessParameters.WORKFLOW_PARAM_MULTIPLE_CONNECTIONS;
@@ -46,6 +47,7 @@ public class StartNode extends ExtendedNodeImpl {
private Timer timer;
public StartNode() {
+ super(NodeType.START);
setMetaData(Metadata.EVENT_TYPE, Metadata.EVENT_TYPE_NONE);
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StateBasedNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StateBasedNode.java
index 868b145a0d..cbba3c9bb8 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StateBasedNode.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StateBasedNode.java
@@ -28,10 +28,11 @@ import
org.jbpm.process.instance.impl.actions.CompleteStateBasedNodeInstanceActi
import org.jbpm.workflow.core.DroolsAction;
import org.jbpm.workflow.core.impl.DroolsConsequenceAction;
import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
+import org.kie.api.definition.process.NodeType;
import static org.jbpm.ruleflow.core.Metadata.ACTION;
-public class StateBasedNode extends ExtendedNodeImpl {
+public abstract class StateBasedNode extends ExtendedNodeImpl {
private static final long serialVersionUID = 510l;
@@ -41,6 +42,10 @@ public class StateBasedNode extends ExtendedNodeImpl {
private transient String duration;
+ protected StateBasedNode(NodeType nodeType) {
+ super(nodeType);
+ }
+
public Map<Timer, DroolsAction> getTimers() {
return timers;
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StateNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StateNode.java
index e9e0743fbf..f329df9edf 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StateNode.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StateNode.java
@@ -18,8 +18,13 @@
*/
package org.jbpm.workflow.core.node;
+import org.kie.api.definition.process.NodeType;
+
public class StateNode extends CompositeContextNode implements Constrainable {
private static final long serialVersionUID = 510l;
+ public StateNode() {
+ super(NodeType.CONDITIONAL);
+ }
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/SubProcessNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/SubProcessNode.java
index 7dcad36021..d3711219a4 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/SubProcessNode.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/SubProcessNode.java
@@ -26,6 +26,7 @@ import org.jbpm.process.core.context.AbstractContext;
import org.jbpm.process.core.impl.ContextContainerImpl;
import org.jbpm.workflow.core.Node;
import org.kie.api.definition.process.Connection;
+import org.kie.api.definition.process.NodeType;
import static
org.jbpm.workflow.instance.WorkflowProcessParameters.WORKFLOW_PARAM_MULTIPLE_CONNECTIONS;
@@ -47,6 +48,10 @@ public class SubProcessNode extends StateBasedNode
implements ContextContainer {
private boolean independent = true;
private SubProcessFactory<?> subProcessFactory;
+ public SubProcessNode() {
+ super(NodeType.SUBPROCESS);
+ }
+
public void setProcessId(final String processId) {
this.processId = processId;
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/ThrowLinkNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/ThrowLinkNode.java
index 74f3ec3c79..9a9af38507 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/ThrowLinkNode.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/ThrowLinkNode.java
@@ -19,9 +19,13 @@
package org.jbpm.workflow.core.node;
import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
+import org.kie.api.definition.process.NodeType;
public class ThrowLinkNode extends ExtendedNodeImpl {
private static final long serialVersionUID = 201105121554L;
+ public ThrowLinkNode() {
+ super(NodeType.THROW_LINK);
+ }
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/TimerNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/TimerNode.java
index 5096a47f0e..fdbe662aa2 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/TimerNode.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/TimerNode.java
@@ -22,6 +22,7 @@ import org.jbpm.process.core.timer.Timer;
import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
import org.kie.api.definition.process.Connection;
+import org.kie.api.definition.process.NodeType;
import static
org.jbpm.workflow.instance.WorkflowProcessParameters.WORKFLOW_PARAM_MULTIPLE_CONNECTIONS;
@@ -31,6 +32,10 @@ public class TimerNode extends ExtendedNodeImpl {
private Timer timer;
+ public TimerNode() {
+ super(NodeType.TIMER);
+ }
+
public void setTimer(Timer timer) {
this.timer = timer;
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/WorkItemNode.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/WorkItemNode.java
index 5eb00999d0..f1a6d2ff22 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/WorkItemNode.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/WorkItemNode.java
@@ -27,6 +27,7 @@ import org.jbpm.process.core.context.AbstractContext;
import org.jbpm.process.core.impl.ContextContainerImpl;
import org.jbpm.workflow.core.Node;
import org.kie.api.definition.process.Connection;
+import org.kie.api.definition.process.NodeType;
import static
org.jbpm.workflow.instance.WorkflowProcessParameters.WORKFLOW_PARAM_MULTIPLE_CONNECTIONS;
@@ -44,6 +45,14 @@ public class WorkItemNode extends StateBasedNode implements
ContextContainer {
private boolean waitForCompletion = true;
+ public WorkItemNode() {
+ super(NodeType.WORKITEM_TASK);
+ }
+
+ protected WorkItemNode(NodeType nodeType) {
+ super(nodeType);
+ }
+
public Work getWork() {
return work;
}
diff --git
a/jbpm/jbpm-flow/src/test/java/org/jbpm/workflow/core/node/NodeTypeTest.java
b/jbpm/jbpm-flow/src/test/java/org/jbpm/workflow/core/node/NodeTypeTest.java
new file mode 100644
index 0000000000..4430ce06e4
--- /dev/null
+++ b/jbpm/jbpm-flow/src/test/java/org/jbpm/workflow/core/node/NodeTypeTest.java
@@ -0,0 +1,80 @@
+/*
+ * 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.jbpm.workflow.core.node;
+
+import org.junit.jupiter.api.Test;
+import org.kie.api.definition.process.Node;
+import org.kie.api.definition.process.NodeType;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class NodeTypeTest {
+
+ @Test
+ public void testNodeTypeSpec() {
+
+ Node node = new ActionNode();
+ assertEquals(NodeType.SCRIPT_TASK, node.getNodeType());
+ node = new ForEachNode();
+ assertEquals(NodeType.FOR_EACH, node.getNodeType());
+ node = new MilestoneNode();
+ assertEquals(NodeType.MILESTONE, node.getNodeType());
+ node = new FaultNode();
+ assertEquals(NodeType.FAULT, node.getNodeType());
+ node = new Join();
+ assertEquals(NodeType.COMPLEX_GATEWAY, node.getNodeType());
+ node = new Split(Split.TYPE_AND);
+ assertEquals(NodeType.PARALLEL_GATEWAY, node.getNodeType());
+ node = new Split(Split.TYPE_OR);
+ assertEquals(NodeType.INCLUSIVE_GATEWAY, node.getNodeType());
+ node = new Split(Split.TYPE_XOR);
+ assertEquals(NodeType.EXCLUSIVE_GATEWAY, node.getNodeType());
+ node = new Split(Split.TYPE_XAND);
+ assertEquals(NodeType.EVENT_BASED_GATEWAY, node.getNodeType());
+ node = new ThrowLinkNode();
+ assertEquals(NodeType.THROW_LINK, node.getNodeType());
+ node = new CatchLinkNode();
+ assertEquals(NodeType.CATCH_LINK, node.getNodeType());
+ node = new RuleSetNode();
+ assertEquals(NodeType.BUSINESS_RULE, node.getNodeType());
+ node = new TimerNode();
+ assertEquals(NodeType.TIMER, node.getNodeType());
+ node = new WorkItemNode();
+ assertEquals(NodeType.WORKITEM_TASK, node.getNodeType());
+ node = new SubProcessNode();
+ assertEquals(NodeType.SUBPROCESS, node.getNodeType());
+ node = new StateNode();
+ assertEquals(NodeType.CONDITIONAL, node.getNodeType());
+ node = new StartNode();
+ assertEquals(NodeType.START, node.getNodeType());
+ node = new HumanTaskNode();
+ assertEquals(NodeType.HUMAN_TASK, node.getNodeType());
+ node = new EventNode();
+ assertEquals(NodeType.CATCH_EVENT, node.getNodeType());
+ node = new EndNode();
+ assertEquals(NodeType.END, node.getNodeType());
+ node = new DynamicNode();
+ assertEquals(NodeType.AD_HOC_SUBPROCESS, node.getNodeType());
+ node = new EventSubProcessNode();
+ assertEquals(NodeType.EVENT_SUBPROCESS, node.getNodeType());
+ node = new BoundaryEventNode();
+ assertEquals(NodeType.BOUNDARY_EVENT, node.getNodeType());
+ }
+}
diff --git
a/jbpm/jbpm-flow/src/test/java/org/jbpm/workflow/instance/node/MockNode.java
b/jbpm/jbpm-flow/src/test/java/org/jbpm/workflow/instance/node/MockNode.java
index 1cdb1021d8..318f05f563 100755
--- a/jbpm/jbpm-flow/src/test/java/org/jbpm/workflow/instance/node/MockNode.java
+++ b/jbpm/jbpm-flow/src/test/java/org/jbpm/workflow/instance/node/MockNode.java
@@ -19,9 +19,13 @@
package org.jbpm.workflow.instance.node;
import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
+import org.kie.api.definition.process.NodeType;
public class MockNode extends ExtendedNodeImpl {
private static final long serialVersionUID = 510l;
+ public MockNode() {
+ super(NodeType.INTERNAL);
+ }
}
diff --git
a/quarkus/addons/jobs/knative-eventing/deployment/src/main/java/org/kie/kogito/jobs/knative/eventing/quarkus/deployment/KogitoAddOnJobsKnativeEventingProcessor.java
b/quarkus/addons/jobs/knative-eventing/deployment/src/main/java/org/kie/kogito/jobs/knative/eventing/quarkus/deployment/KogitoAddOnJobsKnativeEventingProcessor.java
index ddab9db723..025cde56ed 100644
---
a/quarkus/addons/jobs/knative-eventing/deployment/src/main/java/org/kie/kogito/jobs/knative/eventing/quarkus/deployment/KogitoAddOnJobsKnativeEventingProcessor.java
+++
b/quarkus/addons/jobs/knative-eventing/deployment/src/main/java/org/kie/kogito/jobs/knative/eventing/quarkus/deployment/KogitoAddOnJobsKnativeEventingProcessor.java
@@ -73,10 +73,10 @@ public class KogitoAddOnJobsKnativeEventingProcessor
extends OneOfCapabilityKogi
List<Class<?>> reflectiveClasses = new ArrayList<>();
reflectiveClasses.addAll(org.kie.kogito.jobs.api.utils.ReflectionUtils.apiReflectiveClasses());
reflectiveClasses.addAll(org.kie.kogito.jobs.service.api.utils.ReflectionUtils.apiReflectiveClasses());
- return new ReflectiveClassBuildItem(true,
- true,
- true,
- reflectiveClasses.toArray(new Class[] {}));
+ return ReflectiveClassBuildItem.builder(reflectiveClasses.toArray(new
Class[] {}))
+ .constructors()
+ .fields()
+ .build();
}
@BuildStep(onlyIfNot = IsTest.class, onlyIf = HasWorkflowExtension.class)
diff --git
a/quarkus/addons/jobs/knative-eventing/deployment/src/test/java/org/kie/kogito/jobs/knative/eventing/quarkus/deployment/KogitoAddOnJobsKnativeEventingProcessorTest.java
b/quarkus/addons/jobs/knative-eventing/deployment/src/test/java/org/kie/kogito/jobs/knative/eventing/quarkus/deployment/KogitoAddOnJobsKnativeEventingProcessorTest.java
index 92d5ef31d6..204ab029a7 100644
---
a/quarkus/addons/jobs/knative-eventing/deployment/src/test/java/org/kie/kogito/jobs/knative/eventing/quarkus/deployment/KogitoAddOnJobsKnativeEventingProcessorTest.java
+++
b/quarkus/addons/jobs/knative-eventing/deployment/src/test/java/org/kie/kogito/jobs/knative/eventing/quarkus/deployment/KogitoAddOnJobsKnativeEventingProcessorTest.java
@@ -33,7 +33,6 @@ import org.jbpm.workflow.core.node.EndNode;
import org.jbpm.workflow.core.node.EventNode;
import org.jbpm.workflow.core.node.HumanTaskNode;
import org.jbpm.workflow.core.node.StartNode;
-import org.jbpm.workflow.core.node.StateBasedNode;
import org.jbpm.workflow.core.node.TimerNode;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -246,10 +245,10 @@ class KogitoAddOnJobsKnativeEventingProcessorTest {
*/
private static KogitoWorkflowProcess mockProcess7() {
Node startNode = new StartNode();
- StateBasedNode stateBasedNode = new StateBasedNode();
- stateBasedNode.setTimeout(DURATION);
+ HumanTaskNode humanTaskNode = new HumanTaskNode();
+ humanTaskNode.setTimeout(DURATION);
Node endNode = new EndNode();
- return mockProcess(PROCESS7_ID, startNode, stateBasedNode, endNode);
+ return mockProcess(PROCESS7_ID, startNode, humanTaskNode, endNode);
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]