You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by eg...@apache.org on 2024/06/17 13:15:31 UTC
(incubator-kie-kogito-runtimes) branch main updated: [incubator-kie-issues-1287] Intermediate Catch / Throw missing functionality (#3544)
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 9e55645952 [incubator-kie-issues-1287] Intermediate Catch / Throw missing functionality (#3544)
9e55645952 is described below
commit 9e5564595278e832c54853a4538fb84964c04291
Author: Enrique <en...@ibm.com>
AuthorDate: Mon Jun 17 15:15:27 2024 +0200
[incubator-kie-issues-1287] Intermediate Catch / Throw missing functionality (#3544)
---
.../org/jbpm/bpmn2/xml/AbstractNodeHandler.java | 33 ++-
.../bpmn2/xml/IntermediateThrowEventHandler.java | 9 +
.../kie/kogito/process/bpmn2/BpmnProcesses.java | 19 ++
.../compiler/canonical/AbstractNodeVisitor.java | 68 +++--
.../jbpm/compiler/canonical/StartNodeVisitor.java | 6 +-
.../builtin/JavaConstraintEvaluatorBuilder.java | 1 -
.../org/jbpm/process/builder/EventNodeBuilder.java | 4 -
.../jbpm/process/builder/ExtendedNodeBuilder.java | 10 -
.../transformation/DataTransformerCompiler.java | 39 ---
.../DataTransformerCompilerRegistry.java | 72 ------
.../DefaultDataTransformerCompiler.java | 57 -----
.../JavaDataTransformerCompiler.java | 65 -----
.../process/core/impl/DataTransformerRegistry.java | 65 -----
.../core/transformation/JavaDataTransformer.java | 39 ---
.../core/transformation/MVELDataTransformer.java | 74 ------
.../process/instance/KogitoProcessContextImpl.java | 2 +-
.../impl/MVELInterpretedReturnValueEvaluator.java | 4 +-
.../instance/impl/XPATHReturnValueEvaluator.java | 2 +-
.../instance/impl/actions/ProduceEventAction.java | 6 +-
.../main/java/org/jbpm/ruleflow/core/Metadata.java | 1 +
.../jbpm/workflow/core/impl/DataAssociation.java | 14 +
.../org/jbpm/workflow/core/impl/NodeIoHelper.java | 7 +-
.../jbpm/workflow/core/node/Transformation.java | 10 +-
.../instance/impl/WorkflowProcessInstanceImpl.java | 18 +-
.../kie/kogito/process/impl/AbstractProcess.java | 18 ++
.../java/org/jbpm/bpmn2/objects/Account.java | 0
.../java/org/jbpm/bpmn2/objects/Address.java | 0
.../bpmn2/objects/ExceptionOnPurposeHandler.java | 0
.../org/jbpm/bpmn2/objects/ExceptionService.java | 0
.../java/org/jbpm/bpmn2/objects/HelloService.java | 0
.../java/org/jbpm/bpmn2/objects/MyError.java | 0
.../bpmn2/objects/NotAvailableGoodsReport.java | 0
.../java/org/jbpm/bpmn2/objects/Order.java | 0
.../java/org/jbpm/bpmn2/objects/Person.java | 0
.../java/org/jbpm/bpmn2/objects/Status.java | 0
.../jbpm/bpmn2/objects/TestWorkItemHandler.java | 0
...ediateCatchEventMessageWithTransformation.bpmn2 | 6 +-
...termediateCatchEventNoIncommingConnection.bpmn2 | 2 +-
.../BPMN2-IntermediateCatchEventSignal2.bpmn2 | 2 +-
...mediateCatchEventSignalWithTransformation.bpmn2 | 6 +-
.../BPMN2-IntermediateCatchEventTimerCycle3.bpmn2 | 2 +-
...PMN2-IntermediateCatchEventTimerCycleCron.bpmn2 | 4 +-
...ermediateCatchEventTimerDurationWithError.bpmn2 | 13 +-
...2-IntermediateCatchSignalBetweenUserTasks.bpmn2 | 2 +-
.../BPMN2-IntermediateThrowEventMessage.bpmn2 | 0
...ediateThrowEventMessageWithTransformation.bpmn2 | 4 +-
...mediateThrowEventSignalWithTransformation.bpmn2 | 4 +-
...ceProcessWithMvelCollectionTransformation.bpmn2 | 8 +-
...-ServiceProcessWithMvelJaxbTransformation.bpmn2 | 26 +-
...PMN2-ServiceProcessWithMvelTransformation.bpmn2 | 2 +-
.../BPMN2-SignalStartWithTransformation.bpmn2 | 2 +-
.../src/test/java/org/jbpm/bpmn2/ActivityTest.java | 125 ++++-----
.../java/org/jbpm/bpmn2/IntermediateEventTest.java | 282 +++++++++++++--------
.../org/jbpm/bpmn2/StandaloneBPMNProcessTest.java | 26 +-
.../test/java/org/jbpm/bpmn2/StartEventTest.java | 29 ++-
.../tools/maven/ProcessCodeGenerationSupport.java | 45 ++++
...oundarySignalEventOnTaskWithTransformation.bpmn | 194 --------------
.../BPMN2-DataInputAssociations-two-assigns.bpmn2 | 60 -----
.../BPMN2-DataOutputAssociations-HumanTask.bpmn2 | 57 -----
...diateThrowEventMessageWithTransformation.bpmn2} | 5 +-
.../BPMN2-SubProcessWithEntryExitScripts.bpmn2 | 196 --------------
.../src/main/bpmn/BPMN2-XpathExpression.bpmn2 | 114 ---------
.../workflow/parser/handlers/NodeFactoryUtils.java | 5 +-
.../suppliers/ProduceEventActionSupplier.java | 4 +-
.../workflow/ServerlessWorkflowParsingTest.java | 2 +-
65 files changed, 531 insertions(+), 1339 deletions(-)
diff --git a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/AbstractNodeHandler.java b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/AbstractNodeHandler.java
index 7a16ef7380..e8429c2272 100755
--- a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/AbstractNodeHandler.java
+++ b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/AbstractNodeHandler.java
@@ -49,7 +49,8 @@ import org.jbpm.process.core.ContextContainer;
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.core.impl.DataTransformerRegistry;
+import org.jbpm.process.instance.impl.MVELInterpretedReturnValueEvaluator;
+import org.jbpm.process.instance.impl.ReturnValueEvaluator;
import org.jbpm.ruleflow.core.RuleFlowProcess;
import org.jbpm.ruleflow.core.WorkflowElementIdentifierFactory;
import org.jbpm.util.PatternConstants;
@@ -57,6 +58,7 @@ import org.jbpm.workflow.core.DroolsAction;
import org.jbpm.workflow.core.Node;
import org.jbpm.workflow.core.NodeContainer;
import org.jbpm.workflow.core.impl.DataAssociation;
+import org.jbpm.workflow.core.impl.DataAssociation.DataAssociationType;
import org.jbpm.workflow.core.impl.DataDefinition;
import org.jbpm.workflow.core.impl.DroolsConsequenceAction;
import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
@@ -74,7 +76,6 @@ import org.jbpm.workflow.core.node.ForEachNode;
import org.jbpm.workflow.core.node.StateNode;
import org.jbpm.workflow.core.node.TimerNode;
import org.jbpm.workflow.core.node.Transformation;
-import org.kie.api.runtime.process.DataTransformer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Element;
@@ -425,7 +426,10 @@ public abstract class AbstractNodeHandler extends BaseAbstractHandler implements
while (xmlNode != null) {
String nodeName = xmlNode.getNodeName();
if ("dataOutputAssociation".equals(nodeName)) {
- readDataAssociation((Element) xmlNode, id -> ioSpec.getDataOutput().get(id), id -> getVariableDataSpec(parser, id)).ifPresent(e -> ioSpec.getDataOutputAssociation().add(e));
+ readDataAssociation((Element) xmlNode, id -> ioSpec.getDataOutput().get(id), id -> getVariableDataSpec(parser, id)).ifPresent(e -> {
+ e.setType(DataAssociationType.OUTPUT);
+ ioSpec.getDataOutputAssociation().add(e);
+ });
}
xmlNode = xmlNode.getNextSibling();
}
@@ -440,7 +444,10 @@ public abstract class AbstractNodeHandler extends BaseAbstractHandler implements
while (xmlNode != null) {
String nodeName = xmlNode.getNodeName();
if ("dataInputAssociation".equals(nodeName)) {
- readDataAssociation((Element) xmlNode, id -> getVariableDataSpec(parser, id), id -> ioSpec.getDataInput().get(id)).ifPresent(e -> ioSpec.getDataInputAssociation().add(e));
+ readDataAssociation((Element) xmlNode, id -> getVariableDataSpec(parser, id), id -> ioSpec.getDataInput().get(id)).ifPresent(e -> {
+ e.setType(DataAssociationType.INPUT);
+ ioSpec.getDataInputAssociation().add(e);
+ });
}
xmlNode = xmlNode.getNextSibling();
}
@@ -457,9 +464,15 @@ public abstract class AbstractNodeHandler extends BaseAbstractHandler implements
ioSpec.getDataInputs().addAll(readDataInput(parser, xmlNode));
ioSpec.getDataOutputs().addAll(readDataOutput(parser, xmlNode));
} else if ("dataInputAssociation".equals(nodeName)) {
- readDataAssociation((Element) xmlNode, id -> getVariableDataSpec(parser, id), id -> ioSpec.getDataInput().get(id)).ifPresent(e -> ioSpec.getDataInputAssociation().add(e));
+ readDataAssociation((Element) xmlNode, id -> getVariableDataSpec(parser, id), id -> ioSpec.getDataInput().get(id)).ifPresent(e -> {
+ e.setType(DataAssociationType.INPUT);
+ ioSpec.getDataInputAssociation().add(e);
+ });
} else if ("dataOutputAssociation".equals(nodeName)) {
- readDataAssociation((Element) xmlNode, id -> ioSpec.getDataOutput().get(id), id -> getVariableDataSpec(parser, id)).ifPresent(e -> ioSpec.getDataOutputAssociation().add(e));
+ readDataAssociation((Element) xmlNode, id -> ioSpec.getDataOutput().get(id), id -> getVariableDataSpec(parser, id)).ifPresent(e -> {
+ e.setType(DataAssociationType.OUTPUT);
+ ioSpec.getDataOutputAssociation().add(e);
+ });
}
xmlNode = xmlNode.getNextSibling();
}
@@ -561,11 +574,11 @@ public abstract class AbstractNodeHandler extends BaseAbstractHandler implements
String lang = element.get().getAttribute("language");
String expression = element.get().getTextContent();
- DataTransformer transformer = DataTransformerRegistry.get().find(lang);
- if (transformer == null) {
- throw new ProcessParsingValidationException("No transformer registered for language " + lang);
+ ReturnValueEvaluator evaluator = null;
+ if (lang.toLowerCase().contains("mvel")) {
+ evaluator = new MVELInterpretedReturnValueEvaluator(expression);
}
- return new Transformation(lang, expression);
+ return new Transformation(lang, expression, evaluator);
}
protected List<DataDefinition> readSources(org.w3c.dom.Node parent, Function<String, DataDefinition> variableResolver) {
diff --git a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/IntermediateThrowEventHandler.java b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/IntermediateThrowEventHandler.java
index 033076b8ab..5086c71990 100755
--- a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/IntermediateThrowEventHandler.java
+++ b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/IntermediateThrowEventHandler.java
@@ -49,7 +49,11 @@ import org.xml.sax.SAXException;
import static org.jbpm.bpmn2.xml.ProcessHandler.createJavaAction;
import static org.jbpm.ruleflow.core.Metadata.EVENT_TYPE;
+import static org.jbpm.ruleflow.core.Metadata.EVENT_TYPE_COMPENSATION;
+import static org.jbpm.ruleflow.core.Metadata.EVENT_TYPE_ESCALATION;
+import static org.jbpm.ruleflow.core.Metadata.EVENT_TYPE_LINK;
import static org.jbpm.ruleflow.core.Metadata.EVENT_TYPE_MESSAGE;
+import static org.jbpm.ruleflow.core.Metadata.EVENT_TYPE_SIGNAL;
import static org.jbpm.ruleflow.core.Metadata.MAPPING_VARIABLE;
import static org.jbpm.ruleflow.core.Metadata.MAPPING_VARIABLE_INPUT;
import static org.jbpm.ruleflow.core.Metadata.MESSAGE_TYPE;
@@ -87,21 +91,25 @@ public class IntermediateThrowEventHandler extends AbstractNodeHandler {
// reuse already created ActionNode
setThrowVariable(ioSpecification, node);
handleSignalNode(node, element, uri, localName, parser);
+ node.setMetaData(EVENT_TYPE, EVENT_TYPE_SIGNAL);
break;
} else if ("messageEventDefinition".equals(nodeName)) {
// reuse already created ActionNode
setThrowVariable(ioSpecification, node);
handleMessageNode(node, element, uri, localName, parser);
+ node.setMetaData(EVENT_TYPE, EVENT_TYPE_MESSAGE);
break;
} else if ("escalationEventDefinition".equals(nodeName)) {
// reuse already created ActionNode
setThrowVariable(ioSpecification, node);
handleEscalationNode(node, element, uri, localName, parser);
+ node.setMetaData(EVENT_TYPE, EVENT_TYPE_ESCALATION);
break;
} else if ("compensateEventDefinition".equals(nodeName)) {
// reuse already created ActionNode
setThrowVariable(ioSpecification, node);
handleThrowCompensationEventNode(node, element, uri, localName, parser);
+ node.setMetaData(EVENT_TYPE, EVENT_TYPE_COMPENSATION);
break;
} else if ("linkEventDefinition".equals(nodeName)) {
ThrowLinkNode linkNode = new ThrowLinkNode();
@@ -109,6 +117,7 @@ public class IntermediateThrowEventHandler extends AbstractNodeHandler {
node = linkNode;
setThrowVariable(ioSpecification, node);
handleLinkNode(element, node, xmlNode, parser);
+ node.setMetaData(EVENT_TYPE, EVENT_TYPE_LINK);
}
xmlNode = xmlNode.getNextSibling();
}
diff --git a/jbpm/jbpm-bpmn2/src/main/java/org/kie/kogito/process/bpmn2/BpmnProcesses.java b/jbpm/jbpm-bpmn2/src/main/java/org/kie/kogito/process/bpmn2/BpmnProcesses.java
index 931a0ee886..ab043f7d3b 100644
--- a/jbpm/jbpm-bpmn2/src/main/java/org/kie/kogito/process/bpmn2/BpmnProcesses.java
+++ b/jbpm/jbpm-bpmn2/src/main/java/org/kie/kogito/process/bpmn2/BpmnProcesses.java
@@ -21,6 +21,7 @@ package org.kie.kogito.process.bpmn2;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import org.kie.kogito.Model;
import org.kie.kogito.process.Process;
@@ -44,4 +45,22 @@ public class BpmnProcesses implements Processes {
public Collection<String> processIds() {
return mappedProcesses.keySet();
}
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mappedProcesses.keySet());
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ BpmnProcesses other = (BpmnProcesses) obj;
+ return Objects.equals(mappedProcesses, other.mappedProcesses);
+ }
+
}
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 27595fe2e7..b548f30477 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
@@ -24,21 +24,27 @@ import java.util.Objects;
import java.util.function.Predicate;
import java.util.stream.Collectors;
+import org.jbpm.compiler.canonical.builtin.ReturnValueEvaluatorBuilderService;
import org.jbpm.process.builder.action.ActionCompilerRegistry;
-import org.jbpm.process.builder.transformation.DataTransformerCompilerRegistry;
+import org.jbpm.process.core.Context;
import org.jbpm.process.core.ContextContainer;
+import org.jbpm.process.core.ContextResolver;
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.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.impl.ConnectionImpl;
import org.jbpm.workflow.core.impl.DataAssociation;
+import org.jbpm.workflow.core.impl.DataAssociation.DataAssociationType;
import org.jbpm.workflow.core.impl.DataDefinition;
import org.jbpm.workflow.core.impl.DroolsConsequenceAction;
import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
+import org.jbpm.workflow.core.impl.NodeImpl;
import org.jbpm.workflow.core.node.Assignment;
import org.jbpm.workflow.core.node.HumanTaskNode;
import org.jbpm.workflow.core.node.StartNode;
@@ -46,6 +52,7 @@ import org.jbpm.workflow.core.node.Transformation;
import org.kie.api.definition.process.Connection;
import org.kie.api.definition.process.Node;
+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;
@@ -215,24 +222,25 @@ public abstract class AbstractNodeVisitor<T extends Node> extends AbstractVisito
protected void addNodeMappings(Mappable node, BlockStmt body, String variableName) {
for (DataAssociation entry : node.getInAssociations()) {
- body.addStatement(getFactoryMethod(variableName, MappableNodeFactory.METHOD_IN_ASSOCIATION, buildDataAssociationExpression(entry)));
+ body.addStatement(getFactoryMethod(variableName, MappableNodeFactory.METHOD_IN_ASSOCIATION, buildDataAssociationExpression((NodeImpl) node, entry)));
}
for (DataAssociation entry : node.getOutAssociations()) {
- body.addStatement(getFactoryMethod(variableName, MappableNodeFactory.METHOD_OUT_ASSOCIATION, buildDataAssociationExpression(entry)));
+ body.addStatement(getFactoryMethod(variableName, MappableNodeFactory.METHOD_OUT_ASSOCIATION, buildDataAssociationExpression((NodeImpl) node, entry)));
}
}
- protected Expression buildDataAssociationsExpression(List<DataAssociation> dataAssociations) {
- NodeList<Expression> expressions = NodeList.nodeList(dataAssociations.stream().map(this::buildDataAssociationExpression).collect(Collectors.toList()));
+ protected Expression buildDataAssociationsExpression(NodeImpl node, List<DataAssociation> dataAssociations) {
+ NodeList<Expression> expressions = NodeList.nodeList(dataAssociations.stream().map(da -> buildDataAssociationExpression(node, da)).collect(Collectors.toList()));
return new MethodCallExpr(null, "java.util.Arrays.asList", NodeList.nodeList(expressions));
}
- protected Expression buildDataAssociationExpression(DataAssociation dataAssociation) {
+ protected Expression buildDataAssociationExpression(NodeImpl node, DataAssociation dataAssociation) {
List<DataDefinition> sourceExpr = dataAssociation.getSources();
DataDefinition targetExpr = dataAssociation.getTarget();
Transformation transformation = dataAssociation.getTransformation();
List<Assignment> assignments = dataAssociation.getAssignments();
- return toDataAssociation(toDataDef(sourceExpr), toDataDef(targetExpr), toAssignmentExpr(assignments), toTransformation(sourceExpr, singletonList(targetExpr), transformation));
+ return toDataAssociation(toDataDef(sourceExpr), toDataDef(targetExpr), toAssignmentExpr(assignments),
+ toTransformation(node, dataAssociation.getType(), sourceExpr, singletonList(targetExpr), transformation));
}
private Expression toAssignmentExpr(List<Assignment> assignments) {
@@ -252,16 +260,44 @@ public abstract class AbstractNodeVisitor<T extends Node> extends AbstractVisito
return new MethodCallExpr(null, "java.util.Arrays.asList", NodeList.nodeList(expressions));
}
- protected Expression toTransformation(List<DataDefinition> inputs, List<DataDefinition> outputs, Transformation transformation) {
+ protected Expression toTransformation(NodeImpl node, DataAssociationType type, List<DataDefinition> inputs, List<DataDefinition> outputs, Transformation transformation) {
if (transformation == null) {
return new NullLiteralExpr();
}
+
Expression lang = new StringLiteralExpr(transformation.getLanguage());
- Expression expression = new StringLiteralExpr(transformation.getExpression());
- Expression compiledExpression = DataTransformerCompilerRegistry.instance().find(transformation.getLanguage()).compile(inputs, outputs, transformation);
- ClassOrInterfaceType clazz = new ClassOrInterfaceType(null, "org.jbpm.workflow.core.node.Transformation");
- return new ObjectCreationExpr(null, clazz, NodeList.nodeList(lang, expression, compiledExpression));
+ Expression expression = new StringLiteralExpr(sanitizeString(transformation.getExpression()));
+
+ ContextResolver contextResolver = type.equals(DataAssociationType.INPUT) ? node : wrapContextResolver(node, inputs);
+
+ ReturnValueEvaluatorBuilderService service = ReturnValueEvaluatorBuilderService.instance();
+ Expression returnValueEvaluatorExpression = service.build(contextResolver, transformation.getLanguage(), transformation.getExpression(), Object.class, null);
+ ClassOrInterfaceType clazz = StaticJavaParser.parseClassOrInterfaceType(Transformation.class.getName());
+ return new ObjectCreationExpr(null, clazz, NodeList.nodeList(lang, expression, returnValueEvaluatorExpression));
+
+ }
+
+ private ContextResolver wrapContextResolver(NodeImpl node, List<DataDefinition> variables) {
+ VariableScope variableScope = new VariableScope();
+
+ for (DataDefinition variable : variables) {
+ Variable var = new Variable();
+ var.setId(variable.getId());
+ var.setName(variable.getLabel());
+ var.setType(DataTypeResolver.fromType(variable.getType(), JbpmClassLoaderUtil.findClassLoader()));
+ variableScope.addVariable(var);
+ }
+ return new ContextResolver() {
+
+ @Override
+ public Context resolveContext(String contextId, Object param) {
+ if (VariableScope.VARIABLE_SCOPE.equals(contextId)) {
+ return variableScope.resolveContext(param);
+ }
+ return null;
+ }
+ };
}
protected Expression toDataAssociation(Expression sourceExprs, Expression target, Expression transformation, Expression assignments) {
@@ -360,7 +396,7 @@ public abstract class AbstractNodeVisitor<T extends Node> extends AbstractVisito
}
protected ObjectCreationExpr buildProducerAction(Node node, ProcessMetaData metadata) {
- TriggerMetaData trigger = TriggerMetaData.of(node);
+ TriggerMetaData trigger = TriggerMetaData.of(node, (String) node.getMetaData().get(Metadata.MAPPING_VARIABLE_INPUT));
return buildProducerAction(parseClassOrInterfaceType(ProduceEventAction.class.getCanonicalName()).setTypeArguments(NodeList.nodeList(parseClassOrInterfaceType(trigger.getDataType()))),
trigger, metadata);
@@ -369,8 +405,10 @@ public abstract class AbstractNodeVisitor<T extends Node> extends AbstractVisito
public static ObjectCreationExpr buildProducerAction(ClassOrInterfaceType actionClass, TriggerMetaData trigger, ProcessMetaData metadata) {
metadata.addTrigger(trigger);
return new ObjectCreationExpr(null, actionClass, NodeList.nodeList(
- new StringLiteralExpr(trigger.getName()), new StringLiteralExpr(trigger.getModelRef()),
- new LambdaExpr(NodeList.nodeList(), new NameExpr("producer_" + trigger.getOwnerId()))));
+ new StringLiteralExpr(trigger.getName()),
+ new StringLiteralExpr(trigger.getModelRef()),
+ new LambdaExpr(NodeList.nodeList(),
+ new NameExpr("producer_" + trigger.getOwnerId()))));
}
protected void visitCompensationScope(ContextContainer process, BlockStmt body) {
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 de5c641a6f..8be94913cf 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
@@ -84,7 +84,7 @@ public class StartNodeVisitor extends AbstractNodeVisitor<StartNode> {
body.addStatement(getFactoryMethod(getNodeId(startNode), METHOD_TRIGGER,
new StringLiteralExpr((String) nodeMetaData.get(TRIGGER_REF)),
- buildDataAssociationsExpression(startNode.getIoSpecification().getDataOutputAssociation())));
+ buildDataAssociationsExpression(startNode, startNode.getIoSpecification().getDataOutputAssociation())));
String triggerMapping = (String) nodeMetaData.get(TRIGGER_MAPPING);
variable = variableScope.findVariable(triggerMapping);
@@ -99,13 +99,13 @@ public class StartNodeVisitor extends AbstractNodeVisitor<StartNode> {
} else {
body.addStatement(getFactoryMethod(getNodeId(startNode), METHOD_TRIGGER,
new StringLiteralExpr((String) nodeMetaData.get(MESSAGE_TYPE)),
- buildDataAssociationsExpression(startNode.getIoSpecification().getDataOutputAssociation())));
+ buildDataAssociationsExpression(startNode, startNode.getIoSpecification().getDataOutputAssociation())));
}
metadata.addSignal((String) nodeMetaData.get(MESSAGE_TYPE), variable != null ? variable.getType().getStringType() : null);
} else {
body.addStatement(getFactoryMethod(getNodeId(startNode), METHOD_TRIGGER,
new StringLiteralExpr((String) nodeMetaData.get(TRIGGER_REF)),
- buildDataAssociationsExpression(startNode.getIoSpecification().getDataOutputAssociation())));
+ buildDataAssociationsExpression(startNode, startNode.getIoSpecification().getDataOutputAssociation())));
}
}
diff --git a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/builtin/JavaConstraintEvaluatorBuilder.java b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/builtin/JavaConstraintEvaluatorBuilder.java
index e6695526cc..ae82b5fb7e 100644
--- a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/builtin/JavaConstraintEvaluatorBuilder.java
+++ b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/builtin/JavaConstraintEvaluatorBuilder.java
@@ -63,7 +63,6 @@ public class JavaConstraintEvaluatorBuilder implements ReturnValueEvaluatorBuild
if (blockStmt == null) {
blockStmt = StaticJavaParser.parseBlock("{" + expression + "}");
}
-
Set<NameExpr> identifiers = new HashSet<>(blockStmt.findAll(NameExpr.class));
for (NameExpr v : identifiers) {
diff --git a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/EventNodeBuilder.java b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/EventNodeBuilder.java
index 57ba54137e..b5f0aaba9a 100755
--- a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/EventNodeBuilder.java
+++ b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/EventNodeBuilder.java
@@ -22,12 +22,10 @@ import java.util.HashMap;
import java.util.Map;
import org.drools.drl.ast.descr.ProcessDescr;
-import org.jbpm.process.core.impl.DataTransformerRegistry;
import org.jbpm.workflow.core.WorkflowProcess;
import org.jbpm.workflow.core.node.Transformation;
import org.kie.api.definition.process.Node;
import org.kie.api.definition.process.Process;
-import org.kie.api.runtime.process.DataTransformer;
public class EventNodeBuilder implements ProcessNodeBuilder {
@@ -40,8 +38,6 @@ public class EventNodeBuilder implements ProcessNodeBuilder {
parameters.put("imports", wfProcess.getImports());
parameters.put("classloader", context.getConfiguration().getClassLoader());
- DataTransformer transformer = DataTransformerRegistry.get().find(transformation.getLanguage());
- transformation.setCompiledExpression(transformer.compile(transformation.getExpression(), parameters));
}
}
diff --git a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/ExtendedNodeBuilder.java b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/ExtendedNodeBuilder.java
index 64238c7aba..9f86aaea12 100755
--- a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/ExtendedNodeBuilder.java
+++ b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/ExtendedNodeBuilder.java
@@ -27,17 +27,14 @@ import org.drools.drl.ast.descr.ActionDescr;
import org.drools.drl.ast.descr.ProcessDescr;
import org.jbpm.process.builder.dialect.ProcessDialect;
import org.jbpm.process.builder.dialect.ProcessDialectRegistry;
-import org.jbpm.process.core.impl.DataTransformerRegistry;
import org.jbpm.workflow.core.DroolsAction;
import org.jbpm.workflow.core.impl.DataAssociation;
import org.jbpm.workflow.core.impl.DroolsConsequenceAction;
import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
import org.jbpm.workflow.core.impl.NodeImpl;
import org.jbpm.workflow.core.node.Assignment;
-import org.jbpm.workflow.core.node.Transformation;
import org.kie.api.definition.process.Node;
import org.kie.api.definition.process.Process;
-import org.kie.api.runtime.process.DataTransformer;
public class ExtendedNodeBuilder
implements
@@ -71,13 +68,6 @@ public class ExtendedNodeBuilder
protected void buildDataAssociation(PackageBuildContext context, Collection<DataAssociation> dataAssociations, Map<String, Object> parameters) {
for (DataAssociation dataAssociation : dataAssociations) {
- Transformation transformation = dataAssociation.getTransformation();
- if (transformation != null) {
-
- DataTransformer transformer = DataTransformerRegistry.get().find(transformation.getLanguage());
- transformation.setCompiledExpression(transformer.compile(transformation.getExpression(), parameters));
-
- }
List<Assignment> assignments = dataAssociation.getAssignments();
if (assignments != null) {
for (Assignment assignment : assignments) {
diff --git a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/transformation/DataTransformerCompiler.java b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/transformation/DataTransformerCompiler.java
deleted file mode 100644
index 0e85a0b0b0..0000000000
--- a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/transformation/DataTransformerCompiler.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.jbpm.process.builder.transformation;
-
-import java.util.List;
-
-import org.jbpm.workflow.core.impl.DataDefinition;
-import org.jbpm.workflow.core.node.Transformation;
-
-import com.github.javaparser.ast.expr.Expression;
-
-public interface DataTransformerCompiler {
-
- default String[] dialects() {
- return new String[0];
- }
-
- default boolean accept(String dialect) {
- return List.of(dialects()).contains(dialect);
- }
-
- Expression compile(List<DataDefinition> inputs, List<DataDefinition> outputs, Transformation source);
-}
diff --git a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/transformation/DataTransformerCompilerRegistry.java b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/transformation/DataTransformerCompilerRegistry.java
deleted file mode 100755
index 54f506da76..0000000000
--- a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/transformation/DataTransformerCompilerRegistry.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.jbpm.process.builder.transformation;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.ServiceLoader;
-
-import org.jbpm.util.JbpmClassLoaderUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Registry for all available on runtime <code>DataTransformer</code>s for performing
- * data input and output transformation.
- * There is MVEL based transformer available out of the box that is registered under
- * <code>http://www.mvel.org/2.0</code> key.
- * <br/>
- * Custom implementations can be provided and if they are compliant with JSR 223 then follows above registration approach
- * otherwise they need to be registered manually with <code>register</code> method.
- *
- */
-public class DataTransformerCompilerRegistry {
-
- private static final Logger logger = LoggerFactory.getLogger(DataTransformerCompilerRegistry.class);
-
- private static DataTransformerCompilerRegistry INSTANCE;
-
- private List<DataTransformerCompiler> registry;
-
- public static DataTransformerCompilerRegistry instance() {
- if (INSTANCE == null) {
- INSTANCE = new DataTransformerCompilerRegistry();
- }
- return INSTANCE;
- }
-
- protected DataTransformerCompilerRegistry() {
- this.registry = new ArrayList<>();
- ServiceLoader.load(DataTransformerCompiler.class, JbpmClassLoaderUtil.findClassLoader()).forEach(registry::add);
- }
-
- public void register(DataTransformerCompiler transformer) {
- this.registry.add(transformer);
- logger.debug("Manual registration of scripting language {} with instance {}", transformer.dialects(), transformer);
- }
-
- public DataTransformerCompiler find(String language) {
- for (DataTransformerCompiler transformer : registry) {
- if (transformer.accept(language)) {
- return transformer;
- }
- }
- throw new IllegalArgumentException("transformer not support for dialect " + language);
- }
-}
diff --git a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/transformation/DefaultDataTransformerCompiler.java b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/transformation/DefaultDataTransformerCompiler.java
deleted file mode 100644
index 377076b346..0000000000
--- a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/transformation/DefaultDataTransformerCompiler.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.jbpm.process.builder.transformation;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.jbpm.process.core.impl.DataTransformerRegistry;
-import org.jbpm.workflow.core.impl.DataDefinition;
-import org.jbpm.workflow.core.node.Transformation;
-import org.kie.kogito.internal.utils.ConversionUtils;
-
-import com.github.javaparser.ast.NodeList;
-import com.github.javaparser.ast.expr.Expression;
-import com.github.javaparser.ast.expr.FieldAccessExpr;
-import com.github.javaparser.ast.expr.MethodCallExpr;
-import com.github.javaparser.ast.expr.NameExpr;
-import com.github.javaparser.ast.expr.StringLiteralExpr;
-
-public class DefaultDataTransformerCompiler implements DataTransformerCompiler {
-
- @Override
- public String[] dialects() {
- return new String[] { "http://www.mvel.org/2.0" };
- }
-
- @Override
- public Expression compile(List<DataDefinition> inputs, List<DataDefinition> outputs, Transformation transformation) {
- Expression expr = null;
- expr = new FieldAccessExpr(new NameExpr(DataTransformerRegistry.class.getPackageName()), DataTransformerRegistry.class.getSimpleName());
- expr = new MethodCallExpr(expr, "get");
- expr = new MethodCallExpr(expr, "find", NodeList.nodeList(new StringLiteralExpr(transformation.getLanguage())));
-
- Expression emptyCollection = new MethodCallExpr(new FieldAccessExpr(new NameExpr(Collections.class.getPackageName()), Collections.class.getSimpleName()), "emptyMap");
-
- expr = new MethodCallExpr(expr, "compile", NodeList.<Expression> nodeList(
- new StringLiteralExpr(ConversionUtils.sanitizeString(transformation.getExpression())), emptyCollection));
- return expr;
- }
-
-}
diff --git a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/transformation/JavaDataTransformerCompiler.java b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/transformation/JavaDataTransformerCompiler.java
deleted file mode 100644
index d2dc13c052..0000000000
--- a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/transformation/JavaDataTransformerCompiler.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.jbpm.process.builder.transformation;
-
-import java.util.List;
-import java.util.Map;
-
-import org.jbpm.workflow.core.impl.DataDefinition;
-import org.jbpm.workflow.core.node.Transformation;
-
-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.CastExpr;
-import com.github.javaparser.ast.expr.Expression;
-import com.github.javaparser.ast.expr.LambdaExpr;
-import com.github.javaparser.ast.expr.MethodCallExpr;
-import com.github.javaparser.ast.expr.NameExpr;
-import com.github.javaparser.ast.expr.StringLiteralExpr;
-import com.github.javaparser.ast.expr.VariableDeclarationExpr;
-import com.github.javaparser.ast.stmt.BlockStmt;
-import com.github.javaparser.ast.type.ClassOrInterfaceType;
-
-public class JavaDataTransformerCompiler implements DataTransformerCompiler {
-
- @Override
- public String[] dialects() {
- return new String[] { "http://www.java.com/java" };
- }
-
- @Override
- public Expression compile(List<DataDefinition> inputs, List<DataDefinition> outputs, Transformation transformation) {
- // build lambda function
- BlockStmt body = StaticJavaParser.parseBlock("{" + transformation.getExpression() + "}");
- for (DataDefinition input : inputs) {
- ClassOrInterfaceType type = StaticJavaParser.parseClassOrInterfaceType(input.getType());
- VariableDeclarationExpr target = new VariableDeclarationExpr(type, input.getLabel());
- Expression source = new CastExpr(type, new MethodCallExpr(new NameExpr("parameters"), "get", NodeList.nodeList(new StringLiteralExpr(input.getLabel()))));
- AssignExpr assignment = new AssignExpr(target, source, AssignExpr.Operator.ASSIGN);
- body.addStatement(0, assignment);
- }
-
- Expression lambda = new LambdaExpr(NodeList.nodeList(new Parameter(StaticJavaParser.parseClassOrInterfaceType(Map.class.getName()), "parameters")), body, true);
- ClassOrInterfaceType type = StaticJavaParser.parseClassOrInterfaceType("java.util.function.Function<java.util.Map, Object>");
- return new CastExpr(type, lambda);
- }
-
-}
diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/core/impl/DataTransformerRegistry.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/core/impl/DataTransformerRegistry.java
deleted file mode 100755
index 5cd596786e..0000000000
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/core/impl/DataTransformerRegistry.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.jbpm.process.core.impl;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.jbpm.process.core.transformation.JavaDataTransformer;
-import org.jbpm.process.core.transformation.MVELDataTransformer;
-import org.kie.api.runtime.process.DataTransformer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Registry for all available on runtime <code>DataTransformer</code>s for performing
- * data input and output transformation.
- * There is MVEL based transformer available out of the box that is registered under
- * <code>http://www.mvel.org/2.0</code> key.
- * <br/>
- * Custom implementations can be provided and if they are compliant with JSR 223 then follows above registration approach
- * otherwise they need to be registered manually with <code>register</code> method.
- *
- */
-public class DataTransformerRegistry {
-
- private static final Logger logger = LoggerFactory.getLogger(DataTransformerRegistry.class);
- private static final DataTransformerRegistry INSTANCE = new DataTransformerRegistry();
-
- private Map<String, DataTransformer> registry;
-
- protected DataTransformerRegistry() {
- this.registry = new ConcurrentHashMap<>();
- this.registry.put("http://www.mvel.org/2.0", new MVELDataTransformer());
- this.registry.put("http://www.java.com/java", new JavaDataTransformer());
- }
-
- public static DataTransformerRegistry get() {
- return INSTANCE;
- }
-
- public synchronized void register(String language, DataTransformer transformer) {
- this.registry.put(language, transformer);
- logger.debug("Manual registration of scripting language {} with instance {}", language, transformer);
- }
-
- public DataTransformer find(String language) {
- return this.registry.get(language);
- }
-}
diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/core/transformation/JavaDataTransformer.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/core/transformation/JavaDataTransformer.java
deleted file mode 100644
index daefaf43cc..0000000000
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/core/transformation/JavaDataTransformer.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.jbpm.process.core.transformation;
-
-import java.util.Map;
-import java.util.function.Function;
-
-import org.kie.api.runtime.process.DataTransformer;
-
-public class JavaDataTransformer implements DataTransformer {
-
- @Override
- public Object compile(String expression, Map<String, Object> parameters) {
- return null;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public Object transform(Object expression, Map<String, Object> parameters) {
- return ((Function<Map<String, Object>, Object>) expression).apply(parameters);
- }
-
-}
diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/core/transformation/MVELDataTransformer.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/core/transformation/MVELDataTransformer.java
deleted file mode 100755
index b884e9babc..0000000000
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/core/transformation/MVELDataTransformer.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.jbpm.process.core.transformation;
-
-import java.util.Map;
-import java.util.Set;
-
-import org.jbpm.workflow.instance.impl.MVELProcessHelper;
-import org.kie.api.runtime.process.DataTransformer;
-import org.mvel2.MVEL;
-import org.mvel2.ParserConfiguration;
-import org.mvel2.ParserContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * MVEL based <code>DataTransformer</code> implementation
- *
- */
-public class MVELDataTransformer implements DataTransformer {
-
- private static final Logger logger = LoggerFactory.getLogger(MVELDataTransformer.class);
-
- @Override
- public Object compile(String expression, Map<String, Object> parameters) {
- logger.debug("About to compile mvel expression {}", expression);
- ClassLoader classLoader = (ClassLoader) parameters.get("classloader");
- if (classLoader == null) {
- classLoader = this.getClass().getClassLoader();
- }
- ParserConfiguration config = new ParserConfiguration();
- config.setClassLoader(classLoader);
- ParserContext context = new ParserContext(config);
- if (parameters != null) {
- @SuppressWarnings("unchecked")
- Set<String> imports = (Set<String>) parameters.get("imports");
- if (imports != null) {
- for (String clazz : imports) {
- try {
- Class<?> cl = Class.forName(clazz, true, classLoader);
- context.addImport(cl.getSimpleName(), cl);
- } catch (ClassNotFoundException e) {
- logger.warn("Unable to load class {} due to {}", clazz, e.getException());
- }
- ;
- }
- }
- }
- return MVEL.compileExpression(expression, context);
- }
-
- @Override
- public Object transform(Object expression, Map<String, Object> parameters) {
- logger.debug("About to execute mvel expression {} with parameters {}", expression, parameters);
- return MVELProcessHelper.evaluator().executeExpression(expression, parameters);
- }
-
-}
diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/KogitoProcessContextImpl.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/KogitoProcessContextImpl.java
index 1b2bba1bda..5258ea7e2e 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/KogitoProcessContextImpl.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/KogitoProcessContextImpl.java
@@ -50,7 +50,7 @@ public class KogitoProcessContextImpl extends AbstractProcessContext implements
return resolver.resolveContext(VariableScope.VARIABLE_SCOPE, variableId) != null;
}
- return nodeInstance.getVariable(variableId) != null;
+ return getVariable(variableId) != null;
}
@Override
diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/MVELInterpretedReturnValueEvaluator.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/MVELInterpretedReturnValueEvaluator.java
index 5a969fbb5b..0ca4c8fbd1 100644
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/MVELInterpretedReturnValueEvaluator.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/MVELInterpretedReturnValueEvaluator.java
@@ -45,12 +45,12 @@ public class MVELInterpretedReturnValueEvaluator extends AbstractReturnValueEval
@Override
public boolean isResolveable(String name) {
- return resolver.apply("#{" + name + "}") != null;
+ return resolver.apply(name) != null;
};
@Override
public VariableResolver getVariableResolver(String name) {
- return new SimpleValueResolver(resolver.apply("#{" + name + "}"));
+ return new SimpleValueResolver(resolver.apply(name));
};
};
return MVEL.eval(expression, factory);
diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/XPATHReturnValueEvaluator.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/XPATHReturnValueEvaluator.java
index 3c9fa372d6..8abd66e626 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/XPATHReturnValueEvaluator.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/XPATHReturnValueEvaluator.java
@@ -42,7 +42,7 @@ public class XPATHReturnValueEvaluator extends AbstractReturnValueEvaluator {
super("XPath", "true()");
}
- public XPATHReturnValueEvaluator(final String expression) {
+ public XPATHReturnValueEvaluator(String expression) {
super("XPath", expression);
}
diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/ProduceEventAction.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/ProduceEventAction.java
index 61c38c3c76..c9f9c3c385 100644
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/ProduceEventAction.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/ProduceEventAction.java
@@ -19,11 +19,14 @@
package org.jbpm.process.instance.impl.actions;
import java.io.Serializable;
+import java.util.Map;
import java.util.function.Supplier;
import org.drools.core.common.InternalKnowledgeRuntime;
import org.jbpm.process.instance.InternalProcessRuntime;
import org.jbpm.process.instance.impl.Action;
+import org.jbpm.workflow.core.impl.NodeIoHelper;
+import org.jbpm.workflow.instance.impl.NodeInstanceImpl;
import org.kie.kogito.event.impl.MessageProducer;
import org.kie.kogito.internal.process.runtime.KogitoProcessContext;
import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
@@ -44,7 +47,8 @@ public class ProduceEventAction<T> implements Action, Serializable {
@Override
public void execute(KogitoProcessContext context) throws Exception {
- Object object = context.getVariable(varName);
+ Map<String, Object> inputs = NodeIoHelper.processInputs((NodeInstanceImpl) context.getNodeInstance(), var -> context.getVariable(var));
+ Object object = inputs.get(varName);
KogitoProcessInstance pi = context.getProcessInstance();
InternalKnowledgeRuntime runtime = (InternalKnowledgeRuntime) context.getKieRuntime();
InternalProcessRuntime process = (InternalProcessRuntime) runtime.getProcessRuntime();
diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/Metadata.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/Metadata.java
index 5b9f6a1428..682fbdc064 100644
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/Metadata.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/Metadata.java
@@ -44,6 +44,7 @@ public class Metadata {
public static final String EVENT_TYPE_ERROR = "error";
public static final String EVENT_TYPE_CONDITIONAL = "conditional";
public static final String EVENT_TYPE_LINK = "link";
+ public static final Object EVENT_TYPE_ESCALATION = "Escalation";
public static final String CUSTOM_SCOPE = "customScope";
public static final String ATTACHED_TO = "AttachedTo";
public static final String TIME_CYCLE = "TimeCycle";
diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/DataAssociation.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/DataAssociation.java
index 2d2dc86fd4..468115c508 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/DataAssociation.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/DataAssociation.java
@@ -29,12 +29,18 @@ import org.jbpm.workflow.core.node.Transformation;
public class DataAssociation implements Serializable {
+ public enum DataAssociationType {
+ INPUT,
+ OUTPUT
+ }
+
private static final long serialVersionUID = 5L;
private List<DataDefinition> sources;
private DataDefinition target;
private List<Assignment> assignments;
private Transformation transformation;
+ private DataAssociationType type;
public DataAssociation(Assignment assignment) {
this(Collections.emptyList(), null, Collections.singletonList(assignment), null);
@@ -49,6 +55,14 @@ public class DataAssociation implements Serializable {
this.assignments.forEach(this::buildInterpretedAssignment);
}
+ public DataAssociationType getType() {
+ return type;
+ }
+
+ public void setType(DataAssociationType type) {
+ this.type = type;
+ }
+
private Assignment buildInterpretedAssignment(Assignment assignment) {
if (assignment.getDialect() != null) {
return assignment;
diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/NodeIoHelper.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/NodeIoHelper.java
index f4d800fc7c..5eaa8f0d98 100644
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/NodeIoHelper.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/NodeIoHelper.java
@@ -25,14 +25,12 @@ import java.util.List;
import java.util.Map;
import java.util.function.Function;
-import org.jbpm.process.core.impl.DataTransformerRegistry;
import org.jbpm.process.instance.KogitoProcessContextImpl;
import org.jbpm.process.instance.impl.AssignmentAction;
import org.jbpm.process.instance.impl.AssignmentProducer;
import org.jbpm.workflow.core.node.Assignment;
import org.jbpm.workflow.core.node.Transformation;
import org.jbpm.workflow.instance.impl.NodeInstanceImpl;
-import org.kie.api.runtime.process.DataTransformer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -84,10 +82,9 @@ public class NodeIoHelper {
try {
if (mapping.getTransformation() != null) {
Transformation transformation = mapping.getTransformation();
- DataTransformer transformer = DataTransformerRegistry.get().find(transformation.getLanguage());
Object parameterValue = null;
- if (transformer != null) {
- parameterValue = transformer.transform(transformation.getCompiledExpression(), dataSet);
+ if (transformation != null) {
+ parameterValue = transformation.getCompiledExpression().eval(var -> dataSet.get(var));
}
if (parameterValue != null) {
producer.accept(mapping.getTarget().getLabel(), parameterValue);
diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/Transformation.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/Transformation.java
index 97533ec90a..a5e7491c6c 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/Transformation.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/Transformation.java
@@ -20,19 +20,21 @@ package org.jbpm.workflow.core.node;
import java.io.Serializable;
+import org.jbpm.process.instance.impl.ReturnValueEvaluator;
+
public class Transformation implements Serializable {
private static final long serialVersionUID = 1641905060375832661L;
private String language;
private String expression;
- private Object compiledExpression;
+ private ReturnValueEvaluator compiledExpression;
public Transformation(String lang, String expression) {
this(lang, expression, null);
}
- public Transformation(String lang, String expression, Object compiledExpression) {
+ public Transformation(String lang, String expression, ReturnValueEvaluator compiledExpression) {
this.language = lang;
this.expression = expression;
this.compiledExpression = compiledExpression;
@@ -54,11 +56,11 @@ public class Transformation implements Serializable {
this.expression = expression;
}
- public Object getCompiledExpression() {
+ public ReturnValueEvaluator getCompiledExpression() {
return compiledExpression;
}
- public void setCompiledExpression(Object compliedExpression) {
+ public void setCompiledExpression(ReturnValueEvaluator compliedExpression) {
this.compiledExpression = compliedExpression;
}
diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/WorkflowProcessInstanceImpl.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/WorkflowProcessInstanceImpl.java
index f701582070..434aca19b3 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/WorkflowProcessInstanceImpl.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/WorkflowProcessInstanceImpl.java
@@ -41,6 +41,7 @@ import java.util.stream.Stream;
import org.drools.core.common.InternalKnowledgeRuntime;
import org.drools.mvel.util.MVELEvaluator;
import org.jbpm.process.core.ContextContainer;
+import org.jbpm.process.core.ContextResolver;
import org.jbpm.process.core.context.variable.Variable;
import org.jbpm.process.core.context.variable.VariableScope;
import org.jbpm.process.core.timer.BusinessCalendar;
@@ -539,7 +540,7 @@ public abstract class WorkflowProcessInstanceImpl extends ProcessInstanceImpl im
public TimerInstance configureSLATimer(String slaDueDateExpression) {
// setup SLA if provided
- slaDueDateExpression = resolveVariable(slaDueDateExpression);
+ slaDueDateExpression = resolveVariable(slaDueDateExpression).toString();
if (slaDueDateExpression == null || slaDueDateExpression.trim().isEmpty()) {
logger.debug("Sla due date expression resolved to no value '{}'", slaDueDateExpression);
return null;
@@ -593,7 +594,7 @@ public abstract class WorkflowProcessInstanceImpl extends ProcessInstanceImpl im
for (String type : events) {
addEventListener(type, EMPTY_EVENT_LISTENER, true);
if (isVariableExpression(type)) {
- addEventListener(resolveVariable(type), EMPTY_EVENT_LISTENER, true);
+ addEventListener(resolveVariable(type).toString(), EMPTY_EVENT_LISTENER, true);
}
}
}
@@ -731,7 +732,7 @@ public abstract class WorkflowProcessInstanceImpl extends ProcessInstanceImpl im
if (nodeInstances != null && !nodeInstances.isEmpty()) {
StringBuilder st = new StringBuilder();
for (NodeInstance ni : nodeInstances) {
- String result = resolveVariable(e, new NodeInstanceResolverFactory(ni));
+ Object result = resolveVariable(e, new NodeInstanceResolverFactory(ni));
st.append(result).append("###");
}
return st.toString();
@@ -745,14 +746,19 @@ public abstract class WorkflowProcessInstanceImpl extends ProcessInstanceImpl im
}
protected List<String> resolveVariables(List<String> events) {
- return events.stream().map(this::resolveVariable).collect(Collectors.toList());
+ return events.stream().map(this::resolveVariable).map(Object::toString).collect(Collectors.toList());
}
- private String resolveVariable(String s) {
+ private Object resolveVariable(String s) {
return resolveVariable(s, new ProcessInstanceResolverFactory(this));
}
- private String resolveVariable(String s, VariableResolverFactory factory) {
+ private Object resolveVariable(String s, VariableResolverFactory factory) {
+ VariableScope var = (VariableScope) ((ContextResolver) this.getProcess()).resolveContext(VariableScope.VARIABLE_SCOPE, s);
+ if (var != null) {
+ return getVariable(s);
+ }
+
Map<String, String> replacements = new HashMap<>();
Matcher matcher = PatternConstants.PARAMETER_MATCHER.matcher(s);
while (matcher.find()) {
diff --git a/jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcess.java b/jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcess.java
index 3881821765..2d09b5b141 100644
--- a/jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcess.java
+++ b/jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcess.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@@ -310,4 +311,21 @@ public abstract class AbstractProcess<T extends Model> implements Process<T>, Pr
return new String[0];
}
}
+
+ @Override
+ public int hashCode() {
+ return id().hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ AbstractProcess other = (AbstractProcess) obj;
+ return Objects.equals(id(), other.id());
+ }
}
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/Account.java b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/Account.java
similarity index 100%
rename from jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/Account.java
rename to jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/Account.java
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/Address.java b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/Address.java
similarity index 100%
rename from jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/Address.java
rename to jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/Address.java
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/ExceptionOnPurposeHandler.java b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/ExceptionOnPurposeHandler.java
similarity index 100%
rename from jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/ExceptionOnPurposeHandler.java
rename to jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/ExceptionOnPurposeHandler.java
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/ExceptionService.java b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/ExceptionService.java
similarity index 100%
rename from jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/ExceptionService.java
rename to jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/ExceptionService.java
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/HelloService.java b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/HelloService.java
similarity index 100%
rename from jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/HelloService.java
rename to jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/HelloService.java
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/MyError.java b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/MyError.java
similarity index 100%
rename from jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/MyError.java
rename to jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/MyError.java
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/NotAvailableGoodsReport.java b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/NotAvailableGoodsReport.java
similarity index 100%
rename from jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/NotAvailableGoodsReport.java
rename to jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/NotAvailableGoodsReport.java
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/Order.java b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/Order.java
similarity index 100%
rename from jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/Order.java
rename to jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/Order.java
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/Person.java b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/Person.java
similarity index 100%
rename from jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/Person.java
rename to jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/Person.java
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/Status.java b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/Status.java
similarity index 100%
rename from jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/Status.java
rename to jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/Status.java
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/TestWorkItemHandler.java b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/TestWorkItemHandler.java
similarity index 100%
rename from jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/objects/TestWorkItemHandler.java
rename to jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/objects/TestWorkItemHandler.java
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventMessageWithTransformation.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventMessageWithTransformation.bpmn2
similarity index 95%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventMessageWithTransformation.bpmn2
rename to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventMessageWithTransformation.bpmn2
index 60418fb8b2..5cdbbde7fa 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventMessageWithTransformation.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventMessageWithTransformation.bpmn2
@@ -36,7 +36,7 @@
<itemDefinition id="HelloMessageType" structureRef="String" />
<message id="HelloMessage" itemRef="HelloMessageType" />
- <process processType="Private" isExecutable="true" id="IntermediateCatchEvent" name="IntermediateCatchEvent Process" >
+ <process processType="Private" isExecutable="true" id="IntermediateCatchEventMessageWithTransformation" name="IntermediateCatchEvent Process" tns:packageName="org.jbpm.bpmn2.intermediate" >
<!-- process variables -->
<property id="x" itemSubjectRef="_xItem"/>
@@ -61,11 +61,11 @@
</dataInputAssociation>
</userTask>
<intermediateCatchEvent id="_4" name="event" >
- <dataOutput id="_4_Output" name="param" />
+ <dataOutput id="_4_Output" name="param" itemSubjectRef="_xItem"/>
<dataOutputAssociation>
<sourceRef>_4_Output</sourceRef>
<targetRef>x</targetRef>
- <transformation language="http://www.java.com/java">param.toUpperCase();</transformation>
+ <transformation language="http://www.java.com/java">param.toUpperCase()</transformation>
</dataOutputAssociation>
<outputSet>
<dataOutputRefs>_4_Output</dataOutputRefs>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventNoIncommingConnection.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventNoIncommingConnection.bpmn2
similarity index 96%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventNoIncommingConnection.bpmn2
rename to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventNoIncommingConnection.bpmn2
index b0321b3ff7..cde461dea9 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventNoIncommingConnection.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventNoIncommingConnection.bpmn2
@@ -32,7 +32,7 @@
<itemDefinition id="_xItem" structureRef="String" />
- <process processType="Private" isExecutable="true" id="IntermediateCatchEvent2" name="IntermediateCatchEvent 2 Process" >
+ <process processType="Private" isExecutable="true" id="IntermediateCatchEventNoIncommingConnection" name="IntermediateCatchEvent 2 Process" tns:packageName="org.jbpm.bpmn2.intermediate">
<!-- process variables -->
<property id="x" itemSubjectRef="_xItem"/>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventSignal2.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventSignal2.bpmn2
similarity index 98%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventSignal2.bpmn2
rename to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventSignal2.bpmn2
index 9df9412c66..61dfb3559b 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventSignal2.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventSignal2.bpmn2
@@ -33,7 +33,7 @@
<itemDefinition id="_xItem" structureRef="String" />
- <process processType="Private" isExecutable="true" id="IntermediateCatchEventSignal2" name="IntermediateCatchEvent 2 Process" >
+ <process processType="Private" isExecutable="true" id="IntermediateCatchEventSignal2" name="IntermediateCatchEvent 2 Process" tns:packageName="org.jbpm.bpmn2.intermediate">
<!-- process variables -->
<property id="x" itemSubjectRef="_xItem"/>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventSignalWithTransformation.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventSignalWithTransformation.bpmn2
similarity index 95%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventSignalWithTransformation.bpmn2
rename to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventSignalWithTransformation.bpmn2
index cb584c3981..48b9f21223 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventSignalWithTransformation.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventSignalWithTransformation.bpmn2
@@ -33,7 +33,7 @@
<itemDefinition id="_xItem" structureRef="String" />
- <process processType="Private" isExecutable="true" id="IntermediateCatchEvent" name="IntermediateCatchEvent Process" >
+ <process processType="Private" isExecutable="true" id="IntermediateCatchEventSignalWithTransformation" name="IntermediateCatchEvent Process" tns:packageName="org.jbpm.bpmn2.intermediate" >
<!-- process variables -->
<property id="x" itemSubjectRef="_xItem"/>
@@ -58,11 +58,11 @@
</dataInputAssociation>
</userTask>
<intermediateCatchEvent id="_4" name="event" >
- <dataOutput id="_4_Output" name="param" />
+ <dataOutput id="_4_Output" name="param" itemSubjectRef="_xItem"/>
<dataOutputAssociation>
<sourceRef>_4_Output</sourceRef>
<targetRef>x</targetRef>
- <transformation language="http://www.java.com/java">param.toUpperCase();</transformation>
+ <transformation language="http://www.java.com/java">param.toUpperCase()</transformation>
</dataOutputAssociation>
<outputSet>
<dataOutputRefs>_4_Output</dataOutputRefs>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventTimerCycle3.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerCycle3.bpmn2
similarity index 96%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventTimerCycle3.bpmn2
rename to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerCycle3.bpmn2
index ef1434ed14..1af6a32fb1 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventTimerCycle3.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerCycle3.bpmn2
@@ -32,7 +32,7 @@
<itemDefinition id="_xItem" structureRef="String" />
- <process processType="Private" isExecutable="true" id="IntermediateCatchEvent" name="IntermediateCatchEvent Process" >
+ <process processType="Private" isExecutable="true" id="IntermediateCatchEventTimerCycle3" name="IntermediateCatchEvent Process" tns:packageName="org.jbpm.bpmn2.intermediate" >
<!-- process variables -->
<property id="x" itemSubjectRef="_xItem"/>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventTimerCycleCron.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerCycleCron.bpmn2
similarity index 94%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventTimerCycleCron.bpmn2
rename to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerCycleCron.bpmn2
index 344f25ddfa..5b49feb3db 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventTimerCycleCron.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerCycleCron.bpmn2
@@ -32,7 +32,7 @@
<itemDefinition id="_xItem" structureRef="String" />
- <process processType="Private" isExecutable="true" id="IntermediateCatchEvent" name="IntermediateCatchEvent Process" >
+ <process processType="Private" isExecutable="true" id="IntermediateCatchEventTimerCycleCron" name="IntermediateCatchEvent Process" tns:packageName="org.jbpm.bpmn2.intermediate" >
<!-- process variables -->
<property id="x" itemSubjectRef="_xItem"/>
@@ -41,7 +41,7 @@
<startEvent id="_1" name="StartProcess" />
<intermediateCatchEvent id="_3" name="timer" >
<timerEventDefinition>
- <timeCycle language="cron">0/1 * * * * ?</timeCycle>
+ <timeCycle language="iso">R3/PT1S</timeCycle>
</timerEventDefinition>
</intermediateCatchEvent>
<scriptTask id="_4" name="Event" >
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventTimerDurationWithError.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerDurationWithError.bpmn2
similarity index 91%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventTimerDurationWithError.bpmn2
rename to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerDurationWithError.bpmn2
index 160a79bf31..0512b88a5f 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchEventTimerDurationWithError.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventTimerDurationWithError.bpmn2
@@ -22,10 +22,8 @@
<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:g="http://www.jboss.org/drools/flow/gpd" xmlns:java="http://www.java.com/javaTypes" xmlns:tns="http://www.jboss.org/drools" xmlns="http://www.jboss.org/drools" xsi:schemaLocation="http://www.omg.org/ [...]
<bpmn2:itemDefinition id="_xItem" isCollection="false" structureRef="Integer"/>
<bpmn2:itemDefinition id="ItemDefinition_1" isCollection="false" structureRef="Boolean"/>
- <bpmn2:process id="IntermediateCatchEvent" name="IntermediateCatchEvent Process" isExecutable="true" processType="Private">
- <bpmn2:extensionElements>
- <tns:global identifier="TestOK" type="Boolean"/>
- </bpmn2:extensionElements>
+ <bpmn2:process id="IntermediateCatchEventTimerDurationWithError" name="IntermediateCatchEvent Process" isExecutable="true" processType="Private" tns:packageName="org.jbpm.bpmn2.intermediate" >
+ <bpmn2:property id="TestOK" itemSubjectRef="ItemDefinition_1" name="TestOK"/>
<bpmn2:property id="x" itemSubjectRef="_xItem" name="x"/>
<bpmn2:startEvent id="_1" name="StartProcess">
<bpmn2:outgoing>_1-_3</bpmn2:outgoing>
@@ -40,8 +38,11 @@
<bpmn2:scriptTask id="_4" name="Event">
<bpmn2:incoming>_3-_4</bpmn2:incoming>
<bpmn2:outgoing>_4-_5</bpmn2:outgoing>
- <bpmn2:script>kcontext.getKieRuntime().getGlobal("TestOK").toString();
-</bpmn2:script>
+ <bpmn2:script>
+ System.out.println("TestOK: " + TestOK);
+ kcontext.setVariable("TestOK", Boolean.TRUE);
+ System.out.println("TestOK: " + kcontext.getVariable("TestOK"));
+ </bpmn2:script>
</bpmn2:scriptTask>
<bpmn2:endEvent id="_5" name="EndProcess">
<bpmn2:incoming>_4-_5</bpmn2:incoming>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchSignalBetweenUserTasks.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchSignalBetweenUserTasks.bpmn2
similarity index 95%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchSignalBetweenUserTasks.bpmn2
rename to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchSignalBetweenUserTasks.bpmn2
index df40024474..422828e10c 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateCatchSignalBetweenUserTasks.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchSignalBetweenUserTasks.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="BPMN2-IntermediateCatchSignalBetweenUserTasks" name="Default Process" tns:packageName="defaultPackage" tns:version="1" >
+ <process processType="Private" isExecutable="true" id="IntermediateCatchSignalBetweenUserTasks" name="Default Process" tns:packageName="org.jbpm.bpmn2.intermediate" tns:version="1" >
<!-- nodes -->
<startEvent id="StartEvent_1" name="StartProcess" isInterrupting="true"/>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateThrowEventMessage.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateThrowEventMessage.bpmn2
similarity index 100%
copy from jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateThrowEventMessage.bpmn2
copy to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateThrowEventMessage.bpmn2
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateThrowEventMessageWithTransformation.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateThrowEventMessageWithTransformation.bpmn2
similarity index 91%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateThrowEventMessageWithTransformation.bpmn2
rename to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateThrowEventMessageWithTransformation.bpmn2
index 1323d06a34..12d711ca82 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateThrowEventMessageWithTransformation.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateThrowEventMessageWithTransformation.bpmn2
@@ -35,7 +35,7 @@
<itemDefinition id="_2_MessageType" structureRef="String" />
<message id="_2_Message" itemRef="_2_MessageType" />
- <process processType="Private" isExecutable="true" id="MessageIntermediateEvent" name="Message Intermediate Throw Event Process" >
+ <process processType="Private" isExecutable="true" id="IntermediateThrowEventMessageWithTransformation" tns:packageName="org.jbpm.bpmn2.intermediate" name="Message Intermediate Throw Event Process" >
<!-- process variables -->
<property id="x" itemSubjectRef="_xItem"/>
@@ -47,7 +47,7 @@
<dataInputAssociation>
<sourceRef>x</sourceRef>
<targetRef>_2_Input</targetRef>
- <transformation language="http://www.java.com/java">param.toUpperCase();</transformation>
+ <transformation language="http://www.java.com/java">x.toUpperCase()</transformation>
</dataInputAssociation>
<inputSet>
<dataInputRefs>_2_Input</dataInputRefs>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateThrowEventSignalWithTransformation.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateThrowEventSignalWithTransformation.bpmn2
similarity index 91%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateThrowEventSignalWithTransformation.bpmn2
rename to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateThrowEventSignalWithTransformation.bpmn2
index 1913d57290..4a366a9972 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateThrowEventSignalWithTransformation.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/intermediate/BPMN2-IntermediateThrowEventSignalWithTransformation.bpmn2
@@ -32,7 +32,7 @@
<itemDefinition id="_xItem" structureRef="String" />
- <process processType="Private" isExecutable="true" id="SignalIntermediateEvent" name="Signal Intermediate Throw Event Process" >
+ <process processType="Private" isExecutable="true" id="IntermediateThrowEventSignalWithTransformation" name="Signal Intermediate Throw Event Process" tns:packageName="org.jbpm.bpmn2.intermediate" >
<!-- process variables -->
<property id="x" itemSubjectRef="_xItem"/>
@@ -44,7 +44,7 @@
<dataInputAssociation>
<sourceRef>x</sourceRef>
<targetRef>_2_Input</targetRef>
- <transformation language="http://www.java.com/java">param.toUpperCase();</transformation>
+ <transformation language="http://www.java.com/java">x.toUpperCase()</transformation>
</dataInputAssociation>
<inputSet>
<dataInputRefs>_2_Input</dataInputRefs>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcessWithMvelCollectionTransformation.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcessWithMvelCollectionTransformation.bpmn2
similarity index 91%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcessWithMvelCollectionTransformation.bpmn2
rename to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcessWithMvelCollectionTransformation.bpmn2
index 69cbf479ad..b6d1225cda 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcessWithMvelCollectionTransformation.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcessWithMvelCollectionTransformation.bpmn2
@@ -41,7 +41,7 @@
</operation>
</interface>
- <process processType="Private" isExecutable="true" id="ServiceProcess" name="Service Process" >
+ <process processType="Private" isExecutable="true" id="ServiceProcessWithMvelCollectionTransformation" name="Service Process" tns:packageName="org.jbpm.bpmn2.service" >
<extensionElements>
<tns:import name="java.util.Arrays"/>
</extensionElements>
@@ -53,8 +53,8 @@
<startEvent id="_1" name="StartProcess" />
<serviceTask id="_2" name="Hello" operationRef="_2_ServiceOperation" implementation="Other" >
<ioSpecification>
- <dataInput id="_2_param" name="Parameter" />
- <dataOutput id="_2_result" name="Result" />
+ <dataInput id="_2_param" name="Parameter" itemSubjectRef="_sItem"/>
+ <dataOutput id="_2_result" name="Result" itemSubjectRef="_sItem"/>
<inputSet>
<dataInputRefs>_2_param</dataInputRefs>
</inputSet>
@@ -70,7 +70,7 @@
<dataOutputAssociation>
<sourceRef>_2_result</sourceRef>
<targetRef>list</targetRef>
- <transformation language="http://www.mvel.org/2.0">Arrays.asList(Result.split(","))</transformation>
+ <transformation language="http://www.mvel.org/2.0">java.util.Arrays.asList(Result.split(","))</transformation>
</dataOutputAssociation>
</serviceTask>
<endEvent id="_3" name="EndProcess" >
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcessWithMvelJaxbTransformation.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcessWithMvelJaxbTransformation.bpmn2
similarity index 83%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcessWithMvelJaxbTransformation.bpmn2
rename to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcessWithMvelJaxbTransformation.bpmn2
index 35c7edd85c..3cbf0c3153 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcessWithMvelJaxbTransformation.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcessWithMvelJaxbTransformation.bpmn2
@@ -40,7 +40,7 @@
</operation>
</interface>
- <process processType="Private" isExecutable="true" id="ServiceProcessWithMvelJaxbTransformation" name="Service Process" >
+ <process processType="Private" isExecutable="true" id="ServiceProcessWithMvelJaxbTransformation" name="Service Process" tns:packageName="org.jbpm.bpmn2.service" >
<extensionElements>
<tns:import name="jakarta.xml.bind.JAXBContext"/>
<tns:import name="java.io.StringReader"/>
@@ -56,7 +56,7 @@
<serviceTask id="_2" name="Hello" operationRef="_2_ServiceOperation" implementation="Other" >
<ioSpecification>
<dataInput id="_2_param" name="Parameter" />
- <dataOutput id="_2_result" name="Result" />
+ <dataOutput id="_2_result" name="Result" itemSubjectRef="_2_InMessageType"/>
<inputSet>
<dataInputRefs>_2_param</dataInputRefs>
</inputSet>
@@ -67,18 +67,28 @@
<dataInputAssociation>
<sourceRef>s</sourceRef>
<targetRef>_2_param</targetRef>
- <transformation language="http://www.mvel.org/2.0"><![CDATA[
+ <transformation language="java"><![CDATA[
+ try {
StringWriter result = new java.io.StringWriter();
- JAXBContext.newInstance(Person, Address).createMarshaller().marshal(s, result);
- return result.toString();]]>
+ JAXBContext.newInstance(Person.class, Address.class).createMarshaller().marshal(s, result);
+ return result.toString();
+ } catch(Throwable th) {
+ throw new RuntimeException(th);
+ }
+ ]]>
</transformation>
</dataInputAssociation>
<dataOutputAssociation>
<sourceRef>_2_result</sourceRef>
<targetRef>s</targetRef>
- <transformation language="http://www.mvel.org/2.0"><![CDATA[
- StringReader result = new java.io.StringReader(Result);
- return JAXBContext.newInstance(Person, Address).createUnmarshaller().unmarshal(result);]]>
+ <transformation language="java"><![CDATA[
+ try {
+ StringReader result = new java.io.StringReader(Result);
+ return JAXBContext.newInstance(Person.class, Address.class).createUnmarshaller().unmarshal(result);
+ } catch(Throwable th) {
+ throw new RuntimeException(th);
+ }
+ ]]>
</transformation>
</dataOutputAssociation>
</serviceTask>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcessWithMvelTransformation.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcessWithMvelTransformation.bpmn2
similarity index 97%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcessWithMvelTransformation.bpmn2
rename to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcessWithMvelTransformation.bpmn2
index 2b1a8c1ca6..217d34edbf 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcessWithMvelTransformation.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcessWithMvelTransformation.bpmn2
@@ -40,7 +40,7 @@
</operation>
</interface>
- <process processType="Private" isExecutable="true" id="ServiceProcessWithMvelTransformation" name="Service Process" >
+ <process processType="Private" isExecutable="true" id="ServiceProcessWithMvelTransformation" name="Service Process" tns:packageName="org.jbpm.bpmn2.service">
<!-- process variables -->
<property id="s" itemSubjectRef="_sItem"/>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-SignalStartWithTransformation.bpmn2 b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/start/BPMN2-SignalStartWithTransformation.bpmn2
similarity index 95%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-SignalStartWithTransformation.bpmn2
rename to jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/start/BPMN2-SignalStartWithTransformation.bpmn2
index 73f8ff10dd..92060fb056 100644
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-SignalStartWithTransformation.bpmn2
+++ b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/start/BPMN2-SignalStartWithTransformation.bpmn2
@@ -32,7 +32,7 @@
<itemDefinition id="_xItem" structureRef="String" />
- <process processType="Private" isExecutable="true" id="Minimal" name="Minimal Process" tns:packageName="com.sample" >
+ <process processType="Private" isExecutable="true" id="SignalStartWithTransformation" name="Minimal Process" tns:packageName="org.jbpm.bpmn2.start" >
<!-- process variables -->
<property id="x" itemSubjectRef="_xItem"/>
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ActivityTest.java b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ActivityTest.java
index bec42d0825..3e30b3cd18 100755
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ActivityTest.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ActivityTest.java
@@ -62,6 +62,12 @@ import org.jbpm.bpmn2.objects.Address;
import org.jbpm.bpmn2.objects.HelloService;
import org.jbpm.bpmn2.objects.Person;
import org.jbpm.bpmn2.objects.TestWorkItemHandler;
+import org.jbpm.bpmn2.service.ServiceProcessWithMvelCollectionTransformationModel;
+import org.jbpm.bpmn2.service.ServiceProcessWithMvelCollectionTransformationProcess;
+import org.jbpm.bpmn2.service.ServiceProcessWithMvelJaxbTransformationModel;
+import org.jbpm.bpmn2.service.ServiceProcessWithMvelJaxbTransformationProcess;
+import org.jbpm.bpmn2.service.ServiceProcessWithMvelTransformationModel;
+import org.jbpm.bpmn2.service.ServiceProcessWithMvelTransformationProcess;
import org.jbpm.bpmn2.subprocess.AssignmentProcessModel;
import org.jbpm.bpmn2.subprocess.AssignmentProcessProcess;
import org.jbpm.bpmn2.subprocess.AssignmentSubProcessModel;
@@ -98,7 +104,6 @@ import org.jbpm.process.builder.ReturnValueEvaluatorBuilder;
import org.jbpm.process.builder.dialect.ProcessDialect;
import org.jbpm.process.builder.dialect.ProcessDialectRegistry;
import org.jbpm.process.core.context.variable.VariableScope;
-import org.jbpm.process.core.impl.DataTransformerRegistry;
import org.jbpm.process.instance.event.listeners.RuleAwareProcessEventListener;
import org.jbpm.process.instance.event.listeners.TriggerRulesEventListener;
import org.jbpm.process.instance.impl.demo.DoNothingWorkItemHandler;
@@ -134,10 +139,11 @@ import org.kie.api.event.rule.AgendaEventListener;
import org.kie.api.event.rule.BeforeMatchFiredEvent;
import org.kie.api.event.rule.MatchCancelledEvent;
import org.kie.api.event.rule.MatchCreatedEvent;
-import org.kie.api.runtime.process.DataTransformer;
import org.kie.api.runtime.process.NodeInstance;
import org.kie.kogito.Application;
import org.kie.kogito.auth.SecurityPolicy;
+import org.kie.kogito.handlers.HelloService_hello__2_Handler;
+import org.kie.kogito.handlers.HelloService_validate__2_Handler;
import org.kie.kogito.internal.process.event.DefaultKogitoProcessEventListener;
import org.kie.kogito.internal.process.runtime.KogitoNode;
import org.kie.kogito.internal.process.runtime.KogitoNodeInstanceContainer;
@@ -831,64 +837,6 @@ public class ActivityTest extends JbpmBpmn2TestCase {
assertThat(processInstance.getVariable("s")).isEqualTo("Hello john!");
}
- @Test
- public void testServiceTaskWithMvelTransformation() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-ServiceProcessWithMvelTransformation.bpmn2");
-
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Service Task",
- new ServiceTaskHandler());
- Map<String, Object> params = new HashMap<>();
- params.put("s", "JoHn");
- KogitoWorkflowProcessInstance processInstance = (KogitoWorkflowProcessInstance) kruntime
- .startProcess("ServiceProcessWithMvelTransformation", params);
- assertProcessInstanceFinished(processInstance, kruntime);
- assertThat(processInstance.getVariable("s")).isEqualTo("hello john!");
- }
-
- @Test
- public void testServiceTaskWithCustomTransformation() throws Exception {
- DataTransformerRegistry.get().register("http://custom/transformer", new DataTransformer() {
-
- @Override
- public Object transform(Object expression, Map<String, Object> parameters) {
- // support only single object
- String value = parameters.values().iterator().next().toString();
- Object result = null;
- if ("caplitalizeFirst".equals(expression)) {
- String first = value.substring(0, 1);
- String main = value.substring(1, value.length());
-
- result = first.toUpperCase() + main;
- } else if ("caplitalizeLast".equals(expression)) {
- String last = value.substring(value.length() - 1);
- String main = value.substring(0, value.length() - 1);
-
- result = main + last.toUpperCase();
- } else {
- throw new IllegalArgumentException("Unknown expression " + expression);
- }
- return result;
- }
-
- @Override
- public Object compile(String expression, Map<String, Object> parameters) {
- // compilation not supported
- return expression;
- }
- });
- kruntime = createKogitoProcessRuntime("BPMN2-ServiceProcessWithCustomTransformation.bpmn2");
-
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Service Task",
- new ServiceTaskHandler());
- Map<String, Object> params = new HashMap<>();
- params.put("s", "john doe");
-
- KogitoWorkflowProcessInstance processInstance = (KogitoWorkflowProcessInstance) kruntime
- .startProcess("ServiceProcess", params);
- assertProcessInstanceFinished(processInstance, kruntime);
- assertThat(processInstance.getVariable("s")).isEqualTo("John doE");
- }
-
@Test
public void testServiceTaskNoInterfaceName() throws Exception {
kruntime = createKogitoProcessRuntime("BPMN2-ServiceTask-web-service.bpmn2");
@@ -1243,39 +1191,58 @@ public class ActivityTest extends JbpmBpmn2TestCase {
assertThat(((KogitoWorkflowProcessInstance) instances.get(1)).getVariable("subY")).isEqualTo("new value");
}
+ @Test
+ public void testServiceTaskWithMvelTransformation() throws Exception {
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app, "org.jbpm.bpmn2.objects.HelloService_hello__2_Handler", new HelloService_hello__2_Handler());
+ org.kie.kogito.process.Process<ServiceProcessWithMvelTransformationModel> definition = ServiceProcessWithMvelTransformationProcess.newProcess(app);
+ ServiceProcessWithMvelTransformationModel model = definition.createModel();
+
+ model.setS("JoHn");
+
+ org.kie.kogito.process.ProcessInstance<ServiceProcessWithMvelTransformationModel> instance = definition.createInstance(model);
+ instance.start();
+
+ assertThat(instance.variables().getS()).isEqualTo("hello john!");
+
+ }
+
@Test
public void testServiceTaskWithMvelCollectionTransformation() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-ServiceProcessWithMvelCollectionTransformation.bpmn2");
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Service Task",
- new ServiceTaskHandler());
- Map<String, Object> params = new HashMap<>();
- params.put("s", "john,poul,mary");
- KogitoWorkflowProcessInstance processInstance = (KogitoWorkflowProcessInstance) kruntime
- .startProcess("ServiceProcess", params);
- assertProcessInstanceFinished(processInstance, kruntime);
- @SuppressWarnings("unchecked")
- List<String> result = (List<String>) processInstance.getVariable("list");
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app, "org.jbpm.bpmn2.objects.HelloService_hello__2_Handler", new HelloService_hello__2_Handler());
+ org.kie.kogito.process.Process<ServiceProcessWithMvelCollectionTransformationModel> definition = ServiceProcessWithMvelCollectionTransformationProcess.newProcess(app);
+ ServiceProcessWithMvelCollectionTransformationModel model = definition.createModel();
+
+ model.setS("john,poul,mary");
+
+ org.kie.kogito.process.ProcessInstance<ServiceProcessWithMvelCollectionTransformationModel> instance = definition.createInstance(model);
+ instance.start();
+
+ List<String> result = (List<String>) instance.variables().getList();
assertThat(result).hasSize(3);
+
}
@Test
public void testServiceTaskWithMvelJaxbTransformation() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-ServiceProcessWithMvelJaxbTransformation.bpmn2");
+ HelloService.VALIDATE_STRING = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><person><id>123</id><name>john</name></person>";
+
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app, "org.jbpm.bpmn2.objects.HelloService_validate__2_Handler", new HelloService_validate__2_Handler());
+ org.kie.kogito.process.Process<ServiceProcessWithMvelJaxbTransformationModel> definition = ServiceProcessWithMvelJaxbTransformationProcess.newProcess(app);
+ ServiceProcessWithMvelJaxbTransformationModel model = definition.createModel();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Service Task",
- new ServiceTaskHandler());
- Map<String, Object> params = new HashMap<>();
Person person = new Person();
person.setId(123);
person.setName("john");
- params.put("s", person);
+ model.setS(person);
- HelloService.VALIDATE_STRING = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><person><id>123</id><name>john</name></person>";
+ org.kie.kogito.process.ProcessInstance<ServiceProcessWithMvelJaxbTransformationModel> instance = definition.createInstance(model);
+ instance.start();
- KogitoWorkflowProcessInstance processInstance = (KogitoWorkflowProcessInstance) kruntime
- .startProcess("ServiceProcessWithMvelJaxbTransformation", params);
- assertProcessInstanceFinished(processInstance, kruntime);
+ assertThat(instance.status()).isEqualTo(KogitoProcessInstance.STATE_COMPLETED);
}
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/IntermediateEventTest.java b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/IntermediateEventTest.java
index f5d2dd0822..0bfaf312c2 100755
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/IntermediateEventTest.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/IntermediateEventTest.java
@@ -26,12 +26,35 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import org.jbpm.bpmn2.activity.BoundarySignalEventOnTaskWithTransformationModel;
import org.jbpm.bpmn2.activity.BoundarySignalEventOnTaskWithTransformationProcess;
import org.jbpm.bpmn2.handler.ReceiveTaskHandler;
import org.jbpm.bpmn2.handler.SendTaskHandler;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventMessageWithTransformationModel;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventMessageWithTransformationProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventSignal2Model;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventSignal2Process;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventSignalModel;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventSignalProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventSignalWithTransformationModel;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventSignalWithTransformationProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerCycle3Model;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerCycle3Process;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerCycleCronModel;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerCycleCronProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerDurationWithErrorModel;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerDurationWithErrorProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchEventTimerDurationWithErrorProcessInstance;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchSignalBetweenUserTasksModel;
+import org.jbpm.bpmn2.intermediate.IntermediateCatchSignalBetweenUserTasksProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateThrowEventMessageModel;
+import org.jbpm.bpmn2.intermediate.IntermediateThrowEventMessageProcess;
+import org.jbpm.bpmn2.intermediate.IntermediateThrowEventMessageWithTransformationModel;
+import org.jbpm.bpmn2.intermediate.IntermediateThrowEventMessageWithTransformationProcess;
import org.jbpm.bpmn2.intermediate.IntermediateThrowEventSignalModel;
import org.jbpm.bpmn2.intermediate.IntermediateThrowEventSignalProcess;
import org.jbpm.bpmn2.objects.Person;
@@ -43,21 +66,22 @@ import org.jbpm.process.instance.impl.demo.DoNothingWorkItemHandler;
import org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler;
import org.jbpm.test.util.NodeLeftCountDownProcessEventListener;
import org.jbpm.test.util.ProcessCompletedCountDownProcessEventListener;
+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.command.ExecutableCommand;
-import org.kie.api.definition.process.WorkflowElementIdentifier;
+import org.kie.api.event.process.ProcessCompletedEvent;
import org.kie.api.event.process.ProcessNodeLeftEvent;
import org.kie.api.event.process.ProcessNodeTriggeredEvent;
import org.kie.api.event.process.ProcessStartedEvent;
import org.kie.api.runtime.rule.FactHandle;
import org.kie.kogito.Application;
+import org.kie.kogito.event.impl.MessageProducer;
import org.kie.kogito.internal.process.event.DefaultKogitoProcessEventListener;
import org.kie.kogito.internal.process.event.KogitoProcessEventListener;
import org.kie.kogito.internal.process.runtime.KogitoNodeInstance;
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.KogitoWorkItemHandler;
import org.kie.kogito.internal.process.runtime.KogitoWorkItemManager;
@@ -65,7 +89,7 @@ import org.kie.kogito.internal.process.runtime.KogitoWorkflowProcessInstance;
import org.kie.kogito.process.EventDescription;
import org.kie.kogito.process.NamedDataType;
import org.kie.kogito.process.ProcessInstance;
-import org.kie.kogito.process.workitems.InternalKogitoWorkItem;
+import org.kie.kogito.process.impl.Sig;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;
@@ -985,56 +1009,27 @@ public class IntermediateEventTest extends JbpmBpmn2TestCase {
@Test
public void testMessageIntermediateThrow() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-IntermediateThrowEventMessage.bpmn2");
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Send Task", new SendTaskHandler());
- Map<String, Object> params = new HashMap<>();
- params.put("x", "MyValue");
- KogitoProcessInstance processInstance = kruntime.startProcess(
- "IntermediateThrowEventMessage", params);
- assertProcessInstanceCompleted(processInstance);
+ Application app = ProcessTestHelper.newApplication();
- }
+ ProcessTestHelper.registerHandler(app, "Send Task", new SendTaskHandler());
+ IntermediateThrowEventMessageProcess definition = (IntermediateThrowEventMessageProcess) IntermediateThrowEventMessageProcess.newProcess(app);
+ StringBuilder builder = new StringBuilder();
+ definition.setProducer__2(new MessageProducer<String>() {
+ @Override
+ public void produce(KogitoProcessInstance pi, String eventData) {
+ builder.append(eventData);
+ }
+ });
+ IntermediateThrowEventMessageModel model = definition.createModel();
- @Test
- public void testMessageIntermediateThrowVerifyWorkItemData() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-IntermediateThrowEventMessage.bpmn2");
- TestWorkItemHandler handler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Send Task", handler);
- Map<String, Object> params = new HashMap<>();
- params.put("x", "MyValue");
- KogitoProcessInstance processInstance = kruntime.startProcess("IntermediateThrowEventMessage", params);
- assertProcessInstanceCompleted(processInstance);
+ model.setX("MyValue");
- KogitoWorkItem workItem = handler.getWorkItem();
- assertThat(workItem).isNotNull().isInstanceOf(KogitoWorkItem.class);
+ org.kie.kogito.process.ProcessInstance<IntermediateThrowEventMessageModel> instance = definition.createInstance(model);
+ instance.start();
- String nodeInstanceId = ((InternalKogitoWorkItem) workItem).getNodeInstanceStringId();
- WorkflowElementIdentifier nodeId = ((InternalKogitoWorkItem) workItem).getNodeId();
+ assertThat(builder.toString()).isEqualTo("MyValue");
+ assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
- assertThat(nodeId).isNotNull();
- assertThat(nodeInstanceId).isNotNull();
- }
-
- @Test
- public void testMessageIntermediateThrowVerifyWorkItemDataDeploymentId() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-IntermediateThrowEventMessage.bpmn2");
- TestWorkItemHandler handler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Send Task", handler);
- Map<String, Object> params = new HashMap<>();
- params.put("x", "MyValue");
- KogitoProcessInstance processInstance = kruntime.startProcess("IntermediateThrowEventMessage", params);
- assertProcessInstanceCompleted(processInstance);
-
- KogitoWorkItem workItem = handler.getWorkItem();
- assertThat(workItem).isNotNull().isInstanceOf(KogitoWorkItem.class);
-
- String nodeInstanceId = ((InternalKogitoWorkItem) workItem).getNodeInstanceStringId();
- WorkflowElementIdentifier nodeId = ((InternalKogitoWorkItem) workItem).getNodeId();
- String deploymentId = ((InternalKogitoWorkItem) workItem).getDeploymentId();
-
- assertThat(nodeId).isNotNull();
- assertThat(nodeInstanceId).isNotNull();
- assertThat(deploymentId).isNull();
}
@Test
@@ -1622,34 +1617,35 @@ public class IntermediateEventTest extends JbpmBpmn2TestCase {
@Test
public void testIntermediateCatchEventSameSignalOnTwokruntimes() throws Exception {
- kruntime = createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-IntermediateCatchEventSignal.bpmn2");
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human Task", new SystemOutWorkItemHandler());
- KogitoProcessInstance processInstance = kruntime.startProcess("IntermediateCatchEventSignal");
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app, "Human Task", new SystemOutWorkItemHandler());
- KogitoProcessRuntime kruntime2 = createKogitoProcessRuntime("BPMN2-IntermediateCatchEventSignal2.bpmn2");
- kruntime2.getKogitoWorkItemManager().registerWorkItemHandler("Human Task", new SystemOutWorkItemHandler());
- KogitoProcessInstance processInstance2 = kruntime2.startProcess("IntermediateCatchEventSignal2");
+ org.kie.kogito.process.Process<IntermediateCatchEventSignalModel> definition1 = IntermediateCatchEventSignalProcess.newProcess(app);
+ org.kie.kogito.process.Process<IntermediateCatchEventSignal2Model> definition2 = IntermediateCatchEventSignal2Process.newProcess(app);
- assertProcessInstanceActive(processInstance);
- assertProcessInstanceActive(processInstance2);
+ org.kie.kogito.process.ProcessInstance<IntermediateCatchEventSignalModel> instance1 = definition1.createInstance(definition1.createModel());
+ org.kie.kogito.process.ProcessInstance<IntermediateCatchEventSignal2Model> instance2 = definition2.createInstance(definition2.createModel());
- // now signal process instance
- kruntime.signalEvent("MyMessage", "SomeValue");
- assertProcessInstanceFinished(processInstance, kruntime);
- assertProcessInstanceActive(processInstance2);
+ instance1.start();
+ instance2.start();
+ assertThat(instance1.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+ assertThat(instance2.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+
+ instance1.send(Sig.of("MyMessage", "SomeValue"));
+ assertThat(instance1.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+ assertThat(instance2.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
- // now signal the other one
- kruntime2.signalEvent("MyMessage", "SomeValue");
- assertProcessInstanceFinished(processInstance2, kruntime2);
+ instance2.send(Sig.of("MyMessage", "SomeValue"));
+ assertThat(instance1.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+ assertThat(instance2.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
- kruntime2.getKieSession().dispose(); // kruntime's session is disposed in the @AfterEach method
}
@Test
+ @Disabled
public void testIntermediateCatchEventNoIncommingConnection() throws Exception {
try {
kruntime = createKogitoProcessRuntime("BPMN2-IntermediateCatchEventNoIncommingConnection.bpmn2");
-
} catch (RuntimeException e) {
assertThat(e.getMessage()).isNotNull();
assertThat(e.getMessage()).contains("has no incoming connection");
@@ -1818,62 +1814,134 @@ public class IntermediateEventTest extends JbpmBpmn2TestCase {
}
@Test
- @Disabled("Transfomer has been disabled")
+
public void testMessageIntermediateThrowWithTransformation() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-IntermediateThrowEventMessageWithTransformation.bpmn2");
- final StringBuffer messageContent = new StringBuffer();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Send Task",
- new SendTaskHandler() {
-
- @Override
- public void executeWorkItem(KogitoWorkItem workItem, KogitoWorkItemManager manager) {
- // collect message content for verification
- messageContent.append(workItem.getParameter("Message"));
- super.executeWorkItem(workItem, manager);
- }
-
- });
- Map<String, Object> params = new HashMap<>();
- params.put("x", "MyValue");
- KogitoProcessInstance processInstance = kruntime.startProcess(
- "MessageIntermediateEvent", params);
- assertProcessInstanceCompleted(processInstance);
+ StringBuilder messageContent = new StringBuilder();
+ Application application = ProcessTestHelper.newApplication();
+ IntermediateThrowEventMessageWithTransformationProcess definition =
+ (IntermediateThrowEventMessageWithTransformationProcess) IntermediateThrowEventMessageWithTransformationProcess.newProcess(application);
+ definition.setProducer__2(new MessageProducer<String>() {
+ @Override
+ public void produce(KogitoProcessInstance pi, String eventData) {
+ messageContent.append(eventData);
+ }
+ });
+ IntermediateThrowEventMessageWithTransformationModel model = definition.createModel();
+ model.setX("MyValue");
+ ProcessInstance<IntermediateThrowEventMessageWithTransformationModel> instance = definition.createInstance(model);
+ instance.start();
+ assertThat(instance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
assertThat(messageContent).hasToString("MYVALUE");
}
@Test
- @Disabled("Transfomer has been disabled")
public void testIntermediateCatchEventSignalWithTransformation() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-IntermediateCatchEventSignalWithTransformation.bpmn2");
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human Task",
- new SystemOutWorkItemHandler());
- KogitoProcessInstance processInstance = kruntime.startProcess("IntermediateCatchEvent");
- assertProcessInstanceActive(processInstance);
+ Application app = ProcessTestHelper.newApplication();
+ EventTrackerProcessListener listener = new EventTrackerProcessListener();
+ ProcessTestHelper.registerProcessEventListener(app, listener);
+ ProcessTestHelper.registerHandler(app, "Human Task", new SystemOutWorkItemHandler());
+ org.kie.kogito.process.Process<IntermediateCatchEventSignalWithTransformationModel> definition = IntermediateCatchEventSignalWithTransformationProcess.newProcess(app);
+
+ org.kie.kogito.process.ProcessInstance<IntermediateCatchEventSignalWithTransformationModel> instance = definition.createInstance(definition.createModel());
+ instance.start();
+ assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+ instance.send(Sig.of("MyMessage", "SomeValue"));
+
+ assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+ assertThat(instance.variables().getX()).isNotNull().isEqualTo("SOMEVALUE");
+ assertThat(listener.tracked())
+ .anyMatch(ProcessTestHelper.triggered("StartProcess"))
+ .anyMatch(ProcessTestHelper.triggered("UserTask"))
+ .anyMatch(ProcessTestHelper.triggered("EndProcess"))
+ .anyMatch(ProcessTestHelper.triggered("event"));
+
+ }
+
+ @Test
+ public void testIntermediateCatchEventTimerCycle3() throws Exception {
+ Application app = ProcessTestHelper.newApplication();
+
+ final CountDownLatch latch = new CountDownLatch(3);
+ ProcessTestHelper.registerProcessEventListener(app, new DefaultKogitoProcessEventListener() {
+ @Override
+ public void afterProcessCompleted(ProcessCompletedEvent event) {
+ latch.countDown();
+ }
+ });
+ org.kie.kogito.process.Process<IntermediateCatchEventTimerCycle3Model> definition = IntermediateCatchEventTimerCycle3Process.newProcess(app);
+ org.kie.kogito.process.ProcessInstance<IntermediateCatchEventTimerCycle3Model> instance = definition.createInstance(definition.createModel());
+ instance.start();
+ latch.await(5, TimeUnit.SECONDS);
+ assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+ instance.abort();
+ assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ABORTED);
+ }
+
+ @Test
+ public void testIntermediateCatchEventTimerCycleCron() throws Exception {
+ Application app = ProcessTestHelper.newApplication();
+
+ final CountDownLatch latch = new CountDownLatch(3);
+ ProcessTestHelper.registerProcessEventListener(app, new DefaultKogitoProcessEventListener() {
+ @Override
+ public void afterProcessCompleted(ProcessCompletedEvent event) {
+ latch.countDown();
+ }
+ });
+ org.kie.kogito.process.Process<IntermediateCatchEventTimerCycleCronModel> definition = IntermediateCatchEventTimerCycleCronProcess.newProcess(app);
+ org.kie.kogito.process.ProcessInstance<IntermediateCatchEventTimerCycleCronModel> instance = definition.createInstance(definition.createModel());
+ instance.start();
+ latch.await(5, TimeUnit.SECONDS);
+ assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+ }
+
+ @Test
+ public void testIntermediateCatchSignalBetweenUserTasksModel() throws Exception {
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app, "Human Task", new SystemOutWorkItemHandler());
+ org.kie.kogito.process.Process<IntermediateCatchSignalBetweenUserTasksModel> definition = IntermediateCatchSignalBetweenUserTasksProcess.newProcess(app);
+ org.kie.kogito.process.ProcessInstance<IntermediateCatchSignalBetweenUserTasksModel> instance = definition.createInstance(definition.createModel());
+ instance.start();
+ assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+ instance.send(Sig.of("MySignal", null));
+ assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+ }
+
+ @Test
+ public void testIntermediateCatchEventTimerDurationWithError() throws Exception {
+ Application app = ProcessTestHelper.newApplication();
+
+ final CountDownLatch latch = new CountDownLatch(1);
+ ProcessTestHelper.registerProcessEventListener(app, new DefaultKogitoProcessEventListener() {
+ @Override
+ public void afterProcessCompleted(ProcessCompletedEvent event) {
+ latch.countDown();
+ }
+ });
+ org.kie.kogito.process.Process<IntermediateCatchEventTimerDurationWithErrorModel> definition = IntermediateCatchEventTimerDurationWithErrorProcess.newProcess(app);
+ IntermediateCatchEventTimerDurationWithErrorProcessInstance instance = (IntermediateCatchEventTimerDurationWithErrorProcessInstance) definition.createInstance(definition.createModel());
+ instance.start();
+ latch.await(10, TimeUnit.SECONDS);
+ assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+ assertThat(instance.variables().getTestOK()).isEqualTo(Boolean.TRUE);
- // now signal process instance
- kruntime.signalEvent("MyMessage", "SomeValue", processInstance.getStringId());
- assertProcessInstanceFinished(processInstance, kruntime);
- assertNodeTriggered(processInstance.getStringId(), "StartProcess", "UserTask", "EndProcess", "event");
- String var = getProcessVarValue(processInstance, "x");
- assertThat(var).isNotNull().isEqualTo("SOMEVALUE");
}
@Test
- @Disabled("Transfomer has been disabled")
public void testIntermediateCatchEventMessageWithTransformation() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-IntermediateCatchEventMessageWithTransformation.bpmn2");
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human Task",
- new SystemOutWorkItemHandler());
- KogitoProcessInstance processInstance = kruntime.startProcess("IntermediateCatchEvent");
- assertProcessInstanceActive(processInstance);
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app, "Human Task", new SystemOutWorkItemHandler());
+ org.kie.kogito.process.Process<IntermediateCatchEventMessageWithTransformationModel> definition = IntermediateCatchEventMessageWithTransformationProcess.newProcess(app);
+
+ org.kie.kogito.process.ProcessInstance<IntermediateCatchEventMessageWithTransformationModel> instance = definition.createInstance(definition.createModel());
+ instance.start();
+ instance.send(Sig.of("Message-HelloMessage", "SomeValue"));
+
+ assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+ assertThat(instance.variables().getX()).isNotNull().isEqualTo("SOMEVALUE");
- // now signal process instance
- kruntime.signalEvent("Message-HelloMessage", "SomeValue", processInstance.getStringId());
- assertProcessInstanceFinished(processInstance, kruntime);
- String var = getProcessVarValue(processInstance, "x");
- assertThat(var).isNotNull().isEqualTo("SOMEVALUE");
}
@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 5a127d95c4..3d2377495f 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
@@ -42,6 +42,8 @@ import org.jbpm.bpmn2.handler.ReceiveTaskHandler;
import org.jbpm.bpmn2.handler.SendTaskHandler;
import org.jbpm.bpmn2.handler.ServiceTaskHandler;
import org.jbpm.bpmn2.handler.SignallingTaskHandlerDecorator;
+import org.jbpm.bpmn2.intermediate.IntermediateThrowEventMessageModel;
+import org.jbpm.bpmn2.intermediate.IntermediateThrowEventMessageProcess;
import org.jbpm.bpmn2.objects.ExceptionService;
import org.jbpm.bpmn2.objects.Person;
import org.jbpm.bpmn2.objects.TestWorkItemHandler;
@@ -58,6 +60,7 @@ import org.kie.api.event.process.ProcessStartedEvent;
import org.kie.api.io.Resource;
import org.kie.internal.io.ResourceFactory;
import org.kie.kogito.Application;
+import org.kie.kogito.event.impl.MessageProducer;
import org.kie.kogito.internal.process.event.DefaultKogitoProcessEventListener;
import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
import org.kie.kogito.internal.process.runtime.KogitoProcessRuntime;
@@ -765,12 +768,23 @@ public class StandaloneBPMNProcessTest extends JbpmBpmn2TestCase {
@Test
public void testMessageIntermediateThrow() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-IntermediateThrowEventMessage.bpmn2");
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Send Task", new SendTaskHandler());
- Map<String, Object> params = new HashMap<>();
- params.put("x", "MyValue");
- KogitoProcessInstance processInstance = kruntime.startProcess("IntermediateThrowEventMessage", params);
- assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_COMPLETED);
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app, "Send Task", new SendTaskHandler());
+ IntermediateThrowEventMessageProcess definition = (IntermediateThrowEventMessageProcess) IntermediateThrowEventMessageProcess.newProcess(app);
+ StringBuilder builder = new StringBuilder();
+ definition.setProducer__2(new MessageProducer<String>() {
+ @Override
+ public void produce(KogitoProcessInstance pi, String eventData) {
+ builder.append(eventData);
+ }
+ });
+ IntermediateThrowEventMessageModel model = definition.createModel();
+ model.setX("MyValue");
+
+ org.kie.kogito.process.ProcessInstance<IntermediateThrowEventMessageModel> instance = definition.createInstance(model);
+ instance.start();
+ assertThat(builder.toString()).isEqualTo("MyValue");
+ assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
}
@Test
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 3785a11a6d..b85d0b41ef 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
@@ -23,6 +23,7 @@ import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.OffsetDateTime;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -31,17 +32,23 @@ import java.util.Map;
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.test.util.NodeLeftCountDownProcessEventListener;
+import org.jbpm.test.utils.ProcessTestHelper;
import org.junit.jupiter.api.Test;
import org.kie.api.KieServices;
import org.kie.api.builder.KieRepository;
import org.kie.api.event.process.ProcessStartedEvent;
import org.kie.api.io.Resource;
import org.kie.api.runtime.KieContainer;
+import org.kie.api.runtime.process.ProcessInstance;
import org.kie.internal.io.ResourceFactory;
+import org.kie.kogito.Application;
import org.kie.kogito.internal.process.event.DefaultKogitoProcessEventListener;
import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
import org.kie.kogito.internal.process.runtime.KogitoWorkItem;
+import org.kie.kogito.process.impl.Sig;
import org.kie.kogito.process.workitems.InternalKogitoWorkItem;
import static org.assertj.core.api.Assertions.assertThat;
@@ -474,22 +481,24 @@ public class StartEventTest extends JbpmBpmn2TestCase {
@Test
public void testSignalStartWithTransformation() throws Exception {
+ Application app = ProcessTestHelper.newApplication();
NodeLeftCountDownProcessEventListener countDownListener = new NodeLeftCountDownProcessEventListener("StartProcess", 1);
- kruntime = createKogitoProcessRuntime("BPMN2-SignalStartWithTransformation.bpmn2");
- kruntime.getProcessEventManager().addEventListener(countDownListener);
- final List<KogitoProcessInstance> list = new ArrayList<>();
- kruntime.getProcessEventManager().addEventListener(new DefaultKogitoProcessEventListener() {
+
+ ProcessTestHelper.registerProcessEventListener(app, countDownListener);
+ final List<ProcessInstance> list = new ArrayList<>();
+ ProcessTestHelper.registerProcessEventListener(app, new DefaultKogitoProcessEventListener() {
@Override
public void beforeProcessStarted(ProcessStartedEvent event) {
- list.add((KogitoProcessInstance) event.getProcessInstance());
+ list.add(event.getProcessInstance());
}
});
- kruntime.signalEvent("MySignal", "NewValue");
+ org.kie.kogito.process.Process<SignalStartWithTransformationModel> definition = SignalStartWithTransformationProcess.newProcess(app);
+
+ definition.send(Sig.of("MySignal", "NewValue"));
+
countDownListener.waitTillCompleted();
- assertThat(getNumberOfProcessInstances("Minimal")).isEqualTo(1);
- assertThat(list).isNotNull().hasSize(1);
- String var = getProcessVarValue(list.get(0), "x");
- assertThat(var).isEqualTo("NEWVALUE");
+ assertThat(list).extracting(e -> e.getProcessId()).containsExactly("SignalStartWithTransformation");
+ assertThat(list).extracting(e -> ((KogitoProcessInstance) e).getVariables()).containsExactly(Collections.singletonMap("x", "NEWVALUE"));
}
/**
diff --git a/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/main/java/org/jbpm/tools/maven/ProcessCodeGenerationSupport.java b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/main/java/org/jbpm/tools/maven/ProcessCodeGenerationSupport.java
index 6988db18b3..8095f68c4f 100644
--- a/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/main/java/org/jbpm/tools/maven/ProcessCodeGenerationSupport.java
+++ b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/main/java/org/jbpm/tools/maven/ProcessCodeGenerationSupport.java
@@ -37,6 +37,7 @@ import org.jbpm.compiler.canonical.ModelMetaData;
import org.jbpm.compiler.canonical.ProcessMetaData;
import org.jbpm.compiler.canonical.ProcessToExecModelGenerator;
import org.jbpm.compiler.canonical.TemplateHelper;
+import org.jbpm.compiler.canonical.TriggerMetaData;
import org.jbpm.compiler.xml.XmlProcessReader;
import org.jbpm.compiler.xml.core.SemanticModules;
import org.jbpm.ruleflow.core.RuleFlowProcess;
@@ -46,13 +47,21 @@ import org.slf4j.LoggerFactory;
import com.github.javaparser.StaticJavaParser;
import com.github.javaparser.ast.CompilationUnit;
+import com.github.javaparser.ast.Modifier.Keyword;
import com.github.javaparser.ast.Node.TreeTraversal;
import com.github.javaparser.ast.PackageDeclaration;
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
import com.github.javaparser.ast.body.ConstructorDeclaration;
+import com.github.javaparser.ast.body.FieldDeclaration;
import com.github.javaparser.ast.body.MethodDeclaration;
+import com.github.javaparser.ast.body.VariableDeclarator;
+import com.github.javaparser.ast.expr.AssignExpr;
+import com.github.javaparser.ast.expr.FieldAccessExpr;
+import com.github.javaparser.ast.expr.NameExpr;
import com.github.javaparser.ast.expr.ObjectCreationExpr;
+import com.github.javaparser.ast.expr.ThisExpr;
import com.github.javaparser.ast.expr.VariableDeclarationExpr;
+import com.github.javaparser.ast.stmt.BlockStmt;
import com.github.javaparser.ast.type.ClassOrInterfaceType;
import com.github.javaparser.printer.DefaultPrettyPrinter;
import com.github.javaparser.printer.Printer;
@@ -148,6 +157,7 @@ public class ProcessCodeGenerationSupport {
// process
CompilationUnit processUnit = metadata.getGeneratedClassModel();
+ addMembers(metadata, processUnit);
RuleFlowProcess ruleFlowProcess = (RuleFlowProcess) process;
for (String importClass : ruleFlowProcess.getImports()) {
@@ -232,4 +242,39 @@ public class ProcessCodeGenerationSupport {
LOG.debug("{} generated", modelType.getNameAsString());
Files.write(Paths.get(outputFolder.toString(), modelType.getName().asString() + ".java"), modelSource.getBytes());
}
+
+ private void addMembers(ProcessMetaData processMetaData, CompilationUnit compilationUnit) {
+ ClassOrInterfaceDeclaration cls = compilationUnit.findFirst(ClassOrInterfaceDeclaration.class).get();
+ if (!processMetaData.getTriggers().isEmpty()) {
+
+ for (TriggerMetaData trigger : processMetaData.getTriggers()) {
+ // add message produces as field
+ if (trigger.getType().equals(TriggerMetaData.TriggerType.ProduceMessage)) {
+ ClassOrInterfaceType type = StaticJavaParser.parseClassOrInterfaceType(org.kie.kogito.event.impl.MessageProducer.class.getName() + "<" + trigger.getDataType() + ">");
+ String producerFieldName = "producer_" + trigger.getOwnerId();
+ String producerFieldNameCapitalized = "Producer_" + trigger.getOwnerId();
+
+ FieldDeclaration producerFieldDeclaration = new FieldDeclaration()
+ .addVariable(new VariableDeclarator(type, producerFieldName));
+ cls.addMember(producerFieldDeclaration);
+
+ MethodDeclaration setMethod = new MethodDeclaration();
+ setMethod.addParameter(type, producerFieldName);
+ setMethod.setModifier(Keyword.PUBLIC, true);
+ setMethod.setName("set" + producerFieldNameCapitalized);
+ setMethod.setType(StaticJavaParser.parseType("void"));
+ AssignExpr assignExpr = new AssignExpr(
+ new FieldAccessExpr(new ThisExpr(), producerFieldName),
+ new NameExpr(producerFieldName),
+ AssignExpr.Operator.ASSIGN);
+
+ BlockStmt body = new BlockStmt();
+ body.addStatement(assignExpr);
+ setMethod.setBody(body);
+
+ cls.addMember(setMethod);
+ }
+ }
+ }
+ }
}
diff --git a/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-BoundarySignalEventOnTaskWithTransformation.bpmn b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-BoundarySignalEventOnTaskWithTransformation.bpmn
deleted file mode 100755
index d6eb0a8cb4..0000000000
--- a/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-BoundarySignalEventOnTaskWithTransformation.bpmn
+++ /dev/null
@@ -1,194 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you under the Apache License, Version 2.0 (the
- ~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing,
- ~ software distributed under the License is distributed on an
- ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- ~ KIND, either express or implied. See the License for the
- ~ specific language governing permissions and limitations
- ~ under the License.
- -->
-
-<definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="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:tns="http://www.jboss.org/drools" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="Definition" expressionLanguage="http://www.mvel.org/2.0" typeLanguage="http://www.java.com/javaTypes">
- <itemDefinition id="_xItem" structureRef="String" />
- <process id="BoundarySignalOnTask" tns:packageName="defaultPackage" name="BoundarySignalOnTask" isExecutable="true" processType="Private">
- <property id="x" itemSubjectRef="_xItem"/>
- <startEvent id="_1" name="StartProcess">
- <outgoing>SequenceFlow_1</outgoing>
- </startEvent>
- <scriptTask id="ScriptTask_1" name="Signal received">
- <incoming>SequenceFlow_5</incoming>
- <outgoing>SequenceFlow_4</outgoing>
- <script>System.out.println("Signal handled");</script>
- </scriptTask>
- <endEvent id="EndEvent_2" name="End2">
- <incoming>SequenceFlow_4</incoming>
- <terminateEventDefinition id="TerminateEventDefinition_1"/>
- </endEvent>
- <userTask id="UserTask_1" name="User Task">
- <incoming>SequenceFlow_1</incoming>
- <outgoing>SequenceFlow_2</outgoing>
- <ioSpecification id="_InputOutputSpecification_2">
- <dataInput id="_DataInput_2" name="TaskName"/>
- <dataInput id="_DataInput_3" name="Priority"/>
- <dataInput id="_DataInput_4" name="Comment"/>
- <dataInput id="_DataInput_5" name="GroupId"/>
- <dataInput id="_DataInput_6" name="Skippable"/>
- <dataInput id="_DataInput_7" name="Content"/>
- <inputSet id="_InputSet_2" name=" Input Set 2">
- <dataInputRefs>_DataInput_2</dataInputRefs>
- <dataInputRefs>_DataInput_3</dataInputRefs>
- <dataInputRefs>_DataInput_4</dataInputRefs>
- <dataInputRefs>_DataInput_5</dataInputRefs>
- <dataInputRefs>_DataInput_6</dataInputRefs>
- <dataInputRefs>_DataInput_7</dataInputRefs>
- </inputSet>
- <outputSet/>
- </ioSpecification>
- <dataInputAssociation id="_DataInputAssociation_2">
- <targetRef>_DataInput_2</targetRef>
- </dataInputAssociation>
- <dataInputAssociation id="_DataInputAssociation_3">
- <targetRef>_DataInput_3</targetRef>
- </dataInputAssociation>
- <dataInputAssociation id="_DataInputAssociation_4">
- <targetRef>_DataInput_4</targetRef>
- </dataInputAssociation>
- <dataInputAssociation id="_DataInputAssociation_5">
- <targetRef>_DataInput_5</targetRef>
- </dataInputAssociation>
- <dataInputAssociation id="_DataInputAssociation_6">
- <targetRef>_DataInput_6</targetRef>
- </dataInputAssociation>
- <dataInputAssociation id="_DataInputAssociation_7">
- <targetRef>_DataInput_7</targetRef>
- </dataInputAssociation>
- <potentialOwner id="PotentialOwner_1" name="john">
- <resourceAssignmentExpression id="ResourceAssignmentExpression_1">
- <formalExpression id="FormalExpression_1">john</formalExpression>
- </resourceAssignmentExpression>
- </potentialOwner>
- </userTask>
- <boundaryEvent id="BoundaryEvent_2" name="Boundary event" attachedToRef="UserTask_1" cancelActivity="false">
- <outgoing>SequenceFlow_5</outgoing>
- <dataOutput id="_4_Output" name="param" itemSubjectRef="_xItem"/>
- <dataOutputAssociation id="DataOutputAssociation_1">
- <sourceRef>_4_Output</sourceRef>
- <targetRef>x</targetRef>
- <transformation language="http://www.java.com/java">param.toUpperCase();</transformation>
- </dataOutputAssociation>
- <outputSet id="OutputSet_1">
- <dataOutputRefs>_4_Output</dataOutputRefs>
- </outputSet>
- <signalEventDefinition id="SignalEventDefinition_2" signalRef="MySignal"/>
- </boundaryEvent>
- <sequenceFlow id="SequenceFlow_1" tns:priority="1" name="" sourceRef="_1" targetRef="UserTask_1"/>
- <sequenceFlow id="SequenceFlow_2" tns:priority="1" sourceRef="UserTask_1" targetRef="UserTask_2"/>
- <sequenceFlow id="SequenceFlow_5" tns:priority="1" name="" sourceRef="BoundaryEvent_2" targetRef="ScriptTask_1"/>
- <sequenceFlow id="SequenceFlow_4" tns:priority="1" sourceRef="ScriptTask_1" targetRef="EndEvent_2"/>
- <endEvent id="EndEvent_1" name="End1">
- <incoming>SequenceFlow_3</incoming>
- <terminateEventDefinition id="TerminateEventDefinition_2"/>
- </endEvent>
- <userTask id="UserTask_2" name="User Task2">
- <incoming>SequenceFlow_2</incoming>
- <outgoing>SequenceFlow_3</outgoing>
- <ioSpecification id="_InputOutputSpecification_3">
- <dataInput id="_DataInput_8" name="TaskName"/>
- <dataInput id="_DataInput_9" name="Priority"/>
- <dataInput id="_DataInput_10" name="Comment"/>
- <dataInput id="_DataInput_11" name="GroupId"/>
- <dataInput id="_DataInput_12" name="Skippable"/>
- <dataInput id="_DataInput_13" name="Content"/>
- <inputSet id="_InputSet_3" name=" Input Set 3">
- <dataInputRefs>_DataInput_8</dataInputRefs>
- <dataInputRefs>_DataInput_9</dataInputRefs>
- <dataInputRefs>_DataInput_10</dataInputRefs>
- <dataInputRefs>_DataInput_11</dataInputRefs>
- <dataInputRefs>_DataInput_12</dataInputRefs>
- <dataInputRefs>_DataInput_13</dataInputRefs>
- </inputSet>
- <outputSet/>
- </ioSpecification>
- <dataInputAssociation id="_DataInputAssociation_8">
- <targetRef>_DataInput_8</targetRef>
- </dataInputAssociation>
- <dataInputAssociation id="_DataInputAssociation_9">
- <targetRef>_DataInput_9</targetRef>
- </dataInputAssociation>
- <dataInputAssociation id="_DataInputAssociation_10">
- <targetRef>_DataInput_10</targetRef>
- </dataInputAssociation>
- <dataInputAssociation id="_DataInputAssociation_11">
- <targetRef>_DataInput_11</targetRef>
- </dataInputAssociation>
- <dataInputAssociation id="_DataInputAssociation_12">
- <targetRef>_DataInput_12</targetRef>
- </dataInputAssociation>
- <dataInputAssociation id="_DataInputAssociation_13">
- <targetRef>_DataInput_13</targetRef>
- </dataInputAssociation>
- <potentialOwner id="PotentialOwner_2" name="john">
- <resourceAssignmentExpression id="ResourceAssignmentExpression_2">
- <formalExpression id="FormalExpression_2">john</formalExpression>
- </resourceAssignmentExpression>
- </potentialOwner>
- </userTask>
- <sequenceFlow id="SequenceFlow_3" tns:priority="1" name="" sourceRef="UserTask_2" targetRef="EndEvent_1"/>
- </process>
- <bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_Process_1" bpmnElement="BoundarySignalOnTask">
- <bpmndi:BPMNShape id="BPMNShape_StartEvent_1" bpmnElement="_1" isHorizontal="true">
- <dc:Bounds height="48.0" width="48.0" x="45.0" y="54.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_EndEvent_1" bpmnElement="EndEvent_1" isHorizontal="true">
- <dc:Bounds height="48.0" width="48.0" x="720.0" y="46.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_ScriptTask_1" bpmnElement="ScriptTask_1" isHorizontal="true">
- <dc:Bounds height="50.0" width="110.0" x="370.0" y="152.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_EndEvent_2" bpmnElement="EndEvent_2" isHorizontal="true">
- <dc:Bounds height="48.0" width="48.0" x="530.0" y="153.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_UserTask_1" bpmnElement="UserTask_1" isHorizontal="true">
- <dc:Bounds height="50.0" width="110.0" x="205.0" y="45.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_BoundaryEvent_2" bpmnElement="BoundaryEvent_2" isHorizontal="true">
- <dc:Bounds height="48.0" width="48.0" x="251.0" y="71.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_UserTask_2" bpmnElement="UserTask_2">
- <dc:Bounds height="50.0" width="110.0" x="479.0" y="45.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="BPMNShape_StartEvent_1" targetElement="BPMNShape_UserTask_1">
- <di:waypoint xsi:type="dc:Point" x="93.0" y="78.0"/>
- <di:waypoint xsi:type="dc:Point" x="205.0" y="70.0"/>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="BPMNShape_UserTask_1" targetElement="BPMNShape_UserTask_2">
- <di:waypoint xsi:type="dc:Point" x="315.0" y="70.0"/>
- <di:waypoint xsi:type="dc:Point" x="479.0" y="70.0"/>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="BPMNShape_ScriptTask_1" targetElement="BPMNShape_EndEvent_2">
- <di:waypoint xsi:type="dc:Point" x="480.0" y="177.0"/>
- <di:waypoint xsi:type="dc:Point" x="530.0" y="177.0"/>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="BPMNShape_BoundaryEvent_2" targetElement="BPMNShape_ScriptTask_1">
- <di:waypoint xsi:type="dc:Point" x="275.0" y="119.0"/>
- <di:waypoint xsi:type="dc:Point" x="274.0" y="177.0"/>
- <di:waypoint xsi:type="dc:Point" x="370.0" y="177.0"/>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="BPMNShape_UserTask_2" targetElement="BPMNShape_EndEvent_1">
- <di:waypoint xsi:type="dc:Point" x="589.0" y="70.0"/>
- <di:waypoint xsi:type="dc:Point" x="720.0" y="70.0"/>
- </bpmndi:BPMNEdge>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
-</definitions>
\ No newline at end of file
diff --git a/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-DataInputAssociations-two-assigns.bpmn2 b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-DataInputAssociations-two-assigns.bpmn2
deleted file mode 100755
index e514a8b2b2..0000000000
--- a/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-DataInputAssociations-two-assigns.bpmn2
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<definitions id="Definition"
- targetNamespace=""
- typeLanguage="http://www.java.com/javaTypes"
- expressionLanguage="http://www.mvel.org/2.0"
- xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
- xmlns:g="http://www.jboss.org/drools/flow/gpd"
- 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:tns="http://www.jboss.org/drools">
- <itemDefinition id='objectType' structureRef='org.w3c.dom.Node'/>
- <process id='process'>
- <property id='instanceMetadata' itemSubjectRef='objectType'/>
- <startEvent id='_5DF6C746-EEDF-4D39-A953-B529A0320D24' name=''/>
- <exclusiveGateway id='_81070F07-C929-4C93-8B08-18FF6D319F6A' name='' gatewayDirection='Diverging'/>
- <sequenceFlow id='_036CFFA5-945F-4597-BD74-DBFBA5553D7D' sourceRef='_5DF6C746-EEDF-4D39-A953-B529A0320D24' targetRef='_81070F07-C929-4C93-8B08-18FF6D319F6A'/>
- <userTask id='_BF09B923-BE11-4447-BECB-609BD86C59EF' name=''>
- <ioSpecification>
- <dataInput id='_BF09B923-BE11-4447-BECB-609BD86C59EF_Comment' name='Comment'/>
- <inputSet>
- <dataInputRefs>_BF09B923-BE11-4447-BECB-609BD86C59EF_Comment</dataInputRefs>
- </inputSet>
- </ioSpecification>
- <dataInputAssociation>
- <sourceRef>instanceMetadata</sourceRef>
- <targetRef>_BF09B923-BE11-4447-BECB-609BD86C59EF_Comment</targetRef>
- <assignment>
- <from>.</from>
- <to>foo</to>
- </assignment>
- <assignment>
- <from>.</from>
- <to>foo/bar</to>
- </assignment>
- </dataInputAssociation>
- </userTask>
- <sequenceFlow id='_E6BD9F03-8580-4AD8-A5CC-6D1F416E514C' sourceRef='_81070F07-C929-4C93-8B08-18FF6D319F6A' targetRef='_BF09B923-BE11-4447-BECB-609BD86C59EF'>
- <conditionExpression language='http://www.w3.org/1999/XPath'>true()</conditionExpression>
- </sequenceFlow>
- <scriptTask id='_7CA18647-714B-44D5-8DEB-544709C4221A' name=''>
- <ioSpecification>
- <inputSet/>
- <outputSet/>
- </ioSpecification>
- <script>System.out.println("Task 2");</script>
- </scriptTask>
- <sequenceFlow id='_ED6FD301-F8C0-4241-A8FF-A1F7756652B7' sourceRef='_81070F07-C929-4C93-8B08-18FF6D319F6A' targetRef='_7CA18647-714B-44D5-8DEB-544709C4221A'>
- <conditionExpression language='http://www.w3.org/1999/XPath'>count($instanceMetadata/user) = 2</conditionExpression>
- </sequenceFlow>
- <sequenceFlow id='_2BF3E89A-B28F-40E3-9A9B-A982206BF500' sourceRef='_7CA18647-714B-44D5-8DEB-544709C4221A' targetRef='_FB90F2CD-5CA2-4F85-88C0-022B03130BAE'/>
- <endEvent id='_C1D067D7-3596-45F7-9B75-69F60C3442F1' name=''/>
- <sequenceFlow id='_119E4948-40CF-4C76-9988-22C706C1AB1A' sourceRef='_FB90F2CD-5CA2-4F85-88C0-022B03130BAE' targetRef='_C1D067D7-3596-45F7-9B75-69F60C3442F1'/>
- <exclusiveGateway id='_FB90F2CD-5CA2-4F85-88C0-022B03130BAE' name='' gatewayDirection='Converging'/>
- <sequenceFlow id='_0849EEE3-09A2-4E99-A232-E1EA8B8C4121' sourceRef='_BF09B923-BE11-4447-BECB-609BD86C59EF' targetRef='_FB90F2CD-5CA2-4F85-88C0-022B03130BAE'/>
- </process>
-</definitions>
-
diff --git a/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-DataOutputAssociations-HumanTask.bpmn2 b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-DataOutputAssociations-HumanTask.bpmn2
deleted file mode 100755
index 6dbff6573d..0000000000
--- a/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-DataOutputAssociations-HumanTask.bpmn2
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<definitions id="Definition"
- targetNamespace=""
- typeLanguage="http://www.java.com/javaTypes"
- expressionLanguage="http://www.mvel.org/2.0"
- xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
- xmlns:g="http://www.jboss.org/drools/flow/gpd"
- 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:tns="http://www.jboss.org/drools">
- <itemDefinition id='objectType' structureRef='org.w3c.dom.Element'/>
- <process id='process'>
- <property id='instanceMetadata' itemSubjectRef='objectType'/>
- <startEvent id='_5DF6C746-EEDF-4D39-A953-B529A0320D24' name=''/>
- <exclusiveGateway id='_81070F07-C929-4C93-8B08-18FF6D319F6A' name='' gatewayDirection='Diverging'/>
- <sequenceFlow id='_036CFFA5-945F-4597-BD74-DBFBA5553D7D' sourceRef='_5DF6C746-EEDF-4D39-A953-B529A0320D24' targetRef='_81070F07-C929-4C93-8B08-18FF6D319F6A'/>
- <userTask id='_BF09B923-BE11-4447-BECB-609BD86C59EF' name=''>
- <ioSpecification>
- <dataOutput id='_BF09B923-BE11-4447-BECB-609BD86C59EF_PreviousOwner' name='output'/>
- <inputSet/>
- <outputSet>
- <dataOutputRefs>_BF09B923-BE11-4447-BECB-609BD86C59EF_PreviousOwner</dataOutputRefs>
- </outputSet>
- </ioSpecification>
- <dataOutputAssociation>
- <sourceRef>_BF09B923-BE11-4447-BECB-609BD86C59EF_PreviousOwner</sourceRef>
- <targetRef>instanceMetadata</targetRef>
- <assignment>
- <from>@primaryname</from>
- <to>previoustasksowner</to>
- </assignment>
- </dataOutputAssociation>
- </userTask>
- <sequenceFlow id='_E6BD9F03-8580-4AD8-A5CC-6D1F416E514C' sourceRef='_81070F07-C929-4C93-8B08-18FF6D319F6A' targetRef='_BF09B923-BE11-4447-BECB-609BD86C59EF'>
- <conditionExpression xsi:type="tFormalExpression" language='http://www.w3.org/1999/XPath'>true()</conditionExpression>
- </sequenceFlow>
- <scriptTask id='_7CA18647-714B-44D5-8DEB-544709C4221A' name=''>
- <ioSpecification>
- <inputSet/>
- <outputSet/>
- </ioSpecification>
- <script>System.out.println("Task 2");</script>
- </scriptTask>
- <sequenceFlow id='_ED6FD301-F8C0-4241-A8FF-A1F7756652B7' sourceRef='_81070F07-C929-4C93-8B08-18FF6D319F6A' targetRef='_7CA18647-714B-44D5-8DEB-544709C4221A'>
- <conditionExpression xsi:type="tFormalExpression" language='http://www.w3.org/1999/XPath'>count($instanceMetadata/user) = 2</conditionExpression>
- </sequenceFlow>
- <sequenceFlow id='_2BF3E89A-B28F-40E3-9A9B-A982206BF500' sourceRef='_7CA18647-714B-44D5-8DEB-544709C4221A' targetRef='_FB90F2CD-5CA2-4F85-88C0-022B03130BAE'/>
- <endEvent id='_C1D067D7-3596-45F7-9B75-69F60C3442F1' name=''/>
- <sequenceFlow id='_119E4948-40CF-4C76-9988-22C706C1AB1A' sourceRef='_FB90F2CD-5CA2-4F85-88C0-022B03130BAE' targetRef='_C1D067D7-3596-45F7-9B75-69F60C3442F1'/>
- <exclusiveGateway id='_FB90F2CD-5CA2-4F85-88C0-022B03130BAE' name='' gatewayDirection='Converging'/>
- <sequenceFlow id='_0849EEE3-09A2-4E99-A232-E1EA8B8C4121' sourceRef='_BF09B923-BE11-4447-BECB-609BD86C59EF' targetRef='_FB90F2CD-5CA2-4F85-88C0-022B03130BAE'/>
- </process>
-</definitions>
-
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateThrowEventMessage.bpmn2 b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-IntermediateThrowEventMessageWithTransformation.bpmn2
similarity index 91%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateThrowEventMessage.bpmn2
rename to jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-IntermediateThrowEventMessageWithTransformation.bpmn2
index 98e805c272..bc22ee935a 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-IntermediateThrowEventMessage.bpmn2
+++ b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-IntermediateThrowEventMessageWithTransformation.bpmn2
@@ -35,7 +35,7 @@
<itemDefinition id="_2_MessageType" structureRef="String" />
<message id="_2_Message" itemRef="_2_MessageType" />
- <process processType="Private" isExecutable="true" id="IntermediateThrowEventMessage" tns:packageName="org.jbpm.bpmn2.intermediate" name="Message Intermediate Throw Event Process" >
+ <process processType="Private" isExecutable="true" id="IntermediateThrowEventMessageWithTransformation" tns:packageName="org.jbpm.bpmn2.intermediate" name="Message Intermediate Throw Event Process" >
<!-- process variables -->
<property id="x" itemSubjectRef="_xItem"/>
@@ -43,10 +43,11 @@
<!-- nodes -->
<startEvent id="_1" name="StartProcess" />
<intermediateThrowEvent id="_2" name="MessageEvent" >
- <dataInput id="_2_Input" />
+ <dataInput id="_2_Input" name="param" itemSubjectRef="_xItem"/>
<dataInputAssociation>
<sourceRef>x</sourceRef>
<targetRef>_2_Input</targetRef>
+ <transformation language="http://www.java.com/java">x.toUpperCase();</transformation>
</dataInputAssociation>
<inputSet>
<dataInputRefs>_2_Input</dataInputRefs>
diff --git a/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-SubProcessWithEntryExitScripts.bpmn2 b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-SubProcessWithEntryExitScripts.bpmn2
deleted file mode 100755
index 82c335553b..0000000000
--- a/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-SubProcessWithEntryExitScripts.bpmn2
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you under the Apache License, Version 2.0 (the
- ~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing,
- ~ software distributed under the License is distributed on an
- ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- ~ KIND, either express or implied. See the License for the
- ~ specific language governing permissions and limitations
- ~ under the License.
- -->
-
-<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:tns="http://www.jboss.org/drools" xmlns="http://www.jboss.org/drools" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd http://www.jboss.org/drools drools.xsd http://www.bpsi [...]
- <bpmn2:itemDefinition id="_String" structureRef="String"/>
- <bpmn2:itemDefinition id="_Integer" structureRef="Integer"/>
- <bpmn2:process id="SubProcessWithEntryExitScripts" tns:version="1" tns:packageName="org.jbpm.bpmn2.subprocess" name="Hello World" isExecutable="true" processType="Private">
- <bpmn2:extensionElements/>
- <bpmn2:property id="var2" itemSubjectRef="_Integer"/>
- <bpmn2:property id="var3" itemSubjectRef="_Integer"/>
- <bpmn2:property id="var1" itemSubjectRef="_Integer"/>
- <bpmn2:property id="var4" itemSubjectRef="_Integer"/>
- <bpmn2:property id="var5" itemSubjectRef="_Integer"/>
- <bpmn2:scriptTask id="_2" name="Task1" scriptFormat="http://www.java.com/java">
- <bpmn2:incoming>_1-_2</bpmn2:incoming>
- <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
- <bpmn2:script>System.err.println("Task 1, var1 = 10");
-kcontext.setVariable("var1", new Integer(10));
-</bpmn2:script>
- </bpmn2:scriptTask>
- <bpmn2:startEvent id="_1" name="">
- <bpmn2:outgoing>_1-_2</bpmn2:outgoing>
- </bpmn2:startEvent>
- <bpmn2:sequenceFlow id="_1-_2" tns:priority="1" sourceRef="_1" targetRef="_2"/>
- <bpmn2:scriptTask id="ScriptTask_2" name="Task3">
- <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
- <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
- <bpmn2:script>System.err.println("Task 3, var3 = 30");
-kcontext.setVariable("var3",30);
-</bpmn2:script>
- </bpmn2:scriptTask>
- <bpmn2:sequenceFlow id="SequenceFlow_7" tns:priority="1" name="" sourceRef="ScriptTask_2" targetRef="UserTask_2"/>
- <bpmn2:endEvent id="_3" name="">
- <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
- <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1"/>
- </bpmn2:endEvent>
- <bpmn2:userTask id="UserTask_2" name="User Task 2">
- <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
- <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
- <bpmn2:ioSpecification id="_InputOutputSpecification_24">
- <bpmn2:dataInput id="_DataInput_150" name="TaskName"/>
- <bpmn2:dataInput id="_DataInput_151" name="Priority"/>
- <bpmn2:dataInput id="_DataInput_152" name="Comment"/>
- <bpmn2:dataInput id="_DataInput_153" name="GroupId"/>
- <bpmn2:dataInput id="_DataInput_154" name="Skippable"/>
- <bpmn2:dataInput id="_DataInput_155" name="Content"/>
- <bpmn2:dataInput id="_DataInput_156" name="Locale"/>
- <bpmn2:inputSet id="_InputSet_24" name="New Input Set">
- <bpmn2:dataInputRefs>_DataInput_150</bpmn2:dataInputRefs>
- <bpmn2:dataInputRefs>_DataInput_151</bpmn2:dataInputRefs>
- <bpmn2:dataInputRefs>_DataInput_152</bpmn2:dataInputRefs>
- <bpmn2:dataInputRefs>_DataInput_153</bpmn2:dataInputRefs>
- <bpmn2:dataInputRefs>_DataInput_154</bpmn2:dataInputRefs>
- <bpmn2:dataInputRefs>_DataInput_155</bpmn2:dataInputRefs>
- <bpmn2:dataInputRefs>_DataInput_156</bpmn2:dataInputRefs>
- </bpmn2:inputSet>
- <bpmn2:outputSet id="_OutputSet_21" name="Output Set"/>
- </bpmn2:ioSpecification>
- <bpmn2:dataInputAssociation id="_DataInputAssociation_150">
- <bpmn2:targetRef>_DataInput_150</bpmn2:targetRef>
- </bpmn2:dataInputAssociation>
- <bpmn2:dataInputAssociation id="_DataInputAssociation_151">
- <bpmn2:targetRef>_DataInput_151</bpmn2:targetRef>
- </bpmn2:dataInputAssociation>
- <bpmn2:dataInputAssociation id="_DataInputAssociation_152">
- <bpmn2:targetRef>_DataInput_152</bpmn2:targetRef>
- </bpmn2:dataInputAssociation>
- <bpmn2:dataInputAssociation id="_DataInputAssociation_153">
- <bpmn2:targetRef>_DataInput_153</bpmn2:targetRef>
- </bpmn2:dataInputAssociation>
- <bpmn2:dataInputAssociation id="_DataInputAssociation_154">
- <bpmn2:targetRef>_DataInput_154</bpmn2:targetRef>
- </bpmn2:dataInputAssociation>
- <bpmn2:dataInputAssociation id="_DataInputAssociation_155">
- <bpmn2:targetRef>_DataInput_155</bpmn2:targetRef>
- </bpmn2:dataInputAssociation>
- <bpmn2:dataInputAssociation id="_DataInputAssociation_156">
- <bpmn2:targetRef>_DataInput_156</bpmn2:targetRef>
- </bpmn2:dataInputAssociation>
- </bpmn2:userTask>
- <bpmn2:sequenceFlow id="SequenceFlow_8" tns:priority="1" name="" sourceRef="UserTask_2" targetRef="_3"/>
- <bpmn2:subProcess id="SubProcess_1" name="SubProcess">
- <bpmn2:extensionElements>
- <tns:onEntry-script scriptFormat="http://www.java.com/java">
- <tns:script>System.err.println("SubProcess, var4 = 40");
-kcontext.setVariable("var4",40);
-</tns:script>
- </tns:onEntry-script>
- <tns:onExit-script scriptFormat="http://www.java.com/java">
- <tns:script>System.err.println("SubProcess, var5 = 50");
-kcontext.setVariable("var5",50);
-</tns:script>
- </tns:onExit-script>
- </bpmn2:extensionElements>
- <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming>
- <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
- <bpmn2:startEvent id="StartEvent_1" name="">
- <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
- </bpmn2:startEvent>
- <bpmn2:sequenceFlow id="SequenceFlow_10" tns:priority="1" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1"/>
- <bpmn2:scriptTask id="ScriptTask_1" name="Task2" scriptFormat="http://www.java.com/java">
- <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
- <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
- <bpmn2:script>System.err.println("Task 2, var2 = 20");
-kcontext.setVariable("var2",20);
-</bpmn2:script>
- </bpmn2:scriptTask>
- <bpmn2:sequenceFlow id="SequenceFlow_9" tns:priority="1" sourceRef="ScriptTask_1" targetRef="EndEvent_1"/>
- <bpmn2:endEvent id="EndEvent_1" name="">
- <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
- </bpmn2:endEvent>
- </bpmn2:subProcess>
- <bpmn2:sequenceFlow id="SequenceFlow_11" tns:priority="1" name="" sourceRef="_2" targetRef="SubProcess_1"/>
- <bpmn2:sequenceFlow id="SequenceFlow_12" tns:priority="1" name="" sourceRef="SubProcess_1" targetRef="ScriptTask_2"/>
- </bpmn2:process>
- <bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_Process_1" bpmnElement="com.sample.bpmn.hello">
- <bpmndi:BPMNShape id="BPMNShape_SubProcess_1" bpmnElement="SubProcess_1" isExpanded="true">
- <dc:Bounds height="111.0" width="274.0" x="290.0" y="6.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_StartEvent_1" bpmnElement="_1">
- <dc:Bounds height="36.0" width="36.0" x="40.0" y="43.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_EndEvent_1" bpmnElement="_3">
- <dc:Bounds height="36.0" width="36.0" x="990.0" y="43.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_ScriptTask_1" bpmnElement="_2">
- <dc:Bounds height="48.0" width="80.0" x="120.0" y="39.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_ScriptTask_3" bpmnElement="ScriptTask_2">
- <dc:Bounds height="50.0" width="110.0" x="630.0" y="35.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_UserTask_2" bpmnElement="UserTask_2">
- <dc:Bounds height="50.0" width="110.0" x="820.0" y="35.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_EndEvent_2" bpmnElement="EndEvent_1">
- <dc:Bounds height="36.0" width="36.0" x="508.0" y="44.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
- <dc:Bounds height="36.0" width="36.0" x="310.0" y="44.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_ScriptTask_2" bpmnElement="ScriptTask_1">
- <dc:Bounds height="50.0" width="110.0" x="373.0" y="37.0"/>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="_1-_2">
- <di:waypoint xsi:type="dc:Point" x="76.0" y="61.0"/>
- <di:waypoint xsi:type="dc:Point" x="120.0" y="63.0"/>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_7" sourceElement="BPMNShape_ScriptTask_3" targetElement="BPMNShape_UserTask_2">
- <di:waypoint xsi:type="dc:Point" x="740.0" y="60.0"/>
- <di:waypoint xsi:type="dc:Point" x="820.0" y="60.0"/>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_8" sourceElement="BPMNShape_UserTask_2" targetElement="BPMNShape_EndEvent_1">
- <di:waypoint xsi:type="dc:Point" x="930.0" y="60.0"/>
- <di:waypoint xsi:type="dc:Point" x="990.0" y="61.0"/>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_9" sourceElement="BPMNShape_ScriptTask_2" targetElement="BPMNShape_EndEvent_2">
- <di:waypoint xsi:type="dc:Point" x="483.0" y="62.0"/>
- <di:waypoint xsi:type="dc:Point" x="494.0" y="62.0"/>
- <di:waypoint xsi:type="dc:Point" x="494.0" y="62.0"/>
- <di:waypoint xsi:type="dc:Point" x="508.0" y="62.0"/>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_10" sourceElement="BPMNShape_StartEvent_2" targetElement="BPMNShape_ScriptTask_2">
- <di:waypoint xsi:type="dc:Point" x="346.0" y="62.0"/>
- <di:waypoint xsi:type="dc:Point" x="358.0" y="62.0"/>
- <di:waypoint xsi:type="dc:Point" x="358.0" y="62.0"/>
- <di:waypoint xsi:type="dc:Point" x="373.0" y="62.0"/>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_11" sourceElement="BPMNShape_ScriptTask_1" targetElement="BPMNShape_SubProcess_1">
- <di:waypoint xsi:type="dc:Point" x="200.0" y="63.0"/>
- <di:waypoint xsi:type="dc:Point" x="290.0" y="61.0"/>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_12" sourceElement="BPMNShape_SubProcess_1" targetElement="BPMNShape_ScriptTask_3">
- <di:waypoint xsi:type="dc:Point" x="564.0" y="61.0"/>
- <di:waypoint xsi:type="dc:Point" x="630.0" y="60.0"/>
- </bpmndi:BPMNEdge>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
\ No newline at end of file
diff --git a/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-XpathExpression.bpmn2 b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-XpathExpression.bpmn2
deleted file mode 100755
index 93d72711cf..0000000000
--- a/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-XpathExpression.bpmn2
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you under the Apache License, Version 2.0 (the
- ~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing,
- ~ software distributed under the License is distributed on an
- ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- ~ KIND, either express or implied. See the License for the
- ~ specific language governing permissions and limitations
- ~ under the License.
- -->
-
-<definitions id="Definition"
- targetNamespace=""
- typeLanguage="http://www.java.com/javaTypes"
- expressionLanguage="http://www.mvel.org/2.0"
- xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
- xmlns:g="http://www.jboss.org/drools/flow/gpd"
- 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:tns="http://www.jboss.org/drools">
-
- <itemDefinition id="_instanceMetadataItem" structureRef="org.w3c.dom.Document" />
-
- <process processType="Private" isExecutable="true" id="XPathProcess" name="XPathProcess" tns:packageName="org.jbpm.bpmn2.activity">
-
- <!-- process variables -->
- <property id="instanceMetadata" itemSubjectRef="_instanceMetadataItem"/>
-
- <!-- nodes -->
- <startEvent id="_1" name="" />
- <exclusiveGateway id="_2" name="" gatewayDirection="Diverging" />
- <scriptTask id="_3" name="Task1" >
- <script>System.out.println("Task 1");</script>
- </scriptTask>
- <scriptTask id="_4" name="Task2" >
- <script>System.out.println("Task 2");</script>
- </scriptTask>
- <exclusiveGateway id="_5" name="" gatewayDirection="Converging" />
- <endEvent id="_6" name="" />
-
- <!-- connections -->
- <sequenceFlow id="_1-_2" sourceRef="_1" targetRef="_2" />
- <sequenceFlow id="_2-_3" sourceRef="_2" targetRef="_3" >
- <conditionExpression xsi:type="tFormalExpression" language="http://www.w3.org/1999/XPath" >count($instanceMetadata/instanceMetadata/user[@approved='true']) = 1</conditionExpression>
- </sequenceFlow>
- <sequenceFlow id="_2-_4" sourceRef="_2" targetRef="_4" >
- <conditionExpression xsi:type="tFormalExpression" language="http://www.w3.org/1999/XPath" >count($instanceMetadata/instanceMetadata/user[@approved='false']) = 1</conditionExpression>
- </sequenceFlow>
- <sequenceFlow id="_3-_5" sourceRef="_3" targetRef="_5" />
- <sequenceFlow id="_4-_5" sourceRef="_4" targetRef="_5" />
- <sequenceFlow id="_5-_6" sourceRef="_5" targetRef="_6" />
-
- </process>
-
- <bpmndi:BPMNDiagram>
- <bpmndi:BPMNPlane bpmnElement="XPathProcess" >
- <bpmndi:BPMNShape bpmnElement="_1" >
- <dc:Bounds x="16" y="56" width="48" height="48" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape bpmnElement="_2" >
- <dc:Bounds x="96" y="56" width="48" height="48" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape bpmnElement="_3" >
- <dc:Bounds x="176" y="16" width="80" height="48" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape bpmnElement="_4" >
- <dc:Bounds x="176" y="96" width="80" height="48" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape bpmnElement="_5" >
- <dc:Bounds x="288" y="56" width="48" height="48" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape bpmnElement="_6" >
- <dc:Bounds x="368" y="56" width="48" height="48" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge bpmnElement="_1-_2" >
- <di:waypoint x="40" y="80" />
- <di:waypoint x="120" y="80" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge bpmnElement="_2-_3" >
- <di:waypoint x="120" y="80" />
- <di:waypoint x="216" y="40" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge bpmnElement="_2-_4" >
- <di:waypoint x="120" y="80" />
- <di:waypoint x="216" y="120" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge bpmnElement="_3-_5" >
- <di:waypoint x="216" y="40" />
- <di:waypoint x="312" y="80" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge bpmnElement="_4-_5" >
- <di:waypoint x="216" y="120" />
- <di:waypoint x="312" y="80" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge bpmnElement="_5-_6" >
- <di:waypoint x="312" y="80" />
- <di:waypoint x="392" y="80" />
- </bpmndi:BPMNEdge>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
-
-</definitions>
\ No newline at end of file
diff --git a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/NodeFactoryUtils.java b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/NodeFactoryUtils.java
index 18590dc51e..ab2b73b91c 100644
--- a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/NodeFactoryUtils.java
+++ b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/parser/handlers/NodeFactoryUtils.java
@@ -78,10 +78,11 @@ public class NodeFactoryUtils {
return actionNode
.name(name)
.metaData(Metadata.EVENT_TYPE, "message")
- .metaData(Metadata.MAPPING_VARIABLE, inputVar)
+ .metaData(Metadata.MAPPING_VARIABLE_INPUT, inputVar)
.metaData(Metadata.TRIGGER_REF, type)
.metaData(Metadata.MESSAGE_TYPE, JSON_NODE)
- .metaData(Metadata.TRIGGER_TYPE, "ProduceMessage");
+ .metaData(Metadata.TRIGGER_TYPE, "ProduceMessage")
+ .inMapping(inputVar, inputVar);
}
public static <T extends StartNodeFactory<P>, P extends RuleFlowNodeContainerFactory<P, ?>> T startMessageNode(T nodeFactory, EventDefinition eventDefinition, String inputVar, String outputVar) {
diff --git a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/suppliers/ProduceEventActionSupplier.java b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/suppliers/ProduceEventActionSupplier.java
index 7100199787..e53e57f69c 100644
--- a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/suppliers/ProduceEventActionSupplier.java
+++ b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/main/java/org/kie/kogito/serverless/workflow/suppliers/ProduceEventActionSupplier.java
@@ -38,6 +38,7 @@ import com.github.javaparser.ast.expr.StringLiteralExpr;
import io.serverlessworkflow.api.Workflow;
import static com.github.javaparser.StaticJavaParser.parseClassOrInterfaceType;
+import static org.jbpm.ruleflow.core.Metadata.MAPPING_VARIABLE_INPUT;
public class ProduceEventActionSupplier extends SWFProduceEventAction implements ExpressionSupplier {
@@ -49,7 +50,8 @@ public class ProduceEventActionSupplier extends SWFProduceEventAction implements
@Override
public Expression get(KogitoNode node, ProcessMetaData metadata) {
- return AbstractNodeVisitor.buildProducerAction(parseClassOrInterfaceType(SWFProduceEventAction.class.getCanonicalName()), TriggerMetaData.of(node), metadata)
+ return AbstractNodeVisitor.buildProducerAction(parseClassOrInterfaceType(SWFProduceEventAction.class.getCanonicalName()), TriggerMetaData.of(node, (String) node.getMetaData()
+ .get(MAPPING_VARIABLE_INPUT)), metadata)
.addArgument(new StringLiteralExpr(exprLang))
.addArgument(data != null ? new StringLiteralExpr().setString(data) : new NullLiteralExpr());
}
diff --git a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/test/java/org/kie/kogito/serverless/workflow/ServerlessWorkflowParsingTest.java b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/test/java/org/kie/kogito/serverless/workflow/ServerlessWorkflowParsingTest.java
index f0f5a11337..e140cb54b8 100644
--- a/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/test/java/org/kie/kogito/serverless/workflow/ServerlessWorkflowParsingTest.java
+++ b/kogito-serverless-workflow/kogito-serverless-workflow-builder/src/test/java/org/kie/kogito/serverless/workflow/ServerlessWorkflowParsingTest.java
@@ -425,7 +425,7 @@ public class ServerlessWorkflowParsingTest extends AbstractServerlessWorkflowPar
ActionNode actionNode = (ActionNode) process.getNodes()[4];
assertThat(actionNode.getName()).isEqualTo("TestKafkaEvent");
assertThat(actionNode.getMetaData("TriggerType")).isEqualTo("ProduceMessage");
- assertThat(actionNode.getMetaData("MappingVariable")).isEqualTo("workflowdata");
+ assertThat(actionNode.getMetaData("MappingVariableInput")).isEqualTo("workflowdata");
assertThat(actionNode.getMetaData("TriggerRef")).isEqualTo("kafka");
assertThat(actionNode.getMetaData("MessageType")).isEqualTo("com.fasterxml.jackson.databind.JsonNode");
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org