This is an automated email from the ASF dual-hosted git repository.
egonzalez 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 833a42e65f [incubator-kie-issues-1306] Exclusive gateway v7 port
(#3551)
833a42e65f is described below
commit 833a42e65f58ba246803d971b91343ac2241e724
Author: Enrique <[email protected]>
AuthorDate: Mon Jul 29 14:13:18 2024 +0200
[incubator-kie-issues-1306] Exclusive gateway v7 port (#3551)
---
.../org/jbpm/bpmn2/xml/AdHocSubProcessHandler.java | 5 +-
.../java/org/jbpm/bpmn2/xml/ProcessHandler.java | 10 +-
.../java/org/jbpm/bpmn2/xml/SubProcessHandler.java | 17 +-
.../java/org/jbpm/compiler/ProcessBuilderImpl.java | 2 +-
.../canonical/AbstractCompositeNodeVisitor.java | 5 +-
.../compiler/canonical/AbstractNodeVisitor.java | 62 +++++++
.../jbpm/compiler/canonical/ActionNodeVisitor.java | 4 +
.../canonical/BoundaryEventNodeVisitor.java | 4 +
.../compiler/canonical/CatchLinkNodeVisitor.java | 4 +
.../canonical/CompositeContextNodeVisitor.java | 5 +-
.../compiler/canonical/DynamicNodeVisitor.java | 5 +-
.../jbpm/compiler/canonical/EndNodeVisitor.java | 4 +
.../jbpm/compiler/canonical/EventNodeVisitor.java | 4 +
.../canonical/EventSubProcessNodeVisitor.java | 5 +-
.../jbpm/compiler/canonical/FaultNodeVisitor.java | 4 +
.../compiler/canonical/ForEachNodeVisitor.java | 11 +-
.../jbpm/compiler/canonical/JoinNodeVisitor.java | 4 +
.../canonical/LambdaSubProcessNodeVisitor.java | 4 +
.../compiler/canonical/MilestoneNodeVisitor.java | 4 +
.../compiler/canonical/RuleSetNodeVisitor.java | 11 +-
.../jbpm/compiler/canonical/SplitNodeVisitor.java | 55 +-----
.../jbpm/compiler/canonical/StartNodeVisitor.java | 5 +-
.../jbpm/compiler/canonical/StateNodeVisitor.java | 43 +----
.../compiler/canonical/ThrowLinkNodeVisitor.java | 4 +
.../jbpm/compiler/canonical/TimerNodeVisitor.java | 4 +
.../compiler/canonical/WorkItemNodeVisitor.java | 6 +-
.../canonical/node/ActionNodeVisitorBuilder.java | 2 +-
.../node/BoundaryEventNodeVisitorBuilder.java | 2 +-
.../node/CatchLinkNodeVisitorBuilder.java | 2 +-
.../node/CompositeContextNodeVisitorBuilder.java | 2 +-
.../canonical/node/DynamicNodeVisitorBuilder.java | 2 +-
.../canonical/node/EndNodeVisitorBuilder.java | 2 +-
.../canonical/node/EventNodeVisitorBuilder.java | 2 +-
.../node/EventSubProcessNodeVisitorBuilder.java | 2 +-
.../canonical/node/FaultNodeVisitorBuilder.java | 2 +-
.../canonical/node/ForEachNodeVisitorBuilder.java | 3 +-
.../canonical/node/JoinNodeVisitorBuilder.java | 2 +-
.../node/MilestoneNodeVisitorBuilder.java | 2 +-
.../canonical/node/SplitNodeVisitorBuilder.java | 3 +-
.../canonical/node/StartNodeVisitorBuilder.java | 4 +-
.../canonical/node/StateNodeVisitorBuilder.java | 2 +-
.../node/SubProcessNodeVisitorBuilder.java | 2 +-
.../node/ThrowLinkNodeVisitorBuilder.java | 2 +-
.../canonical/node/TimerNodeVisitorBuilder.java | 2 +-
.../org/jbpm/ruleflow/core/RuleFlowProcess.java | 2 +
.../jbpm/ruleflow/core/factory/NodeFactory.java | 22 ++-
.../jbpm/ruleflow/core/factory/SplitFactory.java | 23 ---
.../java/org/jbpm/workflow/core/impl/NodeImpl.java | 4 +-
.../org/jbpm/workflow/core/node/ActionNode.java | 4 +-
.../java/org/jbpm/workflow/core/node/EndNode.java | 2 +-
.../org/jbpm/workflow/core/node/EventNode.java | 4 +-
.../org/jbpm/workflow/core/node/MilestoneNode.java | 4 +-
.../org/jbpm/workflow/core/node/RuleSetNode.java | 4 +-
.../java/org/jbpm/workflow/core/node/Split.java | 2 +-
.../org/jbpm/workflow/core/node/StartNode.java | 2 +-
.../jbpm/workflow/core/node/SubProcessNode.java | 4 +-
.../org/jbpm/workflow/core/node/TimerNode.java | 4 +-
.../org/jbpm/workflow/core/node/WorkItemNode.java | 4 +-
.../workflow/instance/impl/NodeInstanceImpl.java | 2 +-
.../instance/node/ForEachNodeInstance.java | 2 +-
.../jbpm/bpmn2/event}/BPMN2-ConditionalStart.bpmn2 | 8 +-
.../BPMN2-ConditionalFlowWithoutGateway.bpmn2 | 14 +-
...2-ExclusiveGatewayWithNoConditionsDefined.bpmn2 | 2 +-
.../bpmn2/flow}/BPMN2-ExclusiveSplitDefault.bpmn2 | 0
.../BPMN2-ExclusiveSplitDefaultNoCondition.bpmn2 | 2 +-
.../bpmn2/flow}/BPMN2-ExclusiveSplitXPath.bpmn2 | 0
.../flow/BPMN2-ExclusiveSplitXPathAdvanced.bpmn2} | 2 +-
...clusiveSplitXPathAdvancedVarsNotSignaled.bpmn2} | 2 +-
...PMN2-ExclusiveSplitXPathAdvancedWithVars.bpmn2} | 2 +-
.../BPMN2-GatewaySplitSequenceConditions.bpmn2} | 2 +-
.../org/jbpm/bpmn2/flow/BPMN2-GatewayTest.bpmn2} | 8 +-
.../bpmn2/flow}/BPMN2-InclusiveSplitDefault.bpmn2 | 0
.../test/java/org/jbpm/bpmn2/CompilationTest.java | 2 +-
.../src/test/java/org/jbpm/bpmn2/FlowTest.java | 189 +++++++++++++--------
.../org/jbpm/bpmn2/StandaloneBPMNProcessTest.java | 22 ---
.../test/java/org/jbpm/bpmn2/StartEventTest.java | 29 +++-
.../BPMN2-ConditionalFlowWithoutGateway.bpmn2 | 14 +-
77 files changed, 397 insertions(+), 321 deletions(-)
diff --git
a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/AdHocSubProcessHandler.java
b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/AdHocSubProcessHandler.java
index 89a24f9513..764268219f 100755
---
a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/AdHocSubProcessHandler.java
+++
b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/AdHocSubProcessHandler.java
@@ -23,7 +23,9 @@ import java.util.List;
import org.jbpm.bpmn2.core.SequenceFlow;
import org.jbpm.compiler.xml.Parser;
+import org.jbpm.compiler.xml.ProcessBuildData;
import org.jbpm.process.core.context.variable.VariableScope;
+import org.jbpm.ruleflow.core.RuleFlowProcess;
import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.node.DynamicNode;
import org.w3c.dom.Element;
@@ -87,8 +89,9 @@ public class AdHocSubProcessHandler extends
CompositeContextNodeHandler {
}
xmlNode = xmlNode.getNextSibling();
}
+ RuleFlowProcess process = (RuleFlowProcess) ((ProcessBuildData)
parser.getData()).getMetaData(ProcessHandler.CURRENT_PROCESS);
List<SequenceFlow> connections = (List<SequenceFlow>)
dynamicNode.getMetaData(ProcessHandler.CONNECTIONS);
- ProcessHandler.linkConnections(dynamicNode, connections);
+ ProcessHandler.linkConnections(process, dynamicNode, connections);
ProcessHandler.linkBoundaryEvents(dynamicNode);
handleScript(dynamicNode, element, "onEntry");
diff --git
a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/ProcessHandler.java
b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/ProcessHandler.java
index 210a59d223..644f9fe25a 100755
--- a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/ProcessHandler.java
+++ b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/ProcessHandler.java
@@ -208,7 +208,7 @@ public class ProcessHandler extends BaseAbstractHandler
implements Handler {
linkIntermediateLinks(process, throwLinks);
List<SequenceFlow> connections = (List<SequenceFlow>)
process.getMetaData(CONNECTIONS);
- linkConnections(process, connections);
+ linkConnections(process, process, connections);
linkBoundaryEvents(process);
// This must be done *after* linkConnections(process, connections)
@@ -384,7 +384,7 @@ public class ProcessHandler extends BaseAbstractHandler
implements Handler {
return RuleFlowProcess.class;
}
- public static void linkConnections(NodeContainer nodeContainer,
List<SequenceFlow> connections) {
+ public static void linkConnections(RuleFlowProcess process, NodeContainer
nodeContainer, List<SequenceFlow> connections) {
if (connections != null) {
for (SequenceFlow connection : connections) {
String sourceRef = connection.getSourceRef();
@@ -412,16 +412,14 @@ public class ProcessHandler extends BaseAbstractHandler
implements Handler {
result.setMetaData("bendpoints", connection.getBendpoints());
result.setMetaData(Metadata.UNIQUE_ID, connection.getId());
- if
("true".equals(System.getProperty("jbpm.enable.multi.con"))) {
- NodeImpl nodeImpl = (NodeImpl) source;
+ if (source instanceof NodeImpl nodeImpl &&
Boolean.parseBoolean((String)
process.getMetaData().get("jbpm.enable.multi.con"))) {
Constraint constraint = buildConstraint(connection,
nodeImpl);
if (constraint != null) {
nodeImpl.addConstraint(new
ConnectionRef(connection.getId(), target.getId(),
org.jbpm.workflow.core.Node.CONNECTION_DEFAULT_TYPE),
constraint);
}
- } else if (source instanceof Split) {
- Split split = (Split) source;
+ } else if (source instanceof Split split) {
Constraint constraint = buildConstraint(connection, split);
split.addConstraint(
new ConnectionRef(connection.getId(),
target.getId(), org.jbpm.workflow.core.Node.CONNECTION_DEFAULT_TYPE),
diff --git
a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/SubProcessHandler.java
b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/SubProcessHandler.java
index 41b60eba2a..4dd14dcb48 100755
--- a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/SubProcessHandler.java
+++ b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/SubProcessHandler.java
@@ -25,7 +25,9 @@ import org.jbpm.bpmn2.core.Definitions;
import org.jbpm.bpmn2.core.IntermediateLink;
import org.jbpm.bpmn2.core.SequenceFlow;
import org.jbpm.compiler.xml.Parser;
+import org.jbpm.compiler.xml.ProcessBuildData;
import org.jbpm.process.core.context.variable.VariableScope;
+import org.jbpm.ruleflow.core.RuleFlowProcess;
import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.NodeContainer;
import org.jbpm.workflow.core.node.CompositeContextNode;
@@ -74,6 +76,7 @@ public class SubProcessHandler extends AbstractNodeHandler {
compositeNode.setIoSpecification(readIOEspecification(parser,
element));
compositeNode.setMultiInstanceSpecification(readMultiInstanceSpecification(parser,
element, compositeNode.getIoSpecification()));
+ NodeContainer nodeContainer = (NodeContainer) parser.getParent();
Node outcome = compositeNode;
if
(compositeNode.getMultiInstanceSpecification().hasMultiInstanceInput()) {
ForEachNode forEachNode = (ForEachNode)
decorateMultiInstanceSpecificationSubProcess(compositeNode,
compositeNode.getMultiInstanceSpecification());
@@ -81,8 +84,9 @@ public class SubProcessHandler extends AbstractNodeHandler {
handleScript(forEachNode, element, "onEntry");
handleScript(forEachNode, element, "onExit");
+ RuleFlowProcess process = (RuleFlowProcess) ((ProcessBuildData)
parser.getData()).getMetaData(ProcessHandler.CURRENT_PROCESS);
List<SequenceFlow> connections = (List<SequenceFlow>)
forEachNode.getMetaData(ProcessHandler.CONNECTIONS);
- ProcessHandler.linkConnections(forEachNode, connections);
+ ProcessHandler.linkConnections(process, forEachNode, connections);
ProcessHandler.linkBoundaryEvents(forEachNode);
// This must be done *after* linkConnections(process, connections)
@@ -91,22 +95,23 @@ public class SubProcessHandler extends AbstractNodeHandler {
ProcessHandler.linkAssociations((Definitions)
forEachNode.getMetaData("Definitions"), forEachNode, associations);
applyAsync(node, Boolean.parseBoolean((String)
compositeNode.getMetaData().get("customAsync")));
outcome = forEachNode;
+ nodeContainer.addNode(outcome);
} else {
- handleCompositeContextNode(compositeNode);
+ nodeContainer.addNode(outcome);
+ RuleFlowProcess process = (RuleFlowProcess) ((ProcessBuildData)
parser.getData()).getMetaData(ProcessHandler.CURRENT_PROCESS);
+ handleCompositeContextNode(process, compositeNode);
}
- NodeContainer nodeContainer = (NodeContainer) parser.getParent();
- nodeContainer.addNode(outcome);
return outcome;
}
- protected void handleCompositeContextNode(CompositeContextNode
compositeNode) throws SAXException {
+ protected void handleCompositeContextNode(RuleFlowProcess process,
CompositeContextNode compositeNode) throws SAXException {
List<SequenceFlow> connections = (List<SequenceFlow>)
compositeNode.getMetaData(ProcessHandler.CONNECTIONS);
List<IntermediateLink> throwLinks = (List<IntermediateLink>)
compositeNode.getMetaData(ProcessHandler.LINKS);
ProcessHandler.linkIntermediateLinks(compositeNode, throwLinks);
- ProcessHandler.linkConnections(compositeNode, connections);
+ ProcessHandler.linkConnections(process, compositeNode, connections);
ProcessHandler.linkBoundaryEvents(compositeNode);
// This must be done *after* linkConnections(process, connections)
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/ProcessBuilderImpl.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/ProcessBuilderImpl.java
index 77e6a2c39f..f711e30163 100755
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/ProcessBuilderImpl.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/ProcessBuilderImpl.java
@@ -252,7 +252,7 @@ public class ProcessBuilderImpl implements
org.drools.compiler.compiler.ProcessB
context);
}
- if ("true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (Boolean.parseBoolean((String) ((NodeImpl)
node).getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
builder =
ProcessNodeBuilderRegistry.INSTANCE.getNodeBuilder(NodeImpl.class);
if (builder != null) {
builder.build(process, processDescr, context, node);
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractCompositeNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractCompositeNodeVisitor.java
index b9143a9d76..fd7b95c445 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractCompositeNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractCompositeNodeVisitor.java
@@ -29,8 +29,9 @@ public abstract class AbstractCompositeNodeVisitor<T extends
CompositeContextNod
protected NodeVisitorBuilderService nodevisitorService;
- public AbstractCompositeNodeVisitor(NodeVisitorBuilderService
nodevisitorService) {
- this.nodevisitorService = nodevisitorService;
+ public AbstractCompositeNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
+ this.nodevisitorService = new NodeVisitorBuilderService(classLoader);
}
protected <U extends Node> void visitNodes(String factoryField, U[] nodes,
BlockStmt body, VariableScope variableScope, ProcessMetaData metadata) {
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractNodeVisitor.java
index 1b21e056e7..a8ce5a76b8 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/AbstractNodeVisitor.java
@@ -19,7 +19,9 @@
package org.jbpm.compiler.canonical;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
+import java.util.Map;
import java.util.Objects;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@@ -33,13 +35,17 @@ import org.jbpm.process.core.context.variable.Mappable;
import org.jbpm.process.core.context.variable.Variable;
import org.jbpm.process.core.context.variable.VariableScope;
import org.jbpm.process.core.datatype.DataTypeResolver;
+import org.jbpm.process.instance.impl.ReturnValueConstraintEvaluator;
+import org.jbpm.process.instance.impl.ReturnValueEvaluator;
import org.jbpm.process.instance.impl.actions.HandleEscalationAction;
import org.jbpm.process.instance.impl.actions.ProduceEventAction;
import org.jbpm.process.instance.impl.actions.SignalProcessInstanceAction;
import org.jbpm.ruleflow.core.Metadata;
import org.jbpm.ruleflow.core.factory.MappableNodeFactory;
import org.jbpm.util.JbpmClassLoaderUtil;
+import org.jbpm.workflow.core.Constraint;
import org.jbpm.workflow.core.impl.ConnectionImpl;
+import org.jbpm.workflow.core.impl.ConnectionRef;
import org.jbpm.workflow.core.impl.DataAssociation;
import org.jbpm.workflow.core.impl.DataAssociation.DataAssociationType;
import org.jbpm.workflow.core.impl.DataDefinition;
@@ -57,10 +63,12 @@ import com.github.javaparser.StaticJavaParser;
import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.body.Parameter;
import com.github.javaparser.ast.expr.AssignExpr;
+import com.github.javaparser.ast.expr.BooleanLiteralExpr;
import com.github.javaparser.ast.expr.CastExpr;
import com.github.javaparser.ast.expr.ClassExpr;
import com.github.javaparser.ast.expr.EnclosedExpr;
import com.github.javaparser.ast.expr.Expression;
+import com.github.javaparser.ast.expr.IntegerLiteralExpr;
import com.github.javaparser.ast.expr.LambdaExpr;
import com.github.javaparser.ast.expr.MethodCallExpr;
import com.github.javaparser.ast.expr.NameExpr;
@@ -82,6 +90,7 @@ import static java.util.Collections.singletonList;
import static org.drools.util.StringUtils.ucFirst;
import static org.jbpm.ruleflow.core.Metadata.CUSTOM_AUTO_START;
import static org.jbpm.ruleflow.core.Metadata.HIDDEN;
+import static org.jbpm.ruleflow.core.factory.NodeFactory.METHOD_CONSTRAINT;
import static org.jbpm.ruleflow.core.factory.NodeFactory.METHOD_DONE;
import static org.jbpm.ruleflow.core.factory.NodeFactory.METHOD_NAME;
import static org.kie.kogito.internal.utils.ConversionUtils.sanitizeString;
@@ -90,6 +99,22 @@ public abstract class AbstractNodeVisitor<T extends Node>
extends AbstractVisito
protected abstract String getNodeKey();
+ private ReturnValueEvaluatorBuilderService
returnValueEvaluatorBuilderService;
+ private ClassLoader classLoader;
+
+ public AbstractNodeVisitor(ClassLoader classLoader) {
+ this.classLoader = classLoader;
+ this.returnValueEvaluatorBuilderService =
ReturnValueEvaluatorBuilderService.instance(classLoader);
+ }
+
+ public ClassLoader getClassLoader() {
+ return classLoader;
+ }
+
+ public ReturnValueEvaluatorBuilderService
getReturnValueEvaluatorBuilderService() {
+ return returnValueEvaluatorBuilderService;
+ }
+
public void visitNode(T node, BlockStmt body, VariableScope variableScope,
ProcessMetaData metadata) {
visitNode(FACTORY_FIELD_NAME, node, body, variableScope, metadata);
if (isAdHocNode(node) && !(node instanceof HumanTaskNode)) {
@@ -100,6 +125,8 @@ public abstract class AbstractNodeVisitor<T extends Node>
extends AbstractVisito
addScript(extendedNodeImpl, body, ON_ACTION_SCRIPT_METHOD,
ExtendedNodeImpl.EVENT_NODE_ENTER);
addScript(extendedNodeImpl, body, ON_ACTION_SCRIPT_METHOD,
ExtendedNodeImpl.EVENT_NODE_EXIT);
}
+
+ addConstraints(node, returnValueEvaluatorBuilderService, body);
}
private void addScript(ExtendedNodeImpl extendedNodeImpl, BlockStmt body,
String factoryMethod, String actionType) {
@@ -123,6 +150,41 @@ public abstract class AbstractNodeVisitor<T extends Node>
extends AbstractVisito
}
}
+ public void addConstraints(T currentNode,
ReturnValueEvaluatorBuilderService returnValueEvaluatorBuilderService,
BlockStmt body) {
+ NodeImpl node = (NodeImpl) currentNode;
+ for (Map.Entry<ConnectionRef, Collection<Constraint>> entry :
node.getConstraints().entrySet()) {
+ if (entry.getValue() == null || entry.getValue().isEmpty()) {
+ continue;
+ }
+
+ for (Constraint constraint :
entry.getValue().stream().filter(Predicate.not(Objects::isNull)).toList()) {
+ Expression returnValueEvaluator;
+ if (constraint instanceof ReturnValueConstraintEvaluator
returnValueConstraintEvaluator) {
+ ReturnValueEvaluator evaluator =
returnValueConstraintEvaluator.getReturnValueEvaluator();
+ returnValueEvaluator =
returnValueEvaluatorBuilderService.build(node,
+ evaluator.dialect(),
+ evaluator.expression(),
+ evaluator.type(),
+ evaluator.root());
+
+ } else {
+ returnValueEvaluator =
returnValueEvaluatorBuilderService.build(node,
+ constraint.getDialect(),
+ constraint.getConstraint());
+ }
+ body.addStatement(getFactoryMethod(getNodeId(currentNode),
METHOD_CONSTRAINT,
+
getWorkflowElementConstructor(entry.getKey().getNodeId()),
+ new
StringLiteralExpr(getOrDefault(entry.getKey().getConnectionId(), "")),
+ new StringLiteralExpr(entry.getKey().getToType()),
+ new StringLiteralExpr(constraint.getDialect()),
+ returnValueEvaluator,
+ new IntegerLiteralExpr(constraint.getPriority()),
+ new BooleanLiteralExpr(constraint.isDefault())));
+
+ }
+ }
+ }
+
private Expression buildDroolsConsequenceAction(ExtendedNodeImpl
extendedNodeImpl, String dialect, String script) {
if (script == null) {
return new NullLiteralExpr();
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ActionNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ActionNodeVisitor.java
index 415f67b873..0028588d28 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ActionNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ActionNodeVisitor.java
@@ -55,6 +55,10 @@ public class ActionNodeVisitor extends
AbstractNodeVisitor<ActionNode> {
private static final String INTERMEDIATE_COMPENSATION_TYPE =
"IntermediateThrowEvent-None";
+ public ActionNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
+ }
+
@Override
protected String getNodeKey() {
return "actionNode";
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/BoundaryEventNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/BoundaryEventNodeVisitor.java
index ab0051d501..e15c223ce0 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/BoundaryEventNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/BoundaryEventNodeVisitor.java
@@ -39,6 +39,10 @@ import static
org.jbpm.ruleflow.core.factory.EventNodeFactory.METHOD_VARIABLE_NA
public class BoundaryEventNodeVisitor extends
AbstractNodeVisitor<BoundaryEventNode> {
+ public BoundaryEventNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
+ }
+
@Override
protected String getNodeKey() {
return "boundaryEventNode";
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/CatchLinkNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/CatchLinkNodeVisitor.java
index 04b521c972..aa0d406e35 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/CatchLinkNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/CatchLinkNodeVisitor.java
@@ -26,6 +26,10 @@ import com.github.javaparser.ast.stmt.BlockStmt;
public class CatchLinkNodeVisitor extends AbstractNodeVisitor<CatchLinkNode> {
+ public CatchLinkNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
+ }
+
@Override
protected String getNodeKey() {
return "catchLinkNode";
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/CompositeContextNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/CompositeContextNodeVisitor.java
index 7bb9c149d8..9449db2e86 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/CompositeContextNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/CompositeContextNodeVisitor.java
@@ -21,7 +21,6 @@ package org.jbpm.compiler.canonical;
import java.util.HashSet;
import java.util.stream.Stream;
-import org.jbpm.compiler.canonical.node.NodeVisitorBuilderService;
import org.jbpm.process.core.context.variable.VariableScope;
import org.jbpm.ruleflow.core.factory.CompositeContextNodeFactory;
import org.jbpm.workflow.core.node.CompositeContextNode;
@@ -33,8 +32,8 @@ import com.github.javaparser.ast.stmt.BlockStmt;
public class CompositeContextNodeVisitor<T extends CompositeContextNode>
extends AbstractCompositeNodeVisitor<T> {
- public CompositeContextNodeVisitor(NodeVisitorBuilderService
nodeVisitorService) {
- super(nodeVisitorService);
+ public CompositeContextNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
}
@Override
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/DynamicNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/DynamicNodeVisitor.java
index f2bd31f7b1..3c14fe1ec9 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/DynamicNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/DynamicNodeVisitor.java
@@ -23,7 +23,6 @@ import java.util.Collection;
import java.util.stream.Stream;
import org.jbpm.compiler.canonical.builtin.ReturnValueEvaluatorBuilderService;
-import org.jbpm.compiler.canonical.node.NodeVisitorBuilderService;
import org.jbpm.process.core.context.variable.VariableScope;
import org.jbpm.ruleflow.core.factory.DynamicNodeFactory;
import org.jbpm.workflow.core.node.DynamicNode;
@@ -38,8 +37,8 @@ public class DynamicNodeVisitor extends
CompositeContextNodeVisitor<DynamicNode>
private ReturnValueEvaluatorBuilderService builder;
- public DynamicNodeVisitor(NodeVisitorBuilderService nodeVisitorService,
ClassLoader classLoader) {
- super(nodeVisitorService);
+ public DynamicNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
this.builder =
ReturnValueEvaluatorBuilderService.instance(classLoader);
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EndNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EndNodeVisitor.java
index 23f4edffed..ba90ac3aca 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EndNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EndNodeVisitor.java
@@ -49,6 +49,10 @@ import static
org.jbpm.ruleflow.core.factory.EndNodeFactory.METHOD_TERMINATE;
public class EndNodeVisitor extends AbstractNodeVisitor<EndNode> {
+ public EndNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
+ }
+
@Override
protected String getNodeKey() {
return "endNode";
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EventNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EventNodeVisitor.java
index 66051eb049..fb79085ef5 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EventNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EventNodeVisitor.java
@@ -37,6 +37,10 @@ import static
org.jbpm.ruleflow.core.factory.EventNodeFactory.METHOD_VARIABLE_NA
public class EventNodeVisitor extends AbstractNodeVisitor<EventNode> {
+ public EventNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
+ }
+
@Override
protected String getNodeKey() {
return "eventNode";
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EventSubProcessNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EventSubProcessNodeVisitor.java
index ef9c441e44..5c468afc3c 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EventSubProcessNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EventSubProcessNodeVisitor.java
@@ -22,7 +22,6 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.stream.Stream;
-import org.jbpm.compiler.canonical.node.NodeVisitorBuilderService;
import org.jbpm.process.core.context.variable.VariableScope;
import org.jbpm.ruleflow.core.factory.EventSubProcessNodeFactory;
import org.jbpm.workflow.core.node.EventSubProcessNode;
@@ -36,8 +35,8 @@ import static
org.jbpm.ruleflow.core.factory.EventSubProcessNodeFactory.METHOD_K
public class EventSubProcessNodeVisitor extends
CompositeContextNodeVisitor<EventSubProcessNode> {
- public EventSubProcessNodeVisitor(NodeVisitorBuilderService
nodeVisitorService) {
- super(nodeVisitorService);
+ public EventSubProcessNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
}
@Override
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/FaultNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/FaultNodeVisitor.java
index e7de77ff57..d78deb1a72 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/FaultNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/FaultNodeVisitor.java
@@ -32,6 +32,10 @@ import static
org.jbpm.ruleflow.core.factory.FaultNodeFactory.METHOD_TERMINATE_P
public class FaultNodeVisitor extends AbstractNodeVisitor<FaultNode> {
+ public FaultNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
+ }
+
@Override
protected String getNodeKey() {
return "faultNode";
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ForEachNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ForEachNodeVisitor.java
index 0a964980d8..35b87f4159 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ForEachNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ForEachNodeVisitor.java
@@ -22,8 +22,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import org.jbpm.compiler.canonical.builtin.ReturnValueEvaluatorBuilderService;
-import org.jbpm.compiler.canonical.node.NodeVisitorBuilderService;
import org.jbpm.process.core.context.variable.VariableScope;
import org.jbpm.ruleflow.core.factory.ForEachNodeFactory;
import org.jbpm.workflow.core.Node;
@@ -46,11 +44,8 @@ import static
org.jbpm.ruleflow.core.factory.ForEachNodeFactory.METHOD_SEQUENTIA
public class ForEachNodeVisitor extends
AbstractCompositeNodeVisitor<ForEachNode> {
- private ReturnValueEvaluatorBuilderService
returnValueEvaluatorBuilderService;
-
- public ForEachNodeVisitor(NodeVisitorBuilderService nodeVisitorService,
ReturnValueEvaluatorBuilderService returnValueEvaluatorBuilderService) {
- super(nodeVisitorService);
- this.returnValueEvaluatorBuilderService =
returnValueEvaluatorBuilderService;
+ public ForEachNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
}
@Override
@@ -123,7 +118,7 @@ public class ForEachNodeVisitor extends
AbstractCompositeNodeVisitor<ForEachNode
String completionConditionDialect =
node.getCompletionConditionExpression().dialect();
String completionConditionExpression =
node.getCompletionConditionExpression().expression();
body.addStatement(getFactoryMethod(getNodeId(node),
ForEachNodeFactory.METHOD_COMPLETE_CONDITION,
- returnValueEvaluatorBuilderService.build(node,
completionConditionDialect, completionConditionExpression)));
+ getReturnValueEvaluatorBuilderService().build(node,
completionConditionDialect, completionConditionExpression)));
}
visitConnections(getNodeId(node), filterNodes.toArray(new
Node[filterNodes.size()]), body);
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/JoinNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/JoinNodeVisitor.java
index c4a6001162..7a9e27df62 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/JoinNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/JoinNodeVisitor.java
@@ -29,6 +29,10 @@ import static
org.jbpm.ruleflow.core.factory.JoinFactory.METHOD_TYPE;
public class JoinNodeVisitor extends AbstractNodeVisitor<Join> {
+ public JoinNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
+ }
+
@Override
protected String getNodeKey() {
return "joinNode";
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/LambdaSubProcessNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/LambdaSubProcessNodeVisitor.java
index 01722cf0e6..f05c4f0591 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/LambdaSubProcessNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/LambdaSubProcessNodeVisitor.java
@@ -61,6 +61,10 @@ import static
org.jbpm.ruleflow.core.factory.SubProcessNodeFactory.METHOD_WAIT_F
public class LambdaSubProcessNodeVisitor extends
AbstractNodeVisitor<SubProcessNode> {
+ public LambdaSubProcessNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
+ }
+
@Override
protected String getNodeKey() {
return "subProcessNode";
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/MilestoneNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/MilestoneNodeVisitor.java
index edab9d4d1e..d38bd04b2d 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/MilestoneNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/MilestoneNodeVisitor.java
@@ -29,6 +29,10 @@ import static
org.jbpm.ruleflow.core.factory.MilestoneNodeFactory.METHOD_CONDITI
public class MilestoneNodeVisitor extends AbstractNodeVisitor<MilestoneNode> {
+ public MilestoneNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
+ }
+
@Override
protected String getNodeKey() {
return "milestoneNode";
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/RuleSetNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/RuleSetNodeVisitor.java
index 5028ee6b96..dca1632deb 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/RuleSetNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/RuleSetNodeVisitor.java
@@ -64,11 +64,10 @@ public class RuleSetNodeVisitor extends
AbstractNodeVisitor<RuleSetNode> {
public static final Logger logger =
LoggerFactory.getLogger(ProcessToExecModelGenerator.class);
- private final ClassLoader contextClassLoader;
private final AssignableChecker assignableChecker;
public RuleSetNodeVisitor(ClassLoader contextClassLoader) {
- this.contextClassLoader = contextClassLoader;
+ super(contextClassLoader);
this.assignableChecker = AssignableChecker.create(contextClassLoader);
}
@@ -144,7 +143,7 @@ public class RuleSetNodeVisitor extends
AbstractNodeVisitor<RuleSetNode> {
private MethodCallExpr handleRuleUnit(VariableScope variableScope,
ProcessMetaData metadata, RuleSetNode ruleSetNode, String nodeName, RuleType
ruleType) {
String unitName = ruleType.getName();
- ProcessContextMetaModel processContext = new
ProcessContextMetaModel(variableScope, contextClassLoader);
+ ProcessContextMetaModel processContext = new
ProcessContextMetaModel(variableScope, getClassLoader());
RuleUnitDescription description;
try {
@@ -170,7 +169,7 @@ public class RuleSetNodeVisitor extends
AbstractNodeVisitor<RuleSetNode> {
}
private GeneratedRuleUnitDescription generateRuleUnitDescription(String
unitName, ProcessContextMetaModel processContext) {
- GeneratedRuleUnitDescription d = new
GeneratedRuleUnitDescription(unitName, contextClassLoader);
+ GeneratedRuleUnitDescription d = new
GeneratedRuleUnitDescription(unitName, getClassLoader());
for (Variable variable : processContext.getVariables()) {
d.putDatasourceVar(
variable.getName(),
@@ -214,7 +213,7 @@ public class RuleSetNodeVisitor extends
AbstractNodeVisitor<RuleSetNode> {
private Class<?> loadUnitClass(String unitName, String packageName) throws
ClassNotFoundException {
ClassNotFoundException ex;
try {
- return contextClassLoader.loadClass(unitName);
+ return getClassLoader().loadClass(unitName);
} catch (ClassNotFoundException e) {
ex = e;
}
@@ -223,7 +222,7 @@ public class RuleSetNodeVisitor extends
AbstractNodeVisitor<RuleSetNode> {
}
// maybe the name is not qualified. Let's try with tacking the
packageName at the front
try {
- return contextClassLoader.loadClass(packageName + "." + unitName);
+ return getClassLoader().loadClass(packageName + "." + unitName);
} catch (ClassNotFoundException e) {
// throw the original error
throw ex;
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/SplitNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/SplitNodeVisitor.java
index de434a17a7..49f3c9b541 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/SplitNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/SplitNodeVisitor.java
@@ -18,35 +18,19 @@
*/
package org.jbpm.compiler.canonical;
-import java.util.Collection;
-import java.util.Map.Entry;
-import java.util.Objects;
-import java.util.function.Predicate;
-
-import org.jbpm.compiler.canonical.builtin.ReturnValueEvaluatorBuilderService;
import org.jbpm.process.core.context.variable.VariableScope;
-import org.jbpm.process.instance.impl.ReturnValueConstraintEvaluator;
-import org.jbpm.process.instance.impl.ReturnValueEvaluator;
import org.jbpm.ruleflow.core.factory.SplitFactory;
-import org.jbpm.workflow.core.Constraint;
-import org.jbpm.workflow.core.impl.ConnectionRef;
import org.jbpm.workflow.core.node.Split;
-import com.github.javaparser.ast.expr.BooleanLiteralExpr;
-import com.github.javaparser.ast.expr.Expression;
import com.github.javaparser.ast.expr.IntegerLiteralExpr;
-import com.github.javaparser.ast.expr.StringLiteralExpr;
import com.github.javaparser.ast.stmt.BlockStmt;
-import static org.jbpm.ruleflow.core.factory.SplitFactory.METHOD_CONSTRAINT;
import static org.jbpm.ruleflow.core.factory.SplitFactory.METHOD_TYPE;
public class SplitNodeVisitor extends AbstractNodeVisitor<Split> {
- ReturnValueEvaluatorBuilderService returnValueEvaluatorBuilderService;
-
- public SplitNodeVisitor(ReturnValueEvaluatorBuilderService
returnValueEvaluatorBuilderService) {
- this.returnValueEvaluatorBuilderService =
returnValueEvaluatorBuilderService;
+ public SplitNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
}
@Override
@@ -61,40 +45,7 @@ public class SplitNodeVisitor extends
AbstractNodeVisitor<Split> {
.addStatement(getFactoryMethod(getNodeId(node), METHOD_TYPE,
new IntegerLiteralExpr(node.getType())));
visitMetaData(node.getMetaData(), body, getNodeId(node));
-
- if (node.getType() == Split.TYPE_OR || node.getType() ==
Split.TYPE_XOR) {
- for (Entry<ConnectionRef, Collection<Constraint>> entry :
node.getConstraints().entrySet()) {
- if (entry.getValue() == null || entry.getValue().isEmpty()) {
- continue;
- }
-
- for (Constraint constraint :
entry.getValue().stream().filter(Predicate.not(Objects::isNull)).toList()) {
- Expression returnValueEvaluator;
- if (constraint instanceof ReturnValueConstraintEvaluator) {
- ReturnValueEvaluator evaluator =
((ReturnValueConstraintEvaluator) constraint).getReturnValueEvaluator();
- returnValueEvaluator =
returnValueEvaluatorBuilderService.build(node,
- evaluator.dialect(),
- evaluator.expression(),
- evaluator.type(),
- evaluator.root());
-
- } else {
- returnValueEvaluator =
returnValueEvaluatorBuilderService.build(node,
- constraint.getDialect(),
- constraint.getConstraint());
- }
- body.addStatement(getFactoryMethod(getNodeId(node),
METHOD_CONSTRAINT,
-
getWorkflowElementConstructor(entry.getKey().getNodeId()),
- new
StringLiteralExpr(getOrDefault(entry.getKey().getConnectionId(), "")),
- new StringLiteralExpr(entry.getKey().getToType()),
- new StringLiteralExpr(constraint.getDialect()),
- returnValueEvaluator,
- new IntegerLiteralExpr(constraint.getPriority()),
- new BooleanLiteralExpr(constraint.isDefault())));
-
- }
- }
- }
+ addConstraints(node, getReturnValueEvaluatorBuilderService(), body);
body.addStatement(getDoneMethod(getNodeId(node)));
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/StartNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/StartNodeVisitor.java
index 20aac43511..42c0ceb3c8 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/StartNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/StartNodeVisitor.java
@@ -48,8 +48,9 @@ public class StartNodeVisitor extends
AbstractNodeVisitor<StartNode> {
private ReturnValueEvaluatorBuilderService
returnValueEvaluatorBuilderService;
- public StartNodeVisitor(ReturnValueEvaluatorBuilderService
returnValueEvaluatorBuilderService) {
- this.returnValueEvaluatorBuilderService =
returnValueEvaluatorBuilderService;
+ public StartNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
+ this.returnValueEvaluatorBuilderService =
ReturnValueEvaluatorBuilderService.instance(classLoader);
}
@Override
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/StateNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/StateNodeVisitor.java
index c800c3d65f..f3f40325b9 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/StateNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/StateNodeVisitor.java
@@ -18,29 +18,13 @@
*/
package org.jbpm.compiler.canonical;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.stream.Stream;
-
-import org.jbpm.compiler.canonical.node.NodeVisitorBuilderService;
-import org.jbpm.process.core.context.variable.VariableScope;
import org.jbpm.ruleflow.core.factory.StateNodeFactory;
-import org.jbpm.workflow.core.Constraint;
-import org.jbpm.workflow.core.impl.ConnectionRef;
import org.jbpm.workflow.core.node.StateNode;
-import com.github.javaparser.ast.expr.IntegerLiteralExpr;
-import com.github.javaparser.ast.expr.MethodCallExpr;
-import com.github.javaparser.ast.expr.StringLiteralExpr;
-import com.github.javaparser.utils.StringEscapeUtils;
-
-import static
org.jbpm.ruleflow.core.factory.StateNodeFactory.METHOD_CONSTRAINT;
-
public class StateNodeVisitor extends CompositeContextNodeVisitor<StateNode> {
- public StateNodeVisitor(NodeVisitorBuilderService nodeVisitorService) {
- super(nodeVisitorService);
+ public StateNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
}
@Override
@@ -58,27 +42,4 @@ public class StateNodeVisitor extends
CompositeContextNodeVisitor<StateNode> {
return "State";
}
- @Override
- public Stream<MethodCallExpr> visitCustomFields(StateNode node,
VariableScope variableScope) {
- if (node.getConstraints() == null) {
- return Stream.empty();
- }
-
- Collection<MethodCallExpr> result = new ArrayList<>();
- for (Map.Entry<ConnectionRef, Collection<Constraint>> entry :
node.getConstraints().entrySet()) {
- ConnectionRef ref = entry.getKey();
- for (Constraint constraint : entry.getValue()) {
- if (constraint != null) {
- result.add(getFactoryMethod(getNodeId(node),
METHOD_CONSTRAINT,
- getOrNullExpr(ref.getConnectionId()),
- getWorkflowElementConstructor(ref.getNodeId()),
- new StringLiteralExpr(ref.getToType()),
- new StringLiteralExpr(constraint.getDialect()),
- new
StringLiteralExpr(StringEscapeUtils.escapeJava(constraint.getConstraint())),
- new IntegerLiteralExpr(constraint.getPriority())));
- }
- }
- }
- return result.stream();
- }
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ThrowLinkNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ThrowLinkNodeVisitor.java
index 916cb0fe30..3505d46d70 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ThrowLinkNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ThrowLinkNodeVisitor.java
@@ -26,6 +26,10 @@ import com.github.javaparser.ast.stmt.BlockStmt;
public class ThrowLinkNodeVisitor extends AbstractNodeVisitor<ThrowLinkNode> {
+ public ThrowLinkNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
+ }
+
@Override
protected String getNodeKey() {
return "throwLinkNode";
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/TimerNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/TimerNodeVisitor.java
index b80a7650a8..effc80bdac 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/TimerNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/TimerNodeVisitor.java
@@ -34,6 +34,10 @@ import static
org.jbpm.ruleflow.core.factory.TimerNodeFactory.METHOD_TYPE;
public class TimerNodeVisitor extends AbstractNodeVisitor<TimerNode> {
+ public TimerNodeVisitor(ClassLoader classLoader) {
+ super(classLoader);
+ }
+
@Override
protected String getNodeKey() {
return "timerNode";
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/WorkItemNodeVisitor.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/WorkItemNodeVisitor.java
index 479e80775e..4441f9d616 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/WorkItemNodeVisitor.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/WorkItemNodeVisitor.java
@@ -71,10 +71,8 @@ public class WorkItemNodeVisitor<T extends WorkItemNode>
extends AbstractNodeVis
}
}
- private final ClassLoader contextClassLoader;
-
public WorkItemNodeVisitor(ClassLoader contextClassLoader) {
- this.contextClassLoader = contextClassLoader;
+ super(contextClassLoader);
}
@Override
@@ -92,7 +90,7 @@ public class WorkItemNodeVisitor<T extends WorkItemNode>
extends AbstractNodeVis
final TaskDescriptor taskDescriptor = new
TaskDescriptorBuilder(workName)
.withProcessMetadata(metadata)
.withWorkItemNode(node)
- .withClassloader(contextClassLoader)
+ .withClassloader(getClassLoader())
.build();
workName = taskDescriptor.getName();
metadata.getGeneratedHandlers().put(workName,
taskDescriptor.generateHandlerClassForService());
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/ActionNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/ActionNodeVisitorBuilder.java
index 9349e5bc61..3aa93462c3 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/ActionNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/ActionNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class ActionNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new ActionNodeVisitor();
+ return new ActionNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/BoundaryEventNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/BoundaryEventNodeVisitorBuilder.java
index 7380e2194b..c71d8f7a21 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/BoundaryEventNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/BoundaryEventNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class BoundaryEventNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new BoundaryEventNodeVisitor();
+ return new BoundaryEventNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/CatchLinkNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/CatchLinkNodeVisitorBuilder.java
index aa5484ceab..3ede076f7f 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/CatchLinkNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/CatchLinkNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class CatchLinkNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new CatchLinkNodeVisitor();
+ return new CatchLinkNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/CompositeContextNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/CompositeContextNodeVisitorBuilder.java
index c30cbc9898..800183910c 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/CompositeContextNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/CompositeContextNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class CompositeContextNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new CompositeContextNodeVisitor(nodeVisitorService);
+ return new CompositeContextNodeVisitor<>(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/DynamicNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/DynamicNodeVisitorBuilder.java
index fdf5f54821..84562c0968 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/DynamicNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/DynamicNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class DynamicNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new DynamicNodeVisitor(nodeVisitorService, classLoader);
+ return new DynamicNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/EndNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/EndNodeVisitorBuilder.java
index 75c54c4214..7c41e3e60a 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/EndNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/EndNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class EndNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new EndNodeVisitor();
+ return new EndNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/EventNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/EventNodeVisitorBuilder.java
index 030ef55675..1344c47634 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/EventNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/EventNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class EventNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new EventNodeVisitor();
+ return new EventNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/EventSubProcessNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/EventSubProcessNodeVisitorBuilder.java
index afae970aa5..6cff377322 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/EventSubProcessNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/EventSubProcessNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class EventSubProcessNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new EventSubProcessNodeVisitor(nodeVisitorService);
+ return new EventSubProcessNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/FaultNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/FaultNodeVisitorBuilder.java
index 9c6dfe5f2d..062cb48a4a 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/FaultNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/FaultNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class FaultNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new FaultNodeVisitor();
+ return new FaultNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/ForEachNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/ForEachNodeVisitorBuilder.java
index 1f450a5092..334fb63d4b 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/ForEachNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/ForEachNodeVisitorBuilder.java
@@ -20,7 +20,6 @@ package org.jbpm.compiler.canonical.node;
import org.jbpm.compiler.canonical.AbstractNodeVisitor;
import org.jbpm.compiler.canonical.ForEachNodeVisitor;
-import org.jbpm.compiler.canonical.builtin.ReturnValueEvaluatorBuilderService;
import org.jbpm.workflow.core.node.ForEachNode;
import org.kie.api.definition.process.Node;
@@ -33,7 +32,7 @@ public class ForEachNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new ForEachNodeVisitor(nodeVisitorService,
ReturnValueEvaluatorBuilderService.instance(classLoader));
+ return new ForEachNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/JoinNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/JoinNodeVisitorBuilder.java
index 6a14cbdb40..9a0d7e5d6b 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/JoinNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/JoinNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class JoinNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new JoinNodeVisitor();
+ return new JoinNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/MilestoneNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/MilestoneNodeVisitorBuilder.java
index 7d50d9d859..43ed2ec813 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/MilestoneNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/MilestoneNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class MilestoneNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new MilestoneNodeVisitor();
+ return new MilestoneNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/SplitNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/SplitNodeVisitorBuilder.java
index ca874e76af..48fe7eafca 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/SplitNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/SplitNodeVisitorBuilder.java
@@ -20,7 +20,6 @@ package org.jbpm.compiler.canonical.node;
import org.jbpm.compiler.canonical.AbstractNodeVisitor;
import org.jbpm.compiler.canonical.SplitNodeVisitor;
-import org.jbpm.compiler.canonical.builtin.ReturnValueEvaluatorBuilderService;
import org.jbpm.workflow.core.node.Split;
import org.kie.api.definition.process.Node;
@@ -33,7 +32,7 @@ public class SplitNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new
SplitNodeVisitor(ReturnValueEvaluatorBuilderService.instance(classLoader));
+ return new SplitNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/StartNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/StartNodeVisitorBuilder.java
index ad3a55a243..04183a2b42 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/StartNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/StartNodeVisitorBuilder.java
@@ -20,7 +20,6 @@ package org.jbpm.compiler.canonical.node;
import org.jbpm.compiler.canonical.AbstractNodeVisitor;
import org.jbpm.compiler.canonical.StartNodeVisitor;
-import org.jbpm.compiler.canonical.builtin.ReturnValueEvaluatorBuilderService;
import org.jbpm.workflow.core.node.StartNode;
import org.kie.api.definition.process.Node;
@@ -33,7 +32,8 @@ public class StartNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new
StartNodeVisitor(ReturnValueEvaluatorBuilderService.instance(classLoader));
+ return new StartNodeVisitor(classLoader);
+
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/StateNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/StateNodeVisitorBuilder.java
index 50a50b9b06..b61bc2c148 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/StateNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/StateNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class StateNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new StateNodeVisitor(nodeVisitorService);
+ return new StateNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/SubProcessNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/SubProcessNodeVisitorBuilder.java
index 671aff96b4..3abf43452d 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/SubProcessNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/SubProcessNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class SubProcessNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new LambdaSubProcessNodeVisitor();
+ return new LambdaSubProcessNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/ThrowLinkNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/ThrowLinkNodeVisitorBuilder.java
index df851519b7..72680887bb 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/ThrowLinkNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/ThrowLinkNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class ThrowLinkNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new ThrowLinkNodeVisitor();
+ return new ThrowLinkNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/TimerNodeVisitorBuilder.java
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/TimerNodeVisitorBuilder.java
index 658e31c68f..063df525bd 100644
---
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/TimerNodeVisitorBuilder.java
+++
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/node/TimerNodeVisitorBuilder.java
@@ -32,7 +32,7 @@ public class TimerNodeVisitorBuilder implements
NodeVisitorBuilder {
@Override
public AbstractNodeVisitor<? extends Node>
visitor(NodeVisitorBuilderService nodeVisitorService, ClassLoader classLoader) {
- return new TimerNodeVisitor();
+ return new TimerNodeVisitor(classLoader);
}
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/RuleFlowProcess.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/RuleFlowProcess.java
index 8bb2aad0f1..226ee36633 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/RuleFlowProcess.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/RuleFlowProcess.java
@@ -60,6 +60,8 @@ public class RuleFlowProcess extends WorkflowProcessImpl {
ExceptionScope exceptionScope = new ExceptionScope();
addContext(exceptionScope);
setDefaultContext(exceptionScope);
+ // backward compatibility.
+ setMetaData("jbpm.enable.multi.con",
System.getProperty("jbpm.enable.multi.con"));
}
public VariableScope getVariableScope() {
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/factory/NodeFactory.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/factory/NodeFactory.java
index bcbfb1f475..e29f367f70 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/factory/NodeFactory.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/factory/NodeFactory.java
@@ -19,13 +19,17 @@
package org.jbpm.ruleflow.core.factory;
import org.jbpm.process.core.context.variable.Mappable;
+import org.jbpm.process.instance.impl.ReturnValueConstraintEvaluator;
+import org.jbpm.process.instance.impl.ReturnValueEvaluator;
import org.jbpm.ruleflow.core.RuleFlowNodeContainerFactory;
import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.NodeContainer;
+import org.jbpm.workflow.core.impl.ConnectionRef;
+import org.jbpm.workflow.core.impl.NodeImpl;
import org.kie.api.definition.process.WorkflowElementIdentifier;
public abstract class NodeFactory<T extends NodeFactory<T, P>, P extends
RuleFlowNodeContainerFactory<P, ?>> implements MappableNodeFactory<T> {
-
+ public static final String METHOD_CONSTRAINT = "constraint";
public static final String METHOD_NAME = "name";
public static final String METHOD_METADATA = "metaData";
public static final String METHOD_DONE = "done";
@@ -71,4 +75,20 @@ public abstract class NodeFactory<T extends NodeFactory<T,
P>, P extends RuleFlo
return (Mappable) node;
}
+ public T constraint(WorkflowElementIdentifier toNodeId, String name,
String type, String dialect, ReturnValueEvaluator evaluator, int priority) {
+ return constraint(toNodeId, name, type, dialect, evaluator, priority,
false);
+ }
+
+ public T constraint(WorkflowElementIdentifier toNodeId, String name,
String type, String dialect, ReturnValueEvaluator evaluator, int priority,
boolean isDefault) {
+ ReturnValueConstraintEvaluator constraintImpl = new
ReturnValueConstraintEvaluator();
+ constraintImpl.setName(name);
+ constraintImpl.setType(type);
+ constraintImpl.setDialect(dialect);
+ constraintImpl.setPriority(priority);
+ constraintImpl.setEvaluator(evaluator);
+ constraintImpl.setConstraint("expression already given as evaluator");
+ constraintImpl.setDefault(isDefault);
+ ((NodeImpl) node).addConstraint(new ConnectionRef(name, toNodeId,
Node.CONNECTION_DEFAULT_TYPE), constraintImpl);
+ return (T) this;
+ }
}
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/factory/SplitFactory.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/factory/SplitFactory.java
index 63228ad23e..75f4507f00 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/factory/SplitFactory.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/factory/SplitFactory.java
@@ -18,19 +18,14 @@
*/
package org.jbpm.ruleflow.core.factory;
-import org.jbpm.process.instance.impl.ReturnValueConstraintEvaluator;
-import org.jbpm.process.instance.impl.ReturnValueEvaluator;
import org.jbpm.ruleflow.core.RuleFlowNodeContainerFactory;
-import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.NodeContainer;
-import org.jbpm.workflow.core.impl.ConnectionRef;
import org.jbpm.workflow.core.node.Split;
import org.kie.api.definition.process.WorkflowElementIdentifier;
public class SplitFactory<T extends RuleFlowNodeContainerFactory<T, ?>>
extends NodeFactory<SplitFactory<T>, T> {
public static final String METHOD_TYPE = "type";
- public static final String METHOD_CONSTRAINT = "constraint";
public SplitFactory(T nodeContainerFactory, NodeContainer nodeContainer,
WorkflowElementIdentifier id) {
super(nodeContainerFactory, nodeContainer, new Split(), id);
@@ -60,22 +55,4 @@ public class SplitFactory<T extends
RuleFlowNodeContainerFactory<T, ?>> extends
public ConstraintFactory<SplitFactory<T>>
constraintBuilder(WorkflowElementIdentifier toNodeId, String name, String type,
String dialect, String constraint) {
return new ConstraintFactory<>(this, toNodeId, name, type, dialect,
constraint);
}
-
- public SplitFactory<T> constraint(WorkflowElementIdentifier toNodeId,
String name, String type, String dialect, ReturnValueEvaluator evaluator, int
priority) {
- return constraint(toNodeId, name, type, dialect, evaluator, priority,
false);
- }
-
- public SplitFactory<T> constraint(WorkflowElementIdentifier toNodeId,
String name, String type, String dialect, ReturnValueEvaluator evaluator, int
priority, boolean isDefault) {
- ReturnValueConstraintEvaluator constraintImpl = new
ReturnValueConstraintEvaluator();
- constraintImpl.setName(name);
- constraintImpl.setType(type);
- constraintImpl.setDialect(dialect);
- constraintImpl.setPriority(priority);
- constraintImpl.setEvaluator(evaluator);
- constraintImpl.setConstraint("expression already given as evaluator");
- constraintImpl.setDefault(isDefault);
- getSplit().addConstraint(
- new ConnectionRef(name, toNodeId,
Node.CONNECTION_DEFAULT_TYPE), constraintImpl);
- return this;
- }
}
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 4410c19d6d..0ea5dee550 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
@@ -297,7 +297,7 @@ public abstract class NodeImpl implements Node,
ContextResolver, Mappable {
if (list.size() == 1) {
return list.get(0);
}
- if ("true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
return list.get(0);
} else {
throw new IllegalArgumentException(
@@ -317,7 +317,7 @@ public abstract class NodeImpl implements Node,
ContextResolver, Mappable {
if (list.size() == 1) {
return list.get(0);
}
- if ("true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
return list.get(0);
} else {
throw new IllegalArgumentException(
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 aff798ca7f..9144d42833 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
@@ -53,7 +53,7 @@ public class ActionNode extends ExtendedNodeImpl {
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] only accepts default incoming connection
type!");
}
- if (getFrom() != null &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getFrom() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] cannot have more than one incoming
connection!");
@@ -68,7 +68,7 @@ public class ActionNode extends ExtendedNodeImpl {
"This type of node [" + connection.getFrom().getUniqueId()
+ ", " + connection.getFrom().getName()
+ "] only accepts default outgoing connection
type!");
}
- if (getTo() != null &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getTo() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"This type of node [" + connection.getFrom().getUniqueId()
+ ", " + connection.getFrom().getName()
+ "] cannot have more than one outgoing
connection!");
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 eb45e40590..ae88f43956 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
@@ -58,7 +58,7 @@ public class EndNode extends ExtendedNodeImpl {
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] only accepts default incoming connection
type!");
}
- if (getFrom() != null &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getFrom() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] cannot have more than one incoming
connection!");
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 968ecb96df..42d216f483 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
@@ -104,7 +104,7 @@ public class EventNode extends ExtendedNodeImpl implements
EventNodeInterface {
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] only accepts default incoming connection
type!");
}
- if (getFrom() != null &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getFrom() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] cannot have more than one incoming
connection!");
@@ -119,7 +119,7 @@ public class EventNode extends ExtendedNodeImpl implements
EventNodeInterface {
"This type of node [" + connection.getFrom().getUniqueId()
+ ", " + connection.getFrom().getName()
+ "] only accepts default outgoing connection
type!");
}
- if (getTo() != null &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getTo() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"This type of node [" + connection.getFrom().getUniqueId()
+ ", " + connection.getFrom().getName()
+ "] cannot have more than one outgoing
connection!");
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 ddac709244..7ffabedcda 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
@@ -59,7 +59,7 @@ public class MilestoneNode extends StateBasedNode implements
Constrainable {
if (!Node.CONNECTION_DEFAULT_TYPE.equals(type)) {
throwValidationException(connection, "only accepts default
incoming connection type!");
}
- if (getFrom() != null &&
!Boolean.parseBoolean(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getFrom() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throwValidationException(connection, "cannot have more than one
incoming connection!");
}
}
@@ -70,7 +70,7 @@ public class MilestoneNode extends StateBasedNode implements
Constrainable {
if (!Node.CONNECTION_DEFAULT_TYPE.equals(type)) {
throwValidationException(connection, "only accepts default
outgoing connection type!");
}
- if (getTo() != null &&
!Boolean.parseBoolean(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getTo() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throwValidationException(connection, "cannot have more than one
outgoing connection!");
}
}
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 5f3a242dd8..3d129f3b22 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
@@ -105,7 +105,7 @@ public class RuleSetNode extends StateBasedNode implements
ContextContainer {
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] only accepts default incoming connection
type!");
}
- if (getFrom() != null &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getFrom() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] cannot have more than one incoming
connection!");
@@ -120,7 +120,7 @@ public class RuleSetNode extends StateBasedNode implements
ContextContainer {
"This type of node [" + connection.getFrom().getUniqueId()
+ ", " + connection.getFrom().getName()
+ "] only accepts default outgoing connection
type!");
}
- if (getTo() != null &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getTo() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"This type of node [" + connection.getFrom().getUniqueId()
+ ", " + connection.getFrom().getName()
+ "] cannot have more than one outgoing
connection!");
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 20f90546da..fe2114905c 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
@@ -143,7 +143,7 @@ public class Split extends NodeImpl implements
Constrainable {
+ "] only accepts default incoming connection
type!");
}
- if (!getIncomingConnections(Node.CONNECTION_DEFAULT_TYPE).isEmpty() &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (!getIncomingConnections(Node.CONNECTION_DEFAULT_TYPE).isEmpty() &&
!Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] cannot have more than one incoming
connection!");
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 cfc91ddeec..3743bbd157 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
@@ -92,7 +92,7 @@ public class StartNode extends ExtendedNodeImpl {
throw new IllegalArgumentException(
"A start node [" + this.getUniqueId() + ", " +
this.getName() + "] only accepts default outgoing connection type!");
}
- if (getTo() != null &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getTo() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"A start node [" + this.getUniqueId() + ", " +
this.getName() + "] cannot have more than one outgoing connection!");
}
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 80b6f75f87..77f873ddc7 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
@@ -77,7 +77,7 @@ public class SubProcessNode extends StateBasedNode implements
ContextContainer {
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] only accepts default incoming connection
type!");
}
- if (getFrom() != null &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getFrom() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] cannot have more than one incoming
connection!");
@@ -92,7 +92,7 @@ public class SubProcessNode extends StateBasedNode implements
ContextContainer {
"This type of node [" + connection.getFrom().getUniqueId()
+ ", " + connection.getFrom().getName()
+ "] only accepts default outgoing connection
type!");
}
- if (getTo() != null &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getTo() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"This type of node [" + connection.getFrom().getUniqueId()
+ ", " + connection.getFrom().getName()
+ "] cannot have more than one outgoing
connection!");
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 a3a4e29d95..e8ce9a5495 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
@@ -45,7 +45,7 @@ public class TimerNode extends ExtendedNodeImpl {
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] only accepts default incoming connection
type!");
}
- if (getFrom() != null &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getFrom() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] cannot have more than one incoming
connection!");
@@ -60,7 +60,7 @@ public class TimerNode extends ExtendedNodeImpl {
"This type of node [" + connection.getFrom().getUniqueId()
+ ", " + connection.getFrom().getName()
+ "] only accepts default outgoing connection
type!");
}
- if (getTo() != null &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getTo() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"This type of node [" + connection.getFrom().getUniqueId()
+ ", " + connection.getFrom().getName()
+ "] cannot have more than one outgoing
connection!");
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 dd1357b5ff..d7cd3c06c1 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
@@ -66,7 +66,7 @@ public class WorkItemNode extends StateBasedNode implements
ContextContainer {
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] only accepts default incoming connection
type!");
}
- if (getFrom() != null &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getFrom() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"This type of node [" + connection.getTo().getUniqueId() +
", " + connection.getTo().getName()
+ "] cannot have more than one incoming
connection!");
@@ -81,7 +81,7 @@ public class WorkItemNode extends StateBasedNode implements
ContextContainer {
"This type of node [" + connection.getFrom().getUniqueId()
+ ", " + connection.getFrom().getName()
+ "] only accepts default outgoing connection
type!");
}
- if (getTo() != null &&
!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (getTo() != null && !Boolean.parseBoolean((String)
getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
throw new IllegalArgumentException(
"This type of node [" + connection.getFrom().getUniqueId()
+ ", " + connection.getFrom().getName()
+ "] cannot have more than one outgoing
connection!");
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/NodeInstanceImpl.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/NodeInstanceImpl.java
index f71a5ef44f..a5e452a24a 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/NodeInstanceImpl.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/NodeInstanceImpl.java
@@ -314,7 +314,7 @@ public abstract class NodeInstanceImpl implements
org.jbpm.workflow.instance.Nod
List<Connection> connections = null;
if (node != null) {
- if ("true".equals(System.getProperty("jbpm.enable.multi.con")) &&
!((NodeImpl) node).getConstraints().isEmpty()) {
+ if (Boolean.parseBoolean((String)
getProcessInstance().getProcess().getMetaData().get("jbpm.enable.multi.con"))
&& !((NodeImpl) node).getConstraints().isEmpty()) {
int priority;
connections = ((NodeImpl)
node).getDefaultOutgoingConnections();
boolean found = false;
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/ForEachNodeInstance.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/ForEachNodeInstance.java
index 453c700fbb..339f48d3f2 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/ForEachNodeInstance.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/ForEachNodeInstance.java
@@ -293,7 +293,7 @@ public class ForEachNodeInstance extends
CompositeContextNodeInstance {
((NodeInstanceContainer)
getNodeInstanceContainer()).removeNodeInstance(this);
if (getForEachNode().isWaitForCompletion()) {
- if
(!"true".equals(System.getProperty("jbpm.enable.multi.con"))) {
+ if (!Boolean.parseBoolean((String)
getForEachNode().getProcess().getMetaData().get("jbpm.enable.multi.con"))) {
triggerConnection(getForEachJoinNode().getTo());
} else {
List<Connection> connections =
getForEachJoinNode().getOutgoingConnections(Node.CONNECTION_DEFAULT_TYPE);
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-ConditionalStart.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/event/BPMN2-ConditionalStart.bpmn2
similarity index 89%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-ConditionalStart.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/event/BPMN2-ConditionalStart.bpmn2
index 441c7c6741..d0f0fc7a73 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-ConditionalStart.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/event/BPMN2-ConditionalStart.bpmn2
@@ -29,17 +29,19 @@
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
xmlns:tns="http://www.jboss.org/drools">
-
- <process processType="Private" isExecutable="true" id="Minimal"
name="Minimal Process" tns:packageName="com.sample" >
+ <itemDefinition id="_xItem" structureRef="org.jbpm.bpmn2.objects.Person" />
+ <process processType="Private" isExecutable="true" id="ConditionalStart"
name="Minimal Process" tns:packageName="org.jbpm.bpmn2.event" >
<extensionElements>
<tns:import name="org.jbpm.bpmn2.objects.Person" />
</extensionElements>
+ <property id="person" itemSubjectRef="_xItem"/>
+
<!-- nodes -->
<startEvent id="_1" name="StartProcess" >
<conditionalEventDefinition>
- <condition xsi:type="tFormalExpression"
language="http://www.jboss.org/drools/rule">Person(name == "john")</condition>
+ <condition xsi:type="tFormalExpression"
language="http://www.java.com/java">"john".equals(person.getName())</condition>
</conditionalEventDefinition>
</startEvent>
<scriptTask id="_2" name="Hello" >
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ConditionalFlowWithoutGateway.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ConditionalFlowWithoutGateway.bpmn2
similarity index 88%
copy from
jbpm/jbpm-tests/src/test/resources/BPMN2-ConditionalFlowWithoutGateway.bpmn2
copy to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ConditionalFlowWithoutGateway.bpmn2
index f6816308fa..63a64e43fa 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ConditionalFlowWithoutGateway.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ConditionalFlowWithoutGateway.bpmn2
@@ -18,9 +18,19 @@
~ under the License.
-->
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.omg.org/bpmn20"
xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
xmlns:drools="http://www.jboss.org/drools" id="_OSAkwHM-EeGROt7AmBKBUg"
xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
targetNamespace="http:/ [...]
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xmlns="http://www.omg.org/bpmn20"
+ xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL"
+ xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
+ xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
xmlns:drools="http://www.jboss.org/drools" id="_OSAkwHM-EeGROt7AmBKBUg"
+ xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
targetNamespace="http://www.omg.org/bpmn20">
<bpmn2:itemDefinition id="_xItem" structureRef="Integer"/>
- <bpmn2:process id="designer.conditional-flow"
drools:packageName="org.jboss.qa.brms.jbpm.functional.bpmn2.designer"
name="conditional-flow" isExecutable="true">
+ <bpmn2:process id="ConditionalFlowWithoutGateway"
drools:packageName="org.jbpm.bpmn2.flow" name="conditional-flow"
isExecutable="true">
+ <bpmn2:extensionElements>
+ <drools:metaData name="jbpm.enable.multi.con">
+ <drools:metaValue><![CDATA[true]]></drools:metaValue>
+ </drools:metaData>
+ </bpmn2:extensionElements>
<bpmn2:property id="x" itemSubjectRef="_xItem"/>
<bpmn2:startEvent id="_CF9831F9-AFE1-4F57-86C4-662C73090C42"
drools:bgcolor="#ffffff" name="start">
<bpmn2:outgoing>_1897CC4D-9026-42F4-A3E9-663EBD1B00F3</bpmn2:outgoing>
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveGatewayWithNoConditionsDefined.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveGatewayWithNoConditionsDefined.bpmn2
similarity index 96%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveGatewayWithNoConditionsDefined.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveGatewayWithNoConditionsDefined.bpmn2
index 1e249fe614..6ec613905b 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveGatewayWithNoConditionsDefined.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveGatewayWithNoConditionsDefined.bpmn2
@@ -19,7 +19,7 @@
-->
<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
xmlns:drools="http://www.jboss.org/drools"
xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
id="Definitions_1" targetNamespace="http://www.jboss.org/drools">
- <bpmn2:process id="BPMN2-ExclusiveGatewayWithNoConditionsDefined"
drools:version="1" drools:packageName="defaultPackage" drools:adHoc="false"
name="Default Process" isExecutable="true">
+ <bpmn2:process id="ExclusiveGatewayWithNoConditionsDefined"
drools:version="1" drools:packageName="org.jbpm.bpmn2.flow"
drools:adHoc="false" name="Default Process" isExecutable="true">
<bpmn2:startEvent id="StartEvent_1" name="">
<bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
</bpmn2:startEvent>
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitDefault.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitDefault.bpmn2
similarity index 100%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitDefault.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitDefault.bpmn2
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitDefaultNoCondition.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitDefaultNoCondition.bpmn2
similarity index 95%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitDefaultNoCondition.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitDefaultNoCondition.bpmn2
index 4592a473cb..2edb832432 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitDefaultNoCondition.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitDefaultNoCondition.bpmn2
@@ -31,7 +31,7 @@
<itemDefinition id="_falseBoolItem" structureRef="java.lang.Boolean" />
- <process processType="Private" isExecutable="true" id="com.sample.test"
name="Test" >
+ <process processType="Private" isExecutable="true"
id="ExclusiveSplitDefaultNoCondition" name="Test"
tns:packageName="org.jbpm.bpmn2.flow" >
<!-- process variables -->
<property id="x" itemSubjectRef="_falseBoolItem"/>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitXPath.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitXPath.bpmn2
similarity index 100%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitXPath.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitXPath.bpmn2
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitXPath-advanced.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitXPathAdvanced.bpmn2
similarity index 97%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitXPath-advanced.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitXPathAdvanced.bpmn2
index 3d874d8714..af73961bda 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitXPath-advanced.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitXPathAdvanced.bpmn2
@@ -32,7 +32,7 @@
<itemDefinition id="_xItem" structureRef="Object" />
<itemDefinition id="_yItem" structureRef="String" />
- <process processType="Private" isExecutable="true" id="com.sample.test"
name="Test" >
+ <process processType="Private" isExecutable="true"
id="ExclusiveSplitXPathAdvanced" name="Test"
tns:packageName="org.jbpm.bpmn2.flow" >
<!-- process variables -->
<property id="x" itemSubjectRef="_xItem"/>
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitXPath-advanced-vars-not-signaled.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitXPathAdvancedVarsNotSignaled.bpmn2
similarity index 97%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitXPath-advanced-vars-not-signaled.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitXPathAdvancedVarsNotSignaled.bpmn2
index b00347d6a7..ed6781736a 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitXPath-advanced-vars-not-signaled.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitXPathAdvancedVarsNotSignaled.bpmn2
@@ -32,7 +32,7 @@
<itemDefinition id="_xItem" structureRef="Object" />
<itemDefinition id="_yItem" structureRef="String" />
- <process processType="Private" isExecutable="true" id="com.sample.test"
name="Test" >
+ <process processType="Private" isExecutable="true"
id="ExclusiveSplitXPathAdvancedVarsNotSignaled" name="Test"
tns:packageName="org.jbpm.bpmn2.flow" >
<!-- process variables -->
<property id="x" itemSubjectRef="_xItem"/>
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitXPath-advanced-with-vars.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitXPathAdvancedWithVars.bpmn2
similarity index 97%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitXPath-advanced-with-vars.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitXPathAdvancedWithVars.bpmn2
index 53ac83b976..473d81c998 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExclusiveSplitXPath-advanced-with-vars.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-ExclusiveSplitXPathAdvancedWithVars.bpmn2
@@ -32,7 +32,7 @@
<itemDefinition id="_xItem" structureRef="Object" />
<itemDefinition id="_yItem" structureRef="String" />
- <process processType="Private" isExecutable="true" id="com.sample.test"
name="Test" >
+ <process processType="Private" isExecutable="true"
id="ExclusiveSplitXPathAdvancedWithVars" name="Test"
tns:packageName="org.jbpm.bpmn2.flow">
<!-- process variables -->
<property id="x" itemSubjectRef="_xItem"/>
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-GatewaySplit-SequenceConditions.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-GatewaySplitSequenceConditions.bpmn2
similarity index 98%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-GatewaySplit-SequenceConditions.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-GatewaySplitSequenceConditions.bpmn2
index b5b98479de..1e3f71617e 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-GatewaySplit-SequenceConditions.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-GatewaySplitSequenceConditions.bpmn2
@@ -31,7 +31,7 @@
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
xmlns:tns="http://www.jboss.org/drools">
- <process processType="Private" isExecutable="true" id="GatewayTest"
name="GatewayTest" >
+ <process processType="Private" isExecutable="true"
id="GatewaySplitSequenceConditions" name="GatewayTest"
tns:packageName="org.jbpm.bpmn2.flow" >
<!-- nodes -->
<startEvent id="_1" name="StartProcess" />
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-gatewayTest.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-GatewayTest.bpmn2
similarity index 91%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-gatewayTest.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-GatewayTest.bpmn2
index 78a3574a6a..8daceb7388 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-gatewayTest.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-GatewayTest.bpmn2
@@ -17,11 +17,15 @@
~ under the License.
-->
-<bpmn2:definitions xmlns:bpmn2='http://www.omg.org/spec/BPMN/20100524/MODEL'
xmlns:xrm='http://www.intalio.com/cloud/xrm'
typeLanguage='http://www.java.com/javaTypes'
expressionLanguage='http://www.mvel.org/2.0' id='600355600991789200'
targetNamespace=''>
+<bpmn2:definitions xmlns:bpmn2='http://www.omg.org/spec/BPMN/20100524/MODEL'
+xmlns:xrm='http://www.intalio.com/cloud/xrm'
typeLanguage='http://www.java.com/javaTypes'
expressionLanguage='http://www.mvel.org/2.0' id='600355600991789200'
+targetNamespace=''
+xmlns:drools="http://www.jboss.org/drools"
+>
<bpmn2:import importType='xrm' namespace='http://www.intalio.com/cloud/xrm'/>
<bpmn2:itemDefinition id='objectType' structureRef='org.w3c.dom.Document'/>
<bpmn2:itemDefinition id='startype' structureRef='org.w3c.dom.Node'/>
- <bpmn2:process id='process'>
+ <bpmn2:process id='GatewayTest' drools:packageName="org.jbpm.bpmn2.flow">
<bpmn2:property id='instanceMetadata' itemSubjectRef='objectType'/>
<bpmn2:property id='processMetadata' itemSubjectRef='objectType'/>
<bpmn2:property id='startMessage' itemSubjectRef='startype'/>
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-InclusiveSplitDefault.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-InclusiveSplitDefault.bpmn2
similarity index 100%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-InclusiveSplitDefault.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/flow/BPMN2-InclusiveSplitDefault.bpmn2
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/CompilationTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/CompilationTest.java
index 0235d3158c..32d6805030 100755
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/CompilationTest.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/CompilationTest.java
@@ -46,7 +46,7 @@ public class CompilationTest extends JbpmBpmn2TestCase {
TestJavaProcessDialect javaProcessDialect = new
TestJavaProcessDialect();
ProcessDialectRegistry.setDialect("java", javaProcessDialect);
- String filename = "BPMN2-GatewaySplit-SequenceConditions.bpmn2";
+ String filename =
"org/jbpm/bpmn2/flow/BPMN2-GatewaySplitSequenceConditions.bpmn2";
kruntime = createKogitoProcessRuntime(filename);
assertThat(javaProcessDialect.getActionDescrs()).as("No " +
ActionDescr.class.getSimpleName() + " instances caught for
testing!").isNotEmpty();
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/FlowTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/FlowTest.java
index aaa0fe5a16..a9a088329f 100755
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/FlowTest.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/FlowTest.java
@@ -29,6 +29,22 @@ import java.util.Map;
import javax.xml.parsers.DocumentBuilderFactory;
+import org.jbpm.bpmn2.flow.ConditionalFlowWithoutGatewayModel;
+import org.jbpm.bpmn2.flow.ConditionalFlowWithoutGatewayProcess;
+import org.jbpm.bpmn2.flow.ExclusiveSplitDefaultModel;
+import org.jbpm.bpmn2.flow.ExclusiveSplitDefaultNoConditionModel;
+import org.jbpm.bpmn2.flow.ExclusiveSplitDefaultNoConditionProcess;
+import org.jbpm.bpmn2.flow.ExclusiveSplitDefaultProcess;
+import org.jbpm.bpmn2.flow.ExclusiveSplitXPathAdvancedModel;
+import org.jbpm.bpmn2.flow.ExclusiveSplitXPathAdvancedProcess;
+import org.jbpm.bpmn2.flow.ExclusiveSplitXPathAdvancedVarsNotSignaledModel;
+import org.jbpm.bpmn2.flow.ExclusiveSplitXPathAdvancedVarsNotSignaledProcess;
+import org.jbpm.bpmn2.flow.ExclusiveSplitXPathAdvancedWithVarsModel;
+import org.jbpm.bpmn2.flow.ExclusiveSplitXPathAdvancedWithVarsProcess;
+import org.jbpm.bpmn2.flow.GatewayTestModel;
+import org.jbpm.bpmn2.flow.GatewayTestProcess;
+import org.jbpm.bpmn2.flow.InclusiveSplitDefaultModel;
+import org.jbpm.bpmn2.flow.InclusiveSplitDefaultProcess;
import org.jbpm.bpmn2.loop.MultiInstanceLoopCharacteristicsTaskModel;
import org.jbpm.bpmn2.loop.MultiInstanceLoopCharacteristicsTaskProcess;
import org.jbpm.bpmn2.objects.TestWorkItemHandler;
@@ -38,6 +54,7 @@ import
org.jbpm.process.instance.context.variable.VariableScopeInstance;
import org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler;
import org.jbpm.process.instance.impl.humantask.InternalHumanTaskWorkItem;
import org.jbpm.test.util.NodeLeftCountDownProcessEventListener;
+import org.jbpm.test.utils.EventTrackerProcessListener;
import org.jbpm.test.utils.ProcessTestHelper;
import org.jbpm.workflow.instance.impl.NodeInstanceImpl;
import org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl;
@@ -63,6 +80,8 @@ import
org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
import org.kie.kogito.internal.process.runtime.KogitoProcessRuntime;
import org.kie.kogito.internal.process.runtime.KogitoWorkItem;
import org.kie.kogito.internal.process.runtime.KogitoWorkItemManager;
+import org.kie.kogito.process.Process;
+import org.kie.kogito.process.ProcessInstance;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -85,7 +104,7 @@ public class FlowTest extends JbpmBpmn2TestCase {
@Test
public void testExclusiveSplitWithNoConditions() throws Exception {
try {
-
createKogitoProcessRuntime("BPMN2-ExclusiveGatewayWithNoConditionsDefined.bpmn2");
+
createKogitoProcessRuntime("org/jbpm/bpmn2/flow/BPMN2-ExclusiveGatewayWithNoConditionsDefined.bpmn2");
fail("Should fail as XOR gateway does not have conditions
defined");
} catch (RuntimeException e) {
assertThat(e.getMessage()).contains("does not have a constraint
for Connection");
@@ -109,10 +128,12 @@ public class FlowTest extends JbpmBpmn2TestCase {
@Test
public void testExclusiveSplitXPathAdvanced() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-ExclusiveSplitXPath-advanced.bpmn2");
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email",
- new SystemOutWorkItemHandler());
- Map<String, Object> params = new HashMap<>();
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app, "Email", new
SystemOutWorkItemHandler());
+
+ Process<ExclusiveSplitXPathAdvancedModel> definition =
ExclusiveSplitXPathAdvancedProcess.newProcess(app);
+ ExclusiveSplitXPathAdvancedModel model = definition.createModel();
+
Document doc = DocumentBuilderFactory.newInstance()
.newDocumentBuilder().newDocument();
Element hi = doc.createElement("hi");
@@ -121,20 +142,26 @@ public class FlowTest extends JbpmBpmn2TestCase {
Attr attr = doc.createAttribute("value");
ho.setAttributeNode(attr);
attr.setValue("a");
- params.put("x", hi);
- params.put("y", "Second");
- KogitoProcessInstance processInstance = kruntime.startProcess(
- "com.sample.test", params);
- assertProcessInstanceCompleted(processInstance);
+
+ model.setX(hi);
+ model.setY("Second");
+
+ ProcessInstance<ExclusiveSplitXPathAdvancedModel> instance =
definition.createInstance(model);
+ instance.start();
+
+
assertThat(instance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
}
@Test
public void testExclusiveSplitXPathAdvanced2() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-ExclusiveSplitXPath-advanced-vars-not-signaled.bpmn2");
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email",
- new SystemOutWorkItemHandler());
- Map<String, Object> params = new HashMap<>();
+
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app, "Email", new
SystemOutWorkItemHandler());
+
+ Process<ExclusiveSplitXPathAdvancedVarsNotSignaledModel> definition =
ExclusiveSplitXPathAdvancedVarsNotSignaledProcess.newProcess(app);
+ ExclusiveSplitXPathAdvancedVarsNotSignaledModel model =
definition.createModel();
+
Document doc = DocumentBuilderFactory.newInstance()
.newDocumentBuilder().newDocument();
Element hi = doc.createElement("hi");
@@ -143,20 +170,25 @@ public class FlowTest extends JbpmBpmn2TestCase {
Attr attr = doc.createAttribute("value");
ho.setAttributeNode(attr);
attr.setValue("a");
- params.put("x", hi);
- params.put("y", "Second");
- KogitoProcessInstance processInstance = kruntime.startProcess(
- "com.sample.test", params);
- assertProcessInstanceCompleted(processInstance);
+
+ model.setX(hi);
+ model.setY("Second");
+
+ ProcessInstance<ExclusiveSplitXPathAdvancedVarsNotSignaledModel>
instance = definition.createInstance(model);
+ instance.start();
+
+
assertThat(instance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
}
@Test
public void testExclusiveSplitXPathAdvancedWithVars() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-ExclusiveSplitXPath-advanced-with-vars.bpmn2");
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email",
- new SystemOutWorkItemHandler());
- Map<String, Object> params = new HashMap<>();
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app, "Email", new
SystemOutWorkItemHandler());
+
+ Process<ExclusiveSplitXPathAdvancedWithVarsModel> definition =
ExclusiveSplitXPathAdvancedWithVarsProcess.newProcess(app);
+ ExclusiveSplitXPathAdvancedWithVarsModel model =
definition.createModel();
+
Document doc = DocumentBuilderFactory.newInstance()
.newDocumentBuilder().newDocument();
Element hi = doc.createElement("hi");
@@ -165,11 +197,14 @@ public class FlowTest extends JbpmBpmn2TestCase {
Attr attr = doc.createAttribute("value");
ho.setAttributeNode(attr);
attr.setValue("a");
- params.put("x", hi);
- params.put("y", "Second");
- KogitoProcessInstance processInstance = kruntime.startProcess(
- "com.sample.test", params);
- assertProcessInstanceCompleted(processInstance);
+
+ model.setX(hi);
+ model.setY("Second");
+
+ ProcessInstance<ExclusiveSplitXPathAdvancedWithVarsModel> instance =
definition.createInstance(model);
+ instance.start();
+
+
assertThat(instance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
}
@@ -189,40 +224,45 @@ public class FlowTest extends JbpmBpmn2TestCase {
@Test
public void testExclusiveSplitDefault() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-ExclusiveSplitDefault.bpmn2");
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email",
- new SystemOutWorkItemHandler());
- Map<String, Object> params = new HashMap<>();
- params.put("x", "NotFirst");
- params.put("y", "Second");
- KogitoProcessInstance processInstance = kruntime.startProcess(
- "ExclusiveSplitDefault", params);
- assertProcessInstanceCompleted(processInstance);
+
+ Application app = ProcessTestHelper.newApplication();
+
+ ProcessTestHelper.registerHandler(app, "Email", new
SystemOutWorkItemHandler());
+ org.kie.kogito.process.Process<ExclusiveSplitDefaultModel> definition
= ExclusiveSplitDefaultProcess.newProcess(app);
+ ExclusiveSplitDefaultModel model = definition.createModel();
+ model.setX("NotFirst");
+ model.setY("Second");
+ org.kie.kogito.process.ProcessInstance<ExclusiveSplitDefaultModel>
instance = definition.createInstance(model);
+ instance.start();
+
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
}
@Test
public void testExclusiveXORGateway() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-gatewayTest.bpmn2");
Document document = DocumentBuilderFactory
.newInstance()
.newDocumentBuilder()
.parse(new ByteArrayInputStream(
"<instanceMetadata><user approved=\"false\"
/></instanceMetadata>"
.getBytes()));
- Map<String, Object> params = new HashMap<>();
- params.put("instanceMetadata", document);
- params.put(
- "startMessage",
- DocumentBuilderFactory
- .newInstance()
- .newDocumentBuilder()
- .parse(new ByteArrayInputStream(
- "<task subject='foobar2'/>".getBytes()))
- .getFirstChild());
- KogitoProcessInstance processInstance =
kruntime.startProcess("process",
- params);
- assertProcessInstanceCompleted(processInstance);
+
+ Application app = ProcessTestHelper.newApplication();
+
+ org.kie.kogito.process.Process<GatewayTestModel> definition =
GatewayTestProcess.newProcess(app);
+ GatewayTestModel model = definition.createModel();
+ model.setInstanceMetadata(document);
+ model.setStartMessage(DocumentBuilderFactory
+ .newInstance()
+ .newDocumentBuilder()
+ .parse(new ByteArrayInputStream(
+ "<task subject='foobar2'/>".getBytes()))
+ .getFirstChild());
+ org.kie.kogito.process.ProcessInstance<GatewayTestModel> instance =
definition.createInstance(model);
+ instance.start();
+
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
}
@@ -490,12 +530,14 @@ public class FlowTest extends JbpmBpmn2TestCase {
@Test
public void testInclusiveSplitDefault() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-InclusiveSplitDefault.bpmn2");
- Map<String, Object> params = new HashMap<>();
- params.put("x", -5);
- KogitoProcessInstance processInstance = kruntime.startProcess(
- "InclusiveSplitDefault", params);
- assertProcessInstanceCompleted(processInstance);
+ Application app = ProcessTestHelper.newApplication();
+
+ org.kie.kogito.process.Process<InclusiveSplitDefaultModel> definition
= InclusiveSplitDefaultProcess.newProcess(app);
+ InclusiveSplitDefaultModel model = definition.createModel();
+ model.setX(-5);
+ org.kie.kogito.process.ProcessInstance<InclusiveSplitDefaultModel>
instance = definition.createInstance(model);
+ instance.start();
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
}
@@ -1338,17 +1380,20 @@ public class FlowTest extends JbpmBpmn2TestCase {
@Test
public void testConditionalFlow() throws Exception {
- System.setProperty("jbpm.enable.multi.con", "true");
- String processId = "designer.conditional-flow";
-
- kruntime =
createKogitoProcessRuntime("BPMN2-ConditionalFlowWithoutGateway.bpmn2");
-
- KogitoProcessInstance wpi = kruntime.startProcess(processId);
-
- assertProcessInstanceFinished(wpi, kruntime);
- assertNodeTriggered(wpi.getStringId(), "start", "script", "end1");
- System.clearProperty("jbpm.enable.multi.con");
+ Application app = ProcessTestHelper.newApplication();
+ EventTrackerProcessListener listener = new
EventTrackerProcessListener();
+ ProcessTestHelper.registerProcessEventListener(app, listener);
+ org.kie.kogito.process.Process<ConditionalFlowWithoutGatewayModel>
definition = ConditionalFlowWithoutGatewayProcess.newProcess(app);
+
org.kie.kogito.process.ProcessInstance<ConditionalFlowWithoutGatewayModel>
instance = definition.createInstance(definition.createModel());
+ instance.start();
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+ assertThat(listener.tracked())
+ .anyMatch(ProcessTestHelper.triggered("start"))
+ .anyMatch(ProcessTestHelper.triggered("script"))
+ .anyMatch(ProcessTestHelper.triggered("end1"));
+ assertThat(listener.tracked())
+ .noneMatch(ProcessTestHelper.triggered("end2"));
}
@Test
@@ -1380,9 +1425,13 @@ public class FlowTest extends JbpmBpmn2TestCase {
@Test
public void testExclusiveSplitDefaultNoCondition() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-ExclusiveSplitDefaultNoCondition.bpmn2");
- KogitoProcessInstance processInstance =
kruntime.startProcess("com.sample.test");
- assertProcessInstanceFinished(processInstance, kruntime);
+ Application app = ProcessTestHelper.newApplication();
+ org.kie.kogito.process.Process<ExclusiveSplitDefaultNoConditionModel>
definition = ExclusiveSplitDefaultNoConditionProcess.newProcess(app);
+
org.kie.kogito.process.ProcessInstance<ExclusiveSplitDefaultNoConditionModel>
instance = definition.createInstance(definition.createModel());
+
+ instance.start();
+
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
}
@Test
diff --git
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
index c121852e5d..2e0093de5e 100755
---
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
+++
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
@@ -204,18 +204,6 @@ public class StandaloneBPMNProcessTest extends
JbpmBpmn2TestCase {
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_COMPLETED);
}
- @Test
- public void testExclusiveSplitDefault() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-ExclusiveSplitDefault.bpmn2");
-
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email",
new SystemOutWorkItemHandler());
- Map<String, Object> params = new HashMap<>();
- params.put("x", "NotFirst");
- params.put("y", "Second");
- KogitoProcessInstance processInstance =
kruntime.startProcess("ExclusiveSplitDefault", params);
-
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_COMPLETED);
- }
-
@Test
public void testInclusiveSplit() throws Exception {
kruntime =
createKogitoProcessRuntime("org/jbpm/bpmn2/flow/BPMN2-InclusiveSplit.bpmn2");
@@ -226,16 +214,6 @@ public class StandaloneBPMNProcessTest extends
JbpmBpmn2TestCase {
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_COMPLETED);
}
- @Test
- public void testInclusiveSplitDefault() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-InclusiveSplitDefault.bpmn2");
-
- Map<String, Object> params = new HashMap<>();
- params.put("x", -5);
- KogitoProcessInstance processInstance =
kruntime.startProcess("InclusiveSplitDefault", params);
-
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_COMPLETED);
- }
-
@Test
@Disabled
public void testExclusiveSplitXPath() throws Exception {
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StartEventTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StartEventTest.java
index b85d0b41ef..a5bd46317d 100755
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StartEventTest.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StartEventTest.java
@@ -29,13 +29,18 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.jbpm.bpmn2.event.ConditionalStartModel;
+import org.jbpm.bpmn2.event.ConditionalStartProcess;
import org.jbpm.bpmn2.objects.NotAvailableGoodsReport;
import org.jbpm.bpmn2.objects.Person;
import org.jbpm.bpmn2.objects.TestWorkItemHandler;
import org.jbpm.bpmn2.start.SignalStartWithTransformationModel;
import org.jbpm.bpmn2.start.SignalStartWithTransformationProcess;
+import org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler;
import org.jbpm.test.util.NodeLeftCountDownProcessEventListener;
+import org.jbpm.test.utils.EventTrackerProcessListener;
import org.jbpm.test.utils.ProcessTestHelper;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.kie.api.KieServices;
import org.kie.api.builder.KieRepository;
@@ -57,10 +62,13 @@ import static
org.assertj.core.api.Assertions.assertThatExceptionOfType;
public class StartEventTest extends JbpmBpmn2TestCase {
@Test
+ @Disabled
public void testConditionalStart() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-ConditionalStart.bpmn2");
- final List<String> startedInstances = new ArrayList<>();
- kruntime.getProcessEventManager().addEventListener(new
DefaultKogitoProcessEventListener() {
+ Application app = ProcessTestHelper.newApplication();
+ List<String> startedInstances = new ArrayList<>();
+ EventTrackerProcessListener listener = new
EventTrackerProcessListener();
+ ProcessTestHelper.registerProcessEventListener(app, listener);
+ ProcessTestHelper.registerProcessEventListener(app, new
DefaultKogitoProcessEventListener() {
@Override
public void afterProcessStarted(ProcessStartedEvent event) {
@@ -68,17 +76,20 @@ public class StartEventTest extends JbpmBpmn2TestCase {
}
});
+ ProcessTestHelper.registerHandler(app, "Email", new
SystemOutWorkItemHandler());
+ org.kie.kogito.process.Process<ConditionalStartModel> definition =
ConditionalStartProcess.newProcess(app);
+
Person person = new Person();
person.setName("jack");
- kruntime.getKieSession().insert(person);
- assertThat(startedInstances).isEmpty();
- person = new Person();
- person.setName("john");
- kruntime.getKieSession().insert(person);
+ definition.send(Sig.of("Conditional", person));
+
assertThat(startedInstances).hasSize(1);
- assertNodeTriggered(startedInstances.get(0), "StartProcess", "Hello",
"EndProcess");
+ assertThat(listener.tracked())
+ .anyMatch(ProcessTestHelper.triggered("StartProcess"))
+ .anyMatch(ProcessTestHelper.triggered("Hello"))
+ .anyMatch(ProcessTestHelper.triggered("EndProcess"));
}
@Test
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ConditionalFlowWithoutGateway.bpmn2
b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-ConditionalFlowWithoutGateway.bpmn2
similarity index 88%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-ConditionalFlowWithoutGateway.bpmn2
rename to
jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-ConditionalFlowWithoutGateway.bpmn2
index f6816308fa..63a64e43fa 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ConditionalFlowWithoutGateway.bpmn2
+++
b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-ConditionalFlowWithoutGateway.bpmn2
@@ -18,9 +18,19 @@
~ under the License.
-->
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.omg.org/bpmn20"
xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
xmlns:drools="http://www.jboss.org/drools" id="_OSAkwHM-EeGROt7AmBKBUg"
xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
targetNamespace="http:/ [...]
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xmlns="http://www.omg.org/bpmn20"
+ xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL"
+ xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
+ xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
xmlns:drools="http://www.jboss.org/drools" id="_OSAkwHM-EeGROt7AmBKBUg"
+ xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
targetNamespace="http://www.omg.org/bpmn20">
<bpmn2:itemDefinition id="_xItem" structureRef="Integer"/>
- <bpmn2:process id="designer.conditional-flow"
drools:packageName="org.jboss.qa.brms.jbpm.functional.bpmn2.designer"
name="conditional-flow" isExecutable="true">
+ <bpmn2:process id="ConditionalFlowWithoutGateway"
drools:packageName="org.jbpm.bpmn2.flow" name="conditional-flow"
isExecutable="true">
+ <bpmn2:extensionElements>
+ <drools:metaData name="jbpm.enable.multi.con">
+ <drools:metaValue><![CDATA[true]]></drools:metaValue>
+ </drools:metaData>
+ </bpmn2:extensionElements>
<bpmn2:property id="x" itemSubjectRef="_xItem"/>
<bpmn2:startEvent id="_CF9831F9-AFE1-4F57-86C4-662C73090C42"
drools:bgcolor="#ffffff" name="start">
<bpmn2:outgoing>_1897CC4D-9026-42F4-A3E9-663EBD1B00F3</bpmn2:outgoing>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]