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 dfc2c1c91d [incubator-kie-issues-1279] Support for start / general 
escalations (#3539)
dfc2c1c91d is described below

commit dfc2c1c91d6d6aadff4c31755872f1d7136b3597
Author: Enrique <[email protected]>
AuthorDate: Wed Jun 19 10:46:25 2024 +0200

    [incubator-kie-issues-1279] Support for start / general escalations (#3539)
---
 .../org/jbpm/bpmn2/xml/BoundaryEventHandler.java   |  18 +-
 .../java/org/jbpm/bpmn2/xml/EndEventHandler.java   |   3 +
 .../bpmn2/xml/IntermediateThrowEventHandler.java   |   2 +-
 .../java/org/jbpm/bpmn2/xml/ProcessHandler.java    |  15 +-
 .../java/org/jbpm/bpmn2/xml/StartEventHandler.java |  25 +-
 .../compiler/canonical/AbstractNodeVisitor.java    |  12 +-
 .../jbpm/compiler/canonical/ActionNodeVisitor.java |  40 +-
 .../jbpm/compiler/canonical/EndNodeVisitor.java    |   2 +-
 .../jbpm/compiler/canonical/ProcessVisitor.java    |   8 +-
 .../jbpm/compiler/canonical/StartNodeVisitor.java  | 112 +++---
 .../impl/actions/HandleEscalationAction.java       |  15 +-
 .../main/java/org/jbpm/ruleflow/core/Metadata.java |   4 +-
 .../org/jbpm/workflow/core/node/StartNode.java     |   5 +
 .../BPMN2-EscalationBoundaryEventWithTask.bpmn2    |  14 +-
 .../BPMN2-EventSubprocessEscalation.bpmn2          |   2 +-
 .../bpmn2/escalation/BPMN2-Multiescalation.bpmn2   | 414 +++++++++++++++++++++
 .../escalation/BPMN2-TopLevelEscalation.bpmn2      | 152 ++++++++
 .../java/org/jbpm/bpmn2/EscalationEventTest.java   | 120 ++++--
 .../java/org/jbpm/bpmn2/IntermediateEventTest.java |  25 +-
 .../org/jbpm/test/utils/ProcessTestHelper.java     |   6 +
 .../BPMN2-EventSubprocessErrorSignalEmbedded.bpmn2 | 342 +++++++++++++++++
 ...ediateThrowEventMessageWithTransformation.bpmn2 |  87 -----
 22 files changed, 1188 insertions(+), 235 deletions(-)

diff --git 
a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/BoundaryEventHandler.java 
b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/BoundaryEventHandler.java
index d3ef36e0de..1e338e8896 100755
--- a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/BoundaryEventHandler.java
+++ b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/BoundaryEventHandler.java
@@ -141,6 +141,7 @@ public class BoundaryEventHandler extends 
AbstractNodeHandler {
         while (xmlNode != null) {
             String nodeName = xmlNode.getNodeName();
             if ("escalationEventDefinition".equals(nodeName)) {
+                String type = null;
                 String escalationRef = ((Element) 
xmlNode).getAttribute("escalationRef");
                 if (escalationRef != null && escalationRef.trim().length() > 
0) {
                     Map<String, Escalation> escalations = (Map<String, 
Escalation>) ((ProcessBuildData) 
parser.getData()).getMetaData(ProcessHandler.ESCALATIONS);
@@ -151,16 +152,15 @@ public class BoundaryEventHandler extends 
AbstractNodeHandler {
                     if (escalation == null) {
                         throw new ProcessParsingValidationException("Could not 
find escalation " + escalationRef);
                     }
-                    List<EventFilter> eventFilters = new ArrayList<>();
-                    EventTypeFilter eventFilter = new EventTypeFilter();
-                    String type = escalation.getEscalationCode();
-                    eventFilter.setType("Escalation-" + attachedTo + "-" + 
type);
-                    eventFilters.add(eventFilter);
-                    eventNode.setEventFilters(eventFilters);
-                    eventNode.setMetaData("EscalationEvent", type);
-                } else {
-                    throw new UnsupportedOperationException("General 
escalation is not yet supported.");
+                    type = escalation.getEscalationCode();
                 }
+                List<EventFilter> eventFilters = new ArrayList<>();
+                EventTypeFilter eventFilter = new EventTypeFilter();
+
+                eventFilter.setType("Escalation-" + attachedTo + (type != null 
? "-" + type : ""));
+                eventFilters.add(eventFilter);
+                eventNode.setEventFilters(eventFilters);
+                eventNode.setMetaData("EscalationEvent", type);
             }
             xmlNode = xmlNode.getNextSibling();
         }
diff --git 
a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/EndEventHandler.java 
b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/EndEventHandler.java
index 2043d99ca5..db3395a9a7 100755
--- a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/EndEventHandler.java
+++ b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/EndEventHandler.java
@@ -89,6 +89,7 @@ public class EndEventHandler extends AbstractNodeHandler {
                 handleMessageNode(node, element, uri, localName, parser);
             } else if ("errorEventDefinition".equals(nodeName)) {
                 FaultNode faultNode = new FaultNode();
+                faultNode.setMetaData(node.getMetaData());
                 faultNode.setId(node.getId());
                 faultNode.setName(node.getName());
                 faultNode.setTerminateParent(true);
@@ -100,6 +101,7 @@ public class EndEventHandler extends AbstractNodeHandler {
                 break;
             } else if ("escalationEventDefinition".equals(nodeName)) {
                 FaultNode faultNode = new FaultNode();
+                faultNode.setMetaData(node.getMetaData());
                 faultNode.setId(node.getId());
                 faultNode.setName(node.getName());
                 node = faultNode;
@@ -258,6 +260,7 @@ public class EndEventHandler extends AbstractNodeHandler {
                         throw new ProcessParsingValidationException("Could not 
find escalation " + escalationRef);
                     }
                     faultNode.setFaultName(escalation.getEscalationCode());
+                    faultNode.setMetaData("FaultCode", 
escalation.getEscalationCode());
                 } else {
                     // BPMN2 spec, p. 83: end event's with 
<escalationEventDefintions>
                     // are _required_ to reference a specific 
escalation(-code).
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 5086c71990..689215bd42 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
@@ -309,7 +309,7 @@ public class IntermediateThrowEventHandler extends 
AbstractNodeHandler {
                     DroolsConsequenceAction action = createJavaAction(new 
HandleEscalationAction(faultName, variable));
                     actionNode.setAction(action);
                 } else {
-                    throw new ProcessParsingValidationException("General 
escalation is not yet supported");
+                    throw new ProcessParsingValidationException("Invalid throw 
escalation. escalation code is required");
                 }
             }
             xmlNode = xmlNode.getNextSibling();
diff --git 
a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/ProcessHandler.java 
b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/ProcessHandler.java
index e9c8b060e5..210a59d223 100755
--- a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/ProcessHandler.java
+++ b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/ProcessHandler.java
@@ -480,8 +480,9 @@ public class ProcessHandler extends BaseAbstractHandler 
implements Handler {
 
         String variable = ((EventNode) node).getVariableName();
         ActionExceptionHandler exceptionHandler = new ActionExceptionHandler();
+        String signalName = "Escalation-" + attachedTo + (escalationCode != 
null ? "-" + escalationCode : "");
         DroolsConsequenceAction action =
-                createJavaAction(new SignalProcessInstanceAction("Escalation-" 
+ attachedTo + "-" + escalationCode, variable, null, 
SignalProcessInstanceAction.PROCESS_INSTANCE_SCOPE));
+                createJavaAction(new SignalProcessInstanceAction(signalName, 
variable, null, SignalProcessInstanceAction.PROCESS_INSTANCE_SCOPE));
         exceptionHandler.setAction(action);
         exceptionHandler.setFaultVariable(variable);
         exceptionScope.setExceptionHandler(escalationCode, exceptionHandler);
@@ -873,8 +874,7 @@ public class ProcessHandler extends BaseAbstractHandler 
implements Handler {
 
                                         String type = ((EventTypeFilter) 
filter).getType();
                                         if (type.startsWith("Error-") || 
type.startsWith("Escalation")) {
-                                            String faultCode = (String) 
subNode.getMetaData().get("FaultCode");
-                                            String replaceRegExp = 
"Error-|Escalation-";
+                                            String faultCode = (String) 
subNode.getMetaData().get(Metadata.FAULT_CODE);
                                             final String signalType = type;
 
                                             ExceptionScope exceptionScope =
@@ -894,13 +894,8 @@ public class ProcessHandler extends BaseAbstractHandler 
implements Handler {
                                             action.setMetaData("Action", new 
SignalProcessInstanceAction(signalType, faultVariable, null, 
SignalProcessInstanceAction.PROCESS_INSTANCE_SCOPE));
                                             exceptionHandler.setAction(action);
                                             
exceptionHandler.setFaultVariable(faultVariable);
-                                            if (faultCode != null) {
-                                                String trimmedType = 
type.replaceFirst(replaceRegExp, "");
-                                                
exceptionScope.setExceptionHandler(trimmedType, exceptionHandler);
-                                                
eventSubProcessHandlers.add(trimmedType);
-                                            } else {
-                                                
exceptionScope.setExceptionHandler(faultCode, exceptionHandler);
-                                            }
+                                            
eventSubProcessHandlers.add(faultCode);
+                                            
exceptionScope.setExceptionHandler(faultCode, exceptionHandler);
                                         } else if 
(type.equals("Compensation")) {
                                             // 1. Find the parent sub-process 
to this event sub-process
                                             NodeContainer parentSubProcess = 
null;
diff --git 
a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/StartEventHandler.java 
b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/StartEventHandler.java
index b6b276cb92..4382928954 100755
--- a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/StartEventHandler.java
+++ b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/StartEventHandler.java
@@ -48,7 +48,15 @@ import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
 
 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_CONDITIONAL;
+import static org.jbpm.ruleflow.core.Metadata.EVENT_TYPE_ERROR;
+import static org.jbpm.ruleflow.core.Metadata.EVENT_TYPE_ESCALATION;
 import static org.jbpm.ruleflow.core.Metadata.EVENT_TYPE_MESSAGE;
+import static org.jbpm.ruleflow.core.Metadata.EVENT_TYPE_NONE;
+import static org.jbpm.ruleflow.core.Metadata.EVENT_TYPE_SIGNAL;
+import static org.jbpm.ruleflow.core.Metadata.EVENT_TYPE_TIMER;
+import static org.jbpm.ruleflow.core.Metadata.FAULT_CODE;
 import static org.jbpm.ruleflow.core.Metadata.MAPPING_VARIABLE;
 import static org.jbpm.ruleflow.core.Metadata.MESSAGE_REF;
 import static org.jbpm.ruleflow.core.Metadata.MESSAGE_TYPE;
@@ -89,7 +97,7 @@ public class StartEventHandler extends AbstractNodeHandler {
         
findSourceMappingVar(startNode.getIoSpecification().getDataOutputAssociation()).ifPresent(data
 -> {
             startNode.getMetaData().put(TRIGGER_MAPPING_INPUT, 
data.getLabel());
         });
-
+        startNode.setMetaData(EVENT_TYPE, EVENT_TYPE_NONE);
         org.w3c.dom.Node xmlNode = element.getFirstChild();
         while (xmlNode != null) {
             String nodeName = xmlNode.getNodeName();
@@ -106,6 +114,7 @@ public class StartEventHandler extends AbstractNodeHandler {
                 }
                 ConstraintTrigger trigger = new ConstraintTrigger();
                 trigger.setConstraint(constraint);
+                startNode.setMetaData(EVENT_TYPE, EVENT_TYPE_CONDITIONAL);
                 startNode.addTrigger(trigger);
                 break;
             } else if ("signalEventDefinition".equals(nodeName)) {
@@ -116,6 +125,7 @@ public class StartEventHandler extends AbstractNodeHandler {
                 if (type != null && type.trim().length() > 0) {
                     addTriggerWithInMappings(startNode, type);
                 }
+                startNode.setMetaData(EVENT_TYPE, EVENT_TYPE_SIGNAL);
                 startNode.setMetaData(MESSAGE_TYPE, type);
                 startNode.setMetaData(TRIGGER_TYPE, 
TriggerMetaData.TriggerType.Signal.name());
                 Signal signal = findSignalByName(parser, type);
@@ -143,6 +153,7 @@ public class StartEventHandler extends AbstractNodeHandler {
 
                 addTriggerWithInMappings(startNode, "Message-" + 
message.getName(), message.getId(), ((RuleFlowProcess) 
parser.getMetaData().get("CurrentProcessDefinition")).getCorrelationManager());
             } else if ("timerEventDefinition".equals(nodeName)) {
+                startNode.setMetaData(EVENT_TYPE, EVENT_TYPE_TIMER);
                 handleTimerNode(startNode, element, uri, localName, parser);
                 // following event definitions are only for event sub process 
and will be validated to not be included in top process definitions
             } else if ("errorEventDefinition".equals(nodeName)) {
@@ -150,7 +161,7 @@ public class StartEventHandler extends AbstractNodeHandler {
                 //   - a <startEvent> in an Event Sub-Process
                 //    - *without* the 'isInterupting' attribute always 
interrupts (containing process)
                 startNode.setInterrupting(true);
-
+                startNode.setMetaData(EVENT_TYPE, EVENT_TYPE_ERROR);
                 String errorRef = ((Element) xmlNode).getAttribute("errorRef");
                 if (errorRef != null && errorRef.trim().length() > 0) {
                     List<Error> errors = (List<Error>) ((ProcessBuildData) 
parser.getData()).getMetaData("Errors");
@@ -166,7 +177,7 @@ public class StartEventHandler extends AbstractNodeHandler {
                     if (error == null) {
                         throw new ProcessParsingValidationException("Could not 
find error " + errorRef);
                     }
-                    startNode.setMetaData("FaultCode", error.getErrorCode());
+                    startNode.setMetaData(FAULT_CODE, error.getErrorCode());
                     startNode.setMetaData(MESSAGE_TYPE, error.getErrorCode());
                     startNode.setMetaData(TRIGGER_REF, error.getErrorCode());
                     startNode.setMetaData(TRIGGER_TYPE, 
TriggerMetaData.TriggerType.Signal.name());
@@ -174,6 +185,7 @@ public class StartEventHandler extends AbstractNodeHandler {
                     addTriggerWithInMappings(startNode, "Error-" + 
error.getErrorCode());
                 }
             } else if ("escalationEventDefinition".equals(nodeName)) {
+                startNode.setMetaData(EVENT_TYPE, EVENT_TYPE_ESCALATION);
                 String escalationRef = ((Element) 
xmlNode).getAttribute("escalationRef");
                 if (escalationRef != null && escalationRef.trim().length() > 
0) {
                     Map<String, Escalation> escalations = (Map<String, 
Escalation>) ((ProcessBuildData) 
parser.getData()).getMetaData(ProcessHandler.ESCALATIONS);
@@ -184,10 +196,15 @@ public class StartEventHandler extends 
AbstractNodeHandler {
                     if (escalation == null) {
                         throw new ProcessParsingValidationException("Could not 
find escalation " + escalationRef);
                     }
-
+                    startNode.setMetaData(FAULT_CODE, 
escalation.getEscalationCode());
+                    startNode.setMetaData(TRIGGER_REF, "Escalation-" + 
escalation.getEscalationCode());
                     addTriggerWithInMappings(startNode, "Escalation-" + 
escalation.getEscalationCode());
+                } else {
+                    startNode.setMetaData(TRIGGER_REF, "Escalation-");
+                    addTriggerWithInMappings(startNode, "Escalation-");
                 }
             } else if ("compensateEventDefinition".equals(nodeName)) {
+                startNode.setMetaData(EVENT_TYPE, EVENT_TYPE_COMPENSATION);
                 handleCompensationNode(startNode, xmlNode);
             }
             xmlNode = xmlNode.getNextSibling();
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 b548f30477..1b21e056e7 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
@@ -33,6 +33,7 @@ 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.HandleEscalationAction;
 import org.jbpm.process.instance.impl.actions.ProduceEventAction;
 import org.jbpm.process.instance.impl.actions.SignalProcessInstanceAction;
 import org.jbpm.ruleflow.core.Metadata;
@@ -371,7 +372,7 @@ public abstract class AbstractNodeVisitor<T extends Node> 
extends AbstractVisito
                 conditionBody);
     }
 
-    public static ObjectCreationExpr buildAction(String signalName, String 
variable, String inputVariable, String scope) {
+    public static ObjectCreationExpr buildSignalAction(String signalName, 
String variable, String inputVariable, String scope) {
         return new ObjectCreationExpr(null,
                 
parseClassOrInterfaceType(SignalProcessInstanceAction.class.getCanonicalName()),
                 new NodeList<>(new StringLiteralExpr(signalName), variable != 
null ? new StringLiteralExpr(variable.replace("\"", "\\\""))
@@ -383,6 +384,15 @@ public abstract class AbstractNodeVisitor<T extends Node> 
extends AbstractVisito
                                         
parseClassOrInterfaceType(String.class.getCanonicalName()), new 
NullLiteralExpr())));
     }
 
+    public static ObjectCreationExpr buildEscalationAction(String faultName, 
String inputVariable) {
+        return new ObjectCreationExpr(null,
+                
parseClassOrInterfaceType(HandleEscalationAction.class.getCanonicalName()),
+                new NodeList<>(
+                        faultName != null ? new StringLiteralExpr(faultName) : 
new NullLiteralExpr(),
+                        inputVariable != null ? new 
StringLiteralExpr(inputVariable) : new NullLiteralExpr()));
+
+    }
+
     public static LambdaExpr buildCompensationLambdaExpr(String 
compensationRef) {
         BlockStmt actionBody = new BlockStmt();
         MethodCallExpr getProcessInstance = new MethodCallExpr(new 
NameExpr(KCONTEXT_VAR), "getProcessInstance");
diff --git 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ActionNodeVisitor.java
 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ActionNodeVisitor.java
index 86ae851d3d..415f67b873 100644
--- 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ActionNodeVisitor.java
+++ 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ActionNodeVisitor.java
@@ -24,6 +24,7 @@ import java.util.Optional;
 import org.jbpm.process.core.context.exception.CompensationScope;
 import org.jbpm.process.core.context.variable.Variable;
 import org.jbpm.process.core.context.variable.VariableScope;
+import org.jbpm.process.instance.impl.actions.HandleEscalationAction;
 import 
org.jbpm.process.instance.impl.actions.ProcessInstanceCompensationAction;
 import org.jbpm.ruleflow.core.Metadata;
 import org.jbpm.ruleflow.core.factory.ActionNodeFactory;
@@ -79,27 +80,34 @@ public class ActionNodeVisitor extends 
AbstractNodeVisitor<ActionNode> {
         } else if (node.getMetaData(TRIGGER_REF) != null) { // if there is 
trigger defined on end event create TriggerMetaData for it
             body.addStatement(getFactoryMethod(getNodeId(node), METHOD_ACTION, 
buildProducerAction(node, metadata)));
         } else if (node.getMetaData(REF) != null && 
EVENT_TYPE_SIGNAL.equals(node.getMetaData(EVENT_TYPE))) {
-            body.addStatement(getFactoryMethod(getNodeId(node), METHOD_ACTION, 
buildAction((String) node.getMetaData(REF),
+            body.addStatement(getFactoryMethod(getNodeId(node), METHOD_ACTION, 
buildSignalAction((String) node.getMetaData(REF),
                     (String) node.getMetaData(VARIABLE), (String) 
node.getMetaData(MAPPING_VARIABLE_INPUT), (String) 
node.getMetaData(CUSTOM_SCOPE))));
         } else if (node.getAction() instanceof DroolsConsequenceAction) {
-            BlockStmt actionBody = new BlockStmt();
-            String consequence = getActionConsequence(node.getAction());
-            if (consequence == null || consequence.trim().isEmpty()) {
-                LOGGER.warn("Action node {} name {} has no action defined!", 
node.getId().toExternalFormat(), node.getName());
+            DroolsConsequenceAction droolsConsequenceAction = 
(DroolsConsequenceAction) node.getAction();
+            if (droolsConsequenceAction.getMetaData("Action") instanceof 
HandleEscalationAction) {
+                HandleEscalationAction action = (HandleEscalationAction) 
droolsConsequenceAction.getMetaData("Action");
+                body.addStatement(getFactoryMethod(getNodeId(node), 
METHOD_ACTION, buildEscalationAction(action.getFaultName(), 
action.getVariableName())));
             } else {
-                List<Variable> variables = variableScope.getVariables();
-                variables.stream()
-                        .filter(v -> consequence.contains(v.getName()))
-                        .map(ActionNodeVisitor::makeAssignment)
-                        .forEach(actionBody::addStatement);
+                BlockStmt actionBody = new BlockStmt();
+                String consequence = getActionConsequence(node.getAction());
+                if (consequence == null || consequence.trim().isEmpty()) {
+                    LOGGER.warn("Action node {} name {} has no action 
defined!", node.getId().toExternalFormat(), node.getName());
+                } else {
+                    List<Variable> variables = variableScope.getVariables();
+                    variables.stream()
+                            .filter(v -> consequence.contains(v.getName()))
+                            .map(ActionNodeVisitor::makeAssignment)
+                            .forEach(actionBody::addStatement);
 
-                BlockStmt blockStmt = StaticJavaParser.parseBlock("{" + 
consequence + "}");
-                blockStmt.getStatements().forEach(actionBody::addStatement);
+                    BlockStmt blockStmt = StaticJavaParser.parseBlock("{" + 
consequence + "}");
+                    
blockStmt.getStatements().forEach(actionBody::addStatement);
+                }
+                LambdaExpr lambda = new LambdaExpr(
+                        new Parameter(new UnknownType(), KCONTEXT_VAR), // 
(kcontext) ->
+                        actionBody);
+                body.addStatement(getFactoryMethod(getNodeId(node), 
METHOD_ACTION, lambda));
             }
-            LambdaExpr lambda = new LambdaExpr(
-                    new Parameter(new UnknownType(), KCONTEXT_VAR), // 
(kcontext) ->
-                    actionBody);
-            body.addStatement(getFactoryMethod(getNodeId(node), METHOD_ACTION, 
lambda));
+
         }
         addNodeMappings(node, body, getNodeId(node));
         body.addStatement(getDoneMethod(getNodeId(node)));
diff --git 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EndNodeVisitor.java
 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EndNodeVisitor.java
index a875f862ef..23f4edffed 100644
--- 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EndNodeVisitor.java
+++ 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/EndNodeVisitor.java
@@ -75,7 +75,7 @@ public class EndNodeVisitor extends 
AbstractNodeVisitor<EndNode> {
         } else if (node.getMetaData(TRIGGER_REF) != null) {
             body.addStatement(getFactoryMethod(getNodeId(node), METHOD_ACTION, 
buildProducerAction(node, metadata)));
         } else if (node.getMetaData(REF) != null && 
EVENT_TYPE_SIGNAL.equals(node.getMetaData(EVENT_TYPE))) {
-            body.addStatement(getFactoryMethod(getNodeId(node), METHOD_ACTION, 
buildAction((String) node.getMetaData(REF),
+            body.addStatement(getFactoryMethod(getNodeId(node), METHOD_ACTION, 
buildSignalAction((String) node.getMetaData(REF),
                     (String) node.getMetaData(VARIABLE), (String) 
node.getMetaData(MAPPING_VARIABLE_INPUT), (String) 
node.getMetaData(CUSTOM_SCOPE))));
         }
         addNodeMappings(node, body, getNodeId(node));
diff --git 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ProcessVisitor.java
 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ProcessVisitor.java
index 30316ea729..ee0ac4e086 100644
--- 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ProcessVisitor.java
+++ 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ProcessVisitor.java
@@ -304,14 +304,12 @@ public class ProcessVisitor extends AbstractVisitor {
                 String faultCode = e.getKey();
                 ActionExceptionHandler handler = (ActionExceptionHandler) 
e.getValue();
                 Optional<String> faultVariable = 
Optional.ofNullable(handler.getFaultVariable());
-                SignalProcessInstanceAction action =
-                        (SignalProcessInstanceAction) 
handler.getAction().getMetaData("Action");
+                SignalProcessInstanceAction action = 
(SignalProcessInstanceAction) handler.getAction().getMetaData("Action");
                 String signalName = action.getSignalName();
                 
body.addStatement(getFactoryMethod(getFieldName(context.getContextContainer()), 
METHOD_ERROR_EXCEPTION_HANDLER,
                         new StringLiteralExpr(signalName),
-                        new StringLiteralExpr(faultCode),
-                        faultVariable.<Expression> map(StringLiteralExpr::new)
-                                .orElse(new NullLiteralExpr())));
+                        faultCode != null ? new StringLiteralExpr(faultCode) : 
new NullLiteralExpr(),
+                        faultVariable.<Expression> 
map(StringLiteralExpr::new).orElse(new NullLiteralExpr())));
             });
         }
     }
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 8be94913cf..5bb88d149c 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
@@ -19,10 +19,12 @@
 package org.jbpm.compiler.canonical;
 
 import java.util.Map;
+import java.util.Optional;
 
 import org.jbpm.process.core.context.variable.Variable;
 import org.jbpm.process.core.context.variable.VariableScope;
 import org.jbpm.process.core.timer.Timer;
+import org.jbpm.ruleflow.core.Metadata;
 import org.jbpm.ruleflow.core.factory.StartNodeFactory;
 import org.jbpm.workflow.core.node.StartNode;
 
@@ -31,11 +33,10 @@ import com.github.javaparser.ast.expr.IntegerLiteralExpr;
 import com.github.javaparser.ast.expr.StringLiteralExpr;
 import com.github.javaparser.ast.stmt.BlockStmt;
 
-import static org.jbpm.ruleflow.core.Metadata.EVENT_TYPE_SIGNAL;
+import static org.jbpm.ruleflow.core.Metadata.EVENT_TYPE;
 import static org.jbpm.ruleflow.core.Metadata.MESSAGE_TYPE;
 import static org.jbpm.ruleflow.core.Metadata.TRIGGER_MAPPING;
 import static org.jbpm.ruleflow.core.Metadata.TRIGGER_REF;
-import static org.jbpm.ruleflow.core.Metadata.TRIGGER_TYPE;
 import static 
org.jbpm.ruleflow.core.factory.StartNodeFactory.METHOD_INTERRUPTING;
 import static org.jbpm.ruleflow.core.factory.StartNodeFactory.METHOD_TIMER;
 import static org.jbpm.ruleflow.core.factory.StartNodeFactory.METHOD_TRIGGER;
@@ -48,65 +49,78 @@ public class StartNodeVisitor extends 
AbstractNodeVisitor<StartNode> {
     }
 
     @Override
-    public void visitNode(String factoryField, StartNode node, BlockStmt body, 
VariableScope variableScope, ProcessMetaData metadata) {
-        body.addStatement(getAssignedFactoryMethod(factoryField, 
StartNodeFactory.class, getNodeId(node), getNodeKey(), 
getWorkflowElementConstructor(node.getId())))
-                .addStatement(getNameMethod(node, "Start"))
-                .addStatement(getFactoryMethod(getNodeId(node), 
METHOD_INTERRUPTING, new BooleanLiteralExpr(node.isInterrupting())));
-
-        addNodeMappings(node, body, getNodeId(node));
-        visitMetaData(node.getMetaData(), body, getNodeId(node));
-        body.addStatement(getDoneMethod(getNodeId(node)));
-        if (node.getTimer() != null) {
-            Timer timer = node.getTimer();
-            body.addStatement(getFactoryMethod(getNodeId(node), METHOD_TIMER, 
getOrNullExpr(timer.getDelay()),
-                    getOrNullExpr(timer.getPeriod()),
-                    getOrNullExpr(timer.getDate()),
-                    new IntegerLiteralExpr(node.getTimer().getTimeType())));
-
-        } else if (node.getTriggers() != null && 
!node.getTriggers().isEmpty()) {
-            TriggerMetaData triggerMetaData = buildTriggerMetadata(node);
-            metadata.addTrigger(triggerMetaData);
-            handleSignal(node, node.getMetaData(), body, variableScope, 
metadata);
-        } else {
-            // since there is start node without trigger then make sure it is 
startable
-            metadata.setStartable(true);
+    public void visitNode(String factoryField, StartNode startNode, BlockStmt 
body, VariableScope variableScope, ProcessMetaData metadata) {
+        body.addStatement(getAssignedFactoryMethod(factoryField, 
StartNodeFactory.class, getNodeId(startNode), getNodeKey(), 
getWorkflowElementConstructor(startNode.getId())))
+                .addStatement(getNameMethod(startNode, "Start"))
+                .addStatement(getFactoryMethod(getNodeId(startNode), 
METHOD_INTERRUPTING, new BooleanLiteralExpr(startNode.isInterrupting())));
+        visitMetaData(startNode.getMetaData(), body, getNodeId(startNode));
+        addNodeMappings(startNode, body, getNodeId(startNode));
+        Map<String, Object> nodeMetaData = startNode.getMetaData();
+        String eventType = (String) startNode.getMetaData(EVENT_TYPE);
+        switch (eventType) {
+            case Metadata.EVENT_TYPE_TIMER: {
+                Timer timer = startNode.getTimer();
+                body.addStatement(getFactoryMethod(getNodeId(startNode), 
METHOD_TIMER, getOrNullExpr(timer.getDelay()),
+                        getOrNullExpr(timer.getPeriod()),
+                        getOrNullExpr(timer.getDate()),
+                        new 
IntegerLiteralExpr(startNode.getTimer().getTimeType())));
+                break;
+            }
+            case Metadata.EVENT_TYPE_SIGNAL:
+            case Metadata.EVENT_TYPE_MESSAGE: {
+                TriggerMetaData triggerMetaData = 
buildTriggerMetadata(startNode);
+                metadata.addTrigger(triggerMetaData);
+                handleIO(startNode, startNode.getMetaData(), body, 
variableScope, metadata);
+                metadata.addSignal((String) nodeMetaData.get(TRIGGER_REF), 
computePayloadType(startNode, variableScope).orElse(null));
+                break;
+            }
+            case Metadata.EVENT_TYPE_ERROR:
+            case Metadata.EVENT_TYPE_ESCALATION:
+            case Metadata.EVENT_TYPE_COMPENSATION:
+            case Metadata.EVENT_TYPE_CONDITIONAL:
+                handleIO(startNode, startNode.getMetaData(), body, 
variableScope, metadata);
+                metadata.addSignal((String) nodeMetaData.get(TRIGGER_REF), 
null);
+                break;
+            default:
+                // since there is start node without trigger then make sure it 
is startable
+                metadata.setStartable(true);
+                break;
         }
+        body.addStatement(getDoneMethod(getNodeId(startNode)));
     }
 
     private TriggerMetaData buildTriggerMetadata(StartNode node) {
         return TriggerMetaData.of(node, (String) 
node.getMetaData(TRIGGER_MAPPING));
     }
 
-    protected void handleSignal(StartNode startNode, Map<String, Object> 
nodeMetaData, BlockStmt body, VariableScope variableScope, ProcessMetaData 
metadata) {
-        if (EVENT_TYPE_SIGNAL.equalsIgnoreCase((String) 
startNode.getMetaData(TRIGGER_TYPE))) {
-            Variable variable = null;
-            if 
(!startNode.getIoSpecification().getDataOutputAssociation().isEmpty()) {
+    protected void handleIO(StartNode startNode, Map<String, Object> 
nodeMetaData, BlockStmt body, VariableScope variableScope, ProcessMetaData 
metadata) {
+        if (nodeMetaData.containsKey(MESSAGE_TYPE)) {
+            body.addStatement(getFactoryMethod(getNodeId(startNode), 
METHOD_TRIGGER,
+                    new StringLiteralExpr((String) 
nodeMetaData.get(TRIGGER_REF)),
+                    buildDataAssociationsExpression(startNode, 
startNode.getIoSpecification().getDataOutputAssociation())));
+        } else if (nodeMetaData.containsKey(TRIGGER_REF)) {
+            body.addStatement(getFactoryMethod(getNodeId(startNode), 
METHOD_TRIGGER,
+                    new StringLiteralExpr((String) 
nodeMetaData.get(TRIGGER_REF)),
+                    buildDataAssociationsExpression(startNode, 
startNode.getIoSpecification().getDataOutputAssociation())));
+        }
+    }
 
-                body.addStatement(getFactoryMethod(getNodeId(startNode), 
METHOD_TRIGGER,
-                        new StringLiteralExpr((String) 
nodeMetaData.get(TRIGGER_REF)),
-                        buildDataAssociationsExpression(startNode, 
startNode.getIoSpecification().getDataOutputAssociation())));
+    public Optional<String> computePayloadType(StartNode startNode, 
VariableScope variableScope) {
 
-                String triggerMapping = (String) 
nodeMetaData.get(TRIGGER_MAPPING);
-                variable = variableScope.findVariable(triggerMapping);
+        String triggerMapping = (String) 
startNode.getMetaData(TRIGGER_MAPPING);
+        if (triggerMapping == null) {
+            return Optional.empty();
+        }
 
-                if (variable == null) {
-                    // check parent node container
-                    VariableScope vscope = (VariableScope) 
startNode.resolveContext(VariableScope.VARIABLE_SCOPE, triggerMapping);
-                    variable = vscope.findVariable(triggerMapping);
-                }
+        Variable variable = null;
+        variable = variableScope.findVariable(triggerMapping);
 
-                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(MESSAGE_TYPE)),
-                        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, 
startNode.getIoSpecification().getDataOutputAssociation())));
+        if (variable == null) {
+            // check parent node container
+            VariableScope vscope = (VariableScope) 
startNode.resolveContext(VariableScope.VARIABLE_SCOPE, triggerMapping);
+            variable = vscope.findVariable(triggerMapping);
         }
+        return Optional.ofNullable(variable != null ? 
variable.getType().getStringType() : null);
     }
 
 }
diff --git 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/HandleEscalationAction.java
 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/HandleEscalationAction.java
index dff678aa3f..ad1e861835 100644
--- 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/HandleEscalationAction.java
+++ 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/HandleEscalationAction.java
@@ -45,6 +45,14 @@ public class HandleEscalationAction implements Action, 
Serializable {
         this.variableName = variableName;
     }
 
+    public String getFaultName() {
+        return faultName;
+    }
+
+    public String getVariableName() {
+        return variableName;
+    }
+
     @Override
     public void execute(KogitoProcessContext context) throws Exception {
         ExceptionScopeInstance scopeInstance = (ExceptionScopeInstance) 
((NodeInstance) 
context.getNodeInstance()).resolveContextInstance(ExceptionScope.EXCEPTION_SCOPE,
@@ -53,12 +61,13 @@ public class HandleEscalationAction implements Action, 
Serializable {
             Object event = variableName == null ? null : 
context.getVariable(variableName);
             NodeInstanceImpl impl = ((NodeInstanceImpl) 
context.getNodeInstance());
             // for event nodes we create a "virtual assignment and we process 
it"
-            Map<String, Object> outputSet = 
Collections.singletonMap(variableName, event);
+            Map<String, Object> outputSet = variableName != null ? 
Collections.singletonMap(variableName, event) : Collections.emptyMap();
             NodeIoHelper.processOutputs(impl, varRef -> outputSet.get(varRef), 
target -> impl.getVariable(target));
-            context.getContextData().put("Exception", 
context.getVariable(variableName));
+            if (variableName != null) {
+                context.getContextData().put("Exception", 
context.getVariable(variableName));
+            }
             scopeInstance.handleException(faultName, context);
         } else {
-
             ((ProcessInstance) 
context.getProcessInstance()).setState(STATE_ABORTED);
         }
     }
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 682fbdc064..bb3e9d71d5 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
@@ -36,6 +36,7 @@ public class Metadata {
     public static final String TRIGGER_MAPPING_INPUT = "TriggerMappingInput";
     public static final String MAPPING_VARIABLE = "MappingVariable";
     public static final String MAPPING_VARIABLE_INPUT = "MappingVariableInput";
+    public static final String FAULT_CODE = "FaultCode";
     public static final String EVENT_TYPE = "EventType";
     public static final String EVENT_TYPE_TIMER = "Timer";
     public static final String EVENT_TYPE_SIGNAL = "signal";
@@ -43,8 +44,9 @@ public class Metadata {
     public static final String EVENT_TYPE_COMPENSATION = "Compensation";
     public static final String EVENT_TYPE_ERROR = "error";
     public static final String EVENT_TYPE_CONDITIONAL = "conditional";
+    public static final String EVENT_TYPE_NONE = "none";
     public static final String EVENT_TYPE_LINK = "link";
-    public static final Object EVENT_TYPE_ESCALATION = "Escalation";
+    public static final String 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/node/StartNode.java 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StartNode.java
index f1062e67d6..cfc91ddeec 100755
--- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StartNode.java
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/StartNode.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.jbpm.process.core.timer.Timer;
+import org.jbpm.ruleflow.core.Metadata;
 import org.jbpm.workflow.core.Node;
 import org.jbpm.workflow.core.impl.ExtendedNodeImpl;
 import org.kie.api.definition.process.Connection;
@@ -42,6 +43,10 @@ public class StartNode extends ExtendedNodeImpl {
 
     private Timer timer;
 
+    public StartNode() {
+        setMetaData(Metadata.EVENT_TYPE, Metadata.EVENT_TYPE_NONE);
+    }
+
     public void addTrigger(Trigger trigger) {
         if (triggers == null) {
             triggers = new ArrayList<>();
diff --git 
a/jbpm/jbpm-tests/src/test/resources/escalation/BPMN2-EscalationBoundaryEventWithTask.bpmn2
 
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/escalation/BPMN2-EscalationBoundaryEventWithTask.bpmn2
similarity index 92%
rename from 
jbpm/jbpm-tests/src/test/resources/escalation/BPMN2-EscalationBoundaryEventWithTask.bpmn2
rename to 
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/escalation/BPMN2-EscalationBoundaryEventWithTask.bpmn2
index df9e975bba..9d4823f3bd 100755
--- 
a/jbpm/jbpm-tests/src/test/resources/escalation/BPMN2-EscalationBoundaryEventWithTask.bpmn2
+++ 
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/escalation/BPMN2-EscalationBoundaryEventWithTask.bpmn2
@@ -33,7 +33,7 @@
   <itemDefinition id="_xItem" structureRef="String" />
   <escalation id="escId" escalationCode="Code3" />
   
-  <process processType="Private" isExecutable="true" 
id="non-interrupting-escalation" name="Escalation Boundary Event Process" >
+  <process processType="Private" isExecutable="true" 
id="EscalationBoundaryEventWithTask" name="Escalation Boundary Event Process" 
tns:packageName="org.jbpm.bpmn2.escalation">
 
     <!-- process variables -->
     <property id="x" itemSubjectRef="_xItem"/>
@@ -47,7 +47,7 @@
       <sequenceFlow id="_2-1-_2-2" sourceRef="_2-1" targetRef="_2-2" />
       
       <intermediateThrowEvent id="_2-2" name="escSub">
-        <escalationEventDefinition id="EscalationEventDefinition_2" />
+        <escalationEventDefinition id="EscalationEventDefinition_2" 
escalationRef="escId"/>
       </intermediateThrowEvent>
       <sequenceFlow id="_2-2-_2-3" sourceRef="_2-2" targetRef="_2-3" />
     
@@ -57,14 +57,16 @@
       <endEvent id="_2-4" name="endSub" />
     </subProcess>
     <sequenceFlow id="_2-_3" sourceRef="_2" targetRef="_3" />
+
+    
+    <boundaryEvent id="_4" name="CatchEscalation" attachedToRef="_2" 
cancelActivity="false" >
+      <escalationEventDefinition />
+    </boundaryEvent>
     
+        
     <endEvent id="_3" name="End" >
         <terminateEventDefinition/>
     </endEvent>
-    
-    <boundaryEvent id="_4" name="CatchEscalation" attachedToRef="_2" 
cancelActivity="false" >
-      <escalationEventDefinition escalationRef="escId" />
-    </boundaryEvent>
     <sequenceFlow id="_4-_5" sourceRef="_4" targetRef="_5" />
     
     <scriptTask id="_5" name="Goodbye" >
diff --git 
a/jbpm/jbpm-tests/src/test/resources/escalation/BPMN2-EventSubprocessEscalation.bpmn2
 
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/escalation/BPMN2-EventSubprocessEscalation.bpmn2
similarity index 97%
rename from 
jbpm/jbpm-tests/src/test/resources/escalation/BPMN2-EventSubprocessEscalation.bpmn2
rename to 
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/escalation/BPMN2-EventSubprocessEscalation.bpmn2
index 2931fda2dd..17313c09af 100755
--- 
a/jbpm/jbpm-tests/src/test/resources/escalation/BPMN2-EventSubprocessEscalation.bpmn2
+++ 
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/escalation/BPMN2-EventSubprocessEscalation.bpmn2
@@ -20,7 +20,7 @@
 
 <bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL"; 
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"; 
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"; 
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"; 
xmlns:tns="http://www.jboss.org/drools"; 
xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" 
id="Definitions_1" expressionLanguage="http://www.mvel.org/2.0"; 
targetNamespace="http://w [...]
   <bpmn2:escalation id="escId" escalationCode="escCode" />
-  <bpmn2:process id="BPMN2-EventSubprocessEscalation" tns:version="1" 
tns:packageName="defaultPackage" name="Default Process">
+  <bpmn2:process id="EventSubprocessEscalation" tns:version="1" 
tns:packageName="org.jbpm.bpmn2.escalation" name="Default Process">
     <bpmn2:startEvent id="StartEvent_1" name="start">
       <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
     </bpmn2:startEvent>
diff --git 
a/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/escalation/BPMN2-Multiescalation.bpmn2
 
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/escalation/BPMN2-Multiescalation.bpmn2
new file mode 100644
index 0000000000..053b00c882
--- /dev/null
+++ 
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/escalation/BPMN2-Multiescalation.bpmn2
@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="UTF-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:bpsim="http://www.bpsim.org/schemas/1.0"; 
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"; 
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"; 
xmlns:drools="http://www.jboss.org/drools"; id="_4D6UQA-DED2fZdcCquQDuw" 
xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd 
http://www. [...]
+  <bpmn2:itemDefinition id="_dataItem" structureRef="String"/>
+  <bpmn2:itemDefinition id="_enddataItem" structureRef="String"/>
+  <bpmn2:itemDefinition id="_from_embeddedItem" structureRef="String"/>
+  <bpmn2:itemDefinition id="_embedded_dataItem" structureRef="String"/>
+  <bpmn2:itemDefinition 
id="__D45B7BB5-B555-4CED-9812-B26810F92B54_escalation_dataOutputXItem" 
structureRef="String"/>
+  <bpmn2:itemDefinition 
id="__D36A9FBC-C0A5-4E4D-93DE-154A0CAA3BA6_embedded_dataOutputXItem" 
structureRef="String"/>
+  <bpmn2:itemDefinition 
id="__A3EA3450-0072-494E-814E-FE79EFCB14C7_dataInputXItem" 
structureRef="String"/>
+  <bpmn2:itemDefinition 
id="__C0638AB0-B291-4FA3-A23B-32795AADD598_dataInputXItem" 
structureRef="String"/>
+  <bpmn2:itemDefinition 
id="__98D1ACAF-B077-4259-88D6-A98A8A0BA915_SkippableInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__98D1ACAF-B077-4259-88D6-A98A8A0BA915_PriorityInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__98D1ACAF-B077-4259-88D6-A98A8A0BA915_CommentInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__98D1ACAF-B077-4259-88D6-A98A8A0BA915_DescriptionInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__98D1ACAF-B077-4259-88D6-A98A8A0BA915_CreatedByInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__98D1ACAF-B077-4259-88D6-A98A8A0BA915_TaskNameInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__98D1ACAF-B077-4259-88D6-A98A8A0BA915_GroupIdInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__98D1ACAF-B077-4259-88D6-A98A8A0BA915_ContentInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__98D1ACAF-B077-4259-88D6-A98A8A0BA915_NotStartedReassignInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__98D1ACAF-B077-4259-88D6-A98A8A0BA915_NotCompletedReassignInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__98D1ACAF-B077-4259-88D6-A98A8A0BA915_NotStartedNotifyInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__98D1ACAF-B077-4259-88D6-A98A8A0BA915_NotCompletedNotifyInputXItem" 
structureRef="Object"/>
+  <bpmn2:escalation id="_-336982627" escalationCode="EMBEDDED_THROWN"/>
+  <bpmn2:escalation id="_-1371661849" escalationCode="START_EMBEDDED"/>
+  <bpmn2:escalation id="_-336982627" escalationCode="EMBEDDED_THROWN"/>
+  <bpmn2:escalation id="_-1371661849" escalationCode="START_EMBEDDED"/>
+  <bpmn2:escalation id="_658585603" escalationCode="START_NEW"/>
+  <bpmn2:collaboration id="_8F84732C-D81B-40D1-BD7C-25D5BA876827" 
name="Default Collaboration">
+    <bpmn2:participant id="_37A13228-D3DD-4DDA-8144-EA7E6978F8CE" name="Pool 
Participant" processRef="runscalation"/>
+  </bpmn2:collaboration>
+  <bpmn2:process id="MultiEscalation" 
drools:packageName="org.jbpm.bpmn2.escalation" drools:version="1.0" 
drools:adHoc="false" name="runscalation" isExecutable="true" 
processType="Public">
+    <bpmn2:property id="data" itemSubjectRef="_dataItem" name="data"/>
+    <bpmn2:property id="enddata" itemSubjectRef="_enddataItem" name="enddata"/>
+    <bpmn2:property id="from_embedded" itemSubjectRef="_from_embeddedItem" 
name="from_embedded"/>
+    <bpmn2:sequenceFlow id="_A0422A4F-E3B8-42C2-8C6F-234CE1780524" 
sourceRef="_98D1ACAF-B077-4259-88D6-A98A8A0BA915" 
targetRef="_C0F562EA-CAE7-4397-8D0C-268ED31A7692"/>
+    <bpmn2:sequenceFlow id="_7F78C4C4-0339-447F-9B38-BC61BAA82721" 
sourceRef="_9C86D45B-37C6-4FD2-B0DF-858427414CF1" 
targetRef="_C0638AB0-B291-4FA3-A23B-32795AADD598">
+      <bpmn2:extensionElements>
+        <drools:metaData name="isAutoConnection.target">
+          <drools:metaValue><![CDATA[true]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="_546538EF-7FD3-4F2A-94D7-E6164020D828" 
sourceRef="_A1275EC1-2B48-4D5F-8DFF-093E914A429B" 
targetRef="_98D1ACAF-B077-4259-88D6-A98A8A0BA915"/>
+    <bpmn2:sequenceFlow id="_62F7D3F8-F64F-4C45-B8B6-F73E3EAA0617" 
sourceRef="_A3EA3450-0072-494E-814E-FE79EFCB14C7" 
targetRef="_A1275EC1-2B48-4D5F-8DFF-093E914A429B"/>
+    <bpmn2:sequenceFlow id="_6461CD5F-1BBB-4848-AC4C-92780D4EB928" 
sourceRef="_B1503FAC-5C99-488C-82C9-5FDE5F343F4B" 
targetRef="_A3EA3450-0072-494E-814E-FE79EFCB14C7"/>
+    <bpmn2:sequenceFlow id="_2207CDA7-0D9A-475F-A82F-4F7C00032203" 
sourceRef="_6E5D986F-44CC-4285-9D83-FA4B0992D58D" 
targetRef="_B1503FAC-5C99-488C-82C9-5FDE5F343F4B"/>
+    <bpmn2:sequenceFlow id="_FDDE6BE2-4698-449E-BD81-C1F984217F59" 
sourceRef="_D36A9FBC-C0A5-4E4D-93DE-154A0CAA3BA6" 
targetRef="_9C86D45B-37C6-4FD2-B0DF-858427414CF1"/>
+    <bpmn2:endEvent id="_C0F562EA-CAE7-4397-8D0C-268ED31A7692">
+      <bpmn2:incoming>_A0422A4F-E3B8-42C2-8C6F-234CE1780524</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:userTask id="_98D1ACAF-B077-4259-88D6-A98A8A0BA915" name="HT">
+      <bpmn2:extensionElements>
+        <drools:metaData name="elementname">
+          <drools:metaValue><![CDATA[HT]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>_546538EF-7FD3-4F2A-94D7-E6164020D828</bpmn2:incoming>
+      <bpmn2:outgoing>_A0422A4F-E3B8-42C2-8C6F-234CE1780524</bpmn2:outgoing>
+      <bpmn2:ioSpecification>
+        <bpmn2:dataInput 
id="_98D1ACAF-B077-4259-88D6-A98A8A0BA915_TaskNameInputX" drools:dtype="Object" 
itemSubjectRef="__98D1ACAF-B077-4259-88D6-A98A8A0BA915_TaskNameInputXItem" 
name="TaskName"/>
+        <bpmn2:dataInput 
id="_98D1ACAF-B077-4259-88D6-A98A8A0BA915_SkippableInputX" 
drools:dtype="Object" 
itemSubjectRef="__98D1ACAF-B077-4259-88D6-A98A8A0BA915_SkippableInputXItem" 
name="Skippable"/>
+        <bpmn2:inputSet>
+          
<bpmn2:dataInputRefs>_98D1ACAF-B077-4259-88D6-A98A8A0BA915_TaskNameInputX</bpmn2:dataInputRefs>
+          
<bpmn2:dataInputRefs>_98D1ACAF-B077-4259-88D6-A98A8A0BA915_SkippableInputX</bpmn2:dataInputRefs>
+        </bpmn2:inputSet>
+      </bpmn2:ioSpecification>
+      <bpmn2:dataInputAssociation>
+        
<bpmn2:targetRef>_98D1ACAF-B077-4259-88D6-A98A8A0BA915_TaskNameInputX</bpmn2:targetRef>
+        <bpmn2:assignment>
+          <bpmn2:from 
xsi:type="bpmn2:tFormalExpression"><![CDATA[Task]]></bpmn2:from>
+          <bpmn2:to 
xsi:type="bpmn2:tFormalExpression"><![CDATA[_98D1ACAF-B077-4259-88D6-A98A8A0BA915_TaskNameInputX]]></bpmn2:to>
+        </bpmn2:assignment>
+      </bpmn2:dataInputAssociation>
+      <bpmn2:dataInputAssociation>
+        
<bpmn2:targetRef>_98D1ACAF-B077-4259-88D6-A98A8A0BA915_SkippableInputX</bpmn2:targetRef>
+        <bpmn2:assignment>
+          <bpmn2:from 
xsi:type="bpmn2:tFormalExpression"><![CDATA[false]]></bpmn2:from>
+          <bpmn2:to 
xsi:type="bpmn2:tFormalExpression"><![CDATA[_98D1ACAF-B077-4259-88D6-A98A8A0BA915_SkippableInputX]]></bpmn2:to>
+        </bpmn2:assignment>
+      </bpmn2:dataInputAssociation>
+      <bpmn2:potentialOwner id="_4D8JcA-DED2fZdcCquQDuw">
+        <bpmn2:resourceAssignmentExpression id="_4D8JcQ-DED2fZdcCquQDuw">
+          <bpmn2:formalExpression>jdoe</bpmn2:formalExpression>
+        </bpmn2:resourceAssignmentExpression>
+      </bpmn2:potentialOwner>
+    </bpmn2:userTask>
+    <bpmn2:endEvent id="_C0638AB0-B291-4FA3-A23B-32795AADD598">
+      <bpmn2:incoming>_7F78C4C4-0339-447F-9B38-BC61BAA82721</bpmn2:incoming>
+      <bpmn2:dataInput id="_C0638AB0-B291-4FA3-A23B-32795AADD598_dataInputX" 
drools:dtype="String" 
itemSubjectRef="__C0638AB0-B291-4FA3-A23B-32795AADD598_dataInputXItem" 
name="data"/>
+      <bpmn2:dataInputAssociation>
+        <bpmn2:sourceRef>from_embedded</bpmn2:sourceRef>
+        
<bpmn2:targetRef>_C0638AB0-B291-4FA3-A23B-32795AADD598_dataInputX</bpmn2:targetRef>
+      </bpmn2:dataInputAssociation>
+      <bpmn2:inputSet>
+        
<bpmn2:dataInputRefs>_C0638AB0-B291-4FA3-A23B-32795AADD598_dataInputX</bpmn2:dataInputRefs>
+      </bpmn2:inputSet>
+      <bpmn2:escalationEventDefinition drools:esccode="START_NEW" 
escalationRef="_658585603"/>
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="_9C86D45B-37C6-4FD2-B0DF-858427414CF1" name="Before 
excalate" scriptFormat="http://www.java.com/java";>
+      <bpmn2:extensionElements>
+        <drools:metaData name="elementname">
+          <drools:metaValue><![CDATA[Before escalate]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>_FDDE6BE2-4698-449E-BD81-C1F984217F59</bpmn2:incoming>
+      <bpmn2:outgoing>_7F78C4C4-0339-447F-9B38-BC61BAA82721</bpmn2:outgoing>
+      <bpmn2:script>System.out.println("Main - going to escalate");
+System.out.println("from_embedded: " + from_embedded);</bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="_A1275EC1-2B48-4D5F-8DFF-093E914A429B" name="After 
(main)" scriptFormat="http://www.java.com/java";>
+      <bpmn2:extensionElements>
+        <drools:metaData name="elementname">
+          <drools:metaValue><![CDATA[After (main)]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>_62F7D3F8-F64F-4C45-B8B6-F73E3EAA0617</bpmn2:incoming>
+      <bpmn2:outgoing>_546538EF-7FD3-4F2A-94D7-E6164020D828</bpmn2:outgoing>
+      <bpmn2:script>System.out.println("Main - before");</bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="_A3EA3450-0072-494E-814E-FE79EFCB14C7">
+      <bpmn2:incoming>_6461CD5F-1BBB-4848-AC4C-92780D4EB928</bpmn2:incoming>
+      <bpmn2:outgoing>_62F7D3F8-F64F-4C45-B8B6-F73E3EAA0617</bpmn2:outgoing>
+      <bpmn2:dataInput id="_A3EA3450-0072-494E-814E-FE79EFCB14C7_dataInputX" 
drools:dtype="String" 
itemSubjectRef="__A3EA3450-0072-494E-814E-FE79EFCB14C7_dataInputXItem" 
name="data"/>
+      <bpmn2:dataInputAssociation>
+        <bpmn2:sourceRef>data</bpmn2:sourceRef>
+        
<bpmn2:targetRef>_A3EA3450-0072-494E-814E-FE79EFCB14C7_dataInputX</bpmn2:targetRef>
+      </bpmn2:dataInputAssociation>
+      <bpmn2:inputSet>
+        
<bpmn2:dataInputRefs>_A3EA3450-0072-494E-814E-FE79EFCB14C7_dataInputX</bpmn2:dataInputRefs>
+      </bpmn2:inputSet>
+      <bpmn2:escalationEventDefinition drools:esccode="START_EMBEDDED" 
escalationRef="_-1371661849"/>
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:scriptTask id="_B1503FAC-5C99-488C-82C9-5FDE5F343F4B" name="Before 
(main)" scriptFormat="http://www.java.com/java";>
+      <bpmn2:extensionElements>
+        <drools:metaData name="elementname">
+          <drools:metaValue><![CDATA[Before (main)]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>_2207CDA7-0D9A-475F-A82F-4F7C00032203</bpmn2:incoming>
+      <bpmn2:outgoing>_6461CD5F-1BBB-4848-AC4C-92780D4EB928</bpmn2:outgoing>
+      <bpmn2:script>System.out.println("Main - before");
+System.out.println("Data: " + data);</bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:startEvent id="_6E5D986F-44CC-4285-9D83-FA4B0992D58D" 
name="Start(main)">
+      <bpmn2:extensionElements>
+        <drools:metaData name="elementname">
+          <drools:metaValue><![CDATA[Start(main)]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+      <bpmn2:outgoing>_2207CDA7-0D9A-475F-A82F-4F7C00032203</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:subProcess id="_B7B84DB7-E2DE-4EE6-8E00-3AEC0025D5E1" 
name="Sub-process" triggeredByEvent="true">
+      <bpmn2:extensionElements>
+        <drools:metaData name="elementname">
+          <drools:metaValue><![CDATA[Sub-process]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+      <bpmn2:property id="embedded_data" itemSubjectRef="_embedded_dataItem" 
name="embedded_data"/>
+      <bpmn2:sequenceFlow id="_F648A8EA-A514-428D-9F0E-FE22D10869AB" 
sourceRef="_E0A3C51A-3EFA-4657-B0EA-8E001C35BC01" 
targetRef="_8CDFADB2-6478-4405-90DE-2EA6381095F8"/>
+      <bpmn2:sequenceFlow id="_FB7D37EF-2B85-4BF7-AF1F-3B30F641A65F" 
sourceRef="_54BD6682-3DA3-408A-B5E0-9E6BC9CF07B7" 
targetRef="_E0A3C51A-3EFA-4657-B0EA-8E001C35BC01"/>
+      <bpmn2:sequenceFlow id="_717B70E1-D44A-41B2-BB35-372195C4B8C2" 
sourceRef="_6168218E-55E5-4901-9F3E-BEACF78E18B3" 
targetRef="_54BD6682-3DA3-408A-B5E0-9E6BC9CF07B7"/>
+      <bpmn2:sequenceFlow id="_D4DDD98E-F8CC-4DE2-A83A-CD98FE0090C9" 
sourceRef="_D45B7BB5-B555-4CED-9812-B26810F92B54" 
targetRef="_6168218E-55E5-4901-9F3E-BEACF78E18B3"/>
+      <bpmn2:startEvent id="_D45B7BB5-B555-4CED-9812-B26810F92B54" name="Start 
(escalation)" isInterrupting="false">
+        <bpmn2:extensionElements>
+          <drools:metaData name="elementname">
+            <drools:metaValue><![CDATA[Start (escalation)]]></drools:metaValue>
+          </drools:metaData>
+        </bpmn2:extensionElements>
+        <bpmn2:outgoing>_D4DDD98E-F8CC-4DE2-A83A-CD98FE0090C9</bpmn2:outgoing>
+        <bpmn2:dataOutput 
id="_D45B7BB5-B555-4CED-9812-B26810F92B54_escalation_dataOutputX" 
drools:dtype="String" 
itemSubjectRef="__D45B7BB5-B555-4CED-9812-B26810F92B54_escalation_dataOutputXItem"
 name="escalation_data"/>
+        <bpmn2:dataOutputAssociation>
+          
<bpmn2:sourceRef>_D45B7BB5-B555-4CED-9812-B26810F92B54_escalation_dataOutputX</bpmn2:sourceRef>
+          <bpmn2:targetRef>embedded_data</bpmn2:targetRef>
+        </bpmn2:dataOutputAssociation>
+        <bpmn2:outputSet>
+          
<bpmn2:dataOutputRefs>_D45B7BB5-B555-4CED-9812-B26810F92B54_escalation_dataOutputX</bpmn2:dataOutputRefs>
+        </bpmn2:outputSet>
+        <bpmn2:escalationEventDefinition drools:esccode="START_EMBEDDED" 
escalationRef="_-1371661849"/>
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="_8CDFADB2-6478-4405-90DE-2EA6381095F8">
+        <bpmn2:incoming>_F648A8EA-A514-428D-9F0E-FE22D10869AB</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="_E0A3C51A-3EFA-4657-B0EA-8E001C35BC01" 
name="After" scriptFormat="http://www.java.com/java";>
+        <bpmn2:extensionElements>
+          <drools:metaData name="elementname">
+            <drools:metaValue><![CDATA[After]]></drools:metaValue>
+          </drools:metaData>
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>_FB7D37EF-2B85-4BF7-AF1F-3B30F641A65F</bpmn2:incoming>
+        <bpmn2:outgoing>_F648A8EA-A514-428D-9F0E-FE22D10869AB</bpmn2:outgoing>
+        <bpmn2:script>System.out.println("Embedded - after");</bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:intermediateThrowEvent id="_54BD6682-3DA3-408A-B5E0-9E6BC9CF07B7">
+        <bpmn2:incoming>_717B70E1-D44A-41B2-BB35-372195C4B8C2</bpmn2:incoming>
+        <bpmn2:outgoing>_FB7D37EF-2B85-4BF7-AF1F-3B30F641A65F</bpmn2:outgoing>
+        <bpmn2:escalationEventDefinition drools:esccode="EMBEDDED_THROWN" 
escalationRef="_-336982627"/>
+      </bpmn2:intermediateThrowEvent>
+      <bpmn2:scriptTask id="_6168218E-55E5-4901-9F3E-BEACF78E18B3" 
name="Before" scriptFormat="http://www.java.com/java";>
+        <bpmn2:extensionElements>
+          <drools:metaData name="elementname">
+            <drools:metaValue><![CDATA[Before]]></drools:metaValue>
+          </drools:metaData>
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>_D4DDD98E-F8CC-4DE2-A83A-CD98FE0090C9</bpmn2:incoming>
+        <bpmn2:outgoing>_717B70E1-D44A-41B2-BB35-372195C4B8C2</bpmn2:outgoing>
+        <bpmn2:script>System.out.println("Embedded - before");
+System.out.println("embedded_data: " + embedded_data);</bpmn2:script>
+      </bpmn2:scriptTask>
+    </bpmn2:subProcess>
+    <bpmn2:boundaryEvent id="_D36A9FBC-C0A5-4E4D-93DE-154A0CAA3BA6" 
drools:dockerinfo="275.2857142857143^231|" drools:boundaryca="false" 
attachedToRef="_B7B84DB7-E2DE-4EE6-8E00-3AEC0025D5E1" cancelActivity="false">
+      <bpmn2:outgoing>_FDDE6BE2-4698-449E-BD81-C1F984217F59</bpmn2:outgoing>
+      <bpmn2:dataOutput 
id="_D36A9FBC-C0A5-4E4D-93DE-154A0CAA3BA6_embedded_dataOutputX" 
drools:dtype="String" 
itemSubjectRef="__D36A9FBC-C0A5-4E4D-93DE-154A0CAA3BA6_embedded_dataOutputXItem"
 name="embedded_data"/>
+      <bpmn2:dataOutputAssociation>
+        
<bpmn2:sourceRef>_D36A9FBC-C0A5-4E4D-93DE-154A0CAA3BA6_embedded_dataOutputX</bpmn2:sourceRef>
+        <bpmn2:targetRef>from_embedded</bpmn2:targetRef>
+      </bpmn2:dataOutputAssociation>
+      <bpmn2:outputSet>
+        
<bpmn2:dataOutputRefs>_D36A9FBC-C0A5-4E4D-93DE-154A0CAA3BA6_embedded_dataOutputX</bpmn2:dataOutputRefs>
+      </bpmn2:outputSet>
+      <bpmn2:escalationEventDefinition drools:esccode="EMBEDDED_THROWN" 
escalationRef="_-336982627"/>
+    </bpmn2:boundaryEvent>
+  </bpmn2:process>
+  <bpmndi:BPMNDiagram>
+    <bpmndi:BPMNPlane bpmnElement="runscalation">
+      <bpmndi:BPMNShape id="shape__B7B84DB7-E2DE-4EE6-8E00-3AEC0025D5E1" 
bpmnElement="_B7B84DB7-E2DE-4EE6-8E00-3AEC0025D5E1" isExpanded="true">
+        <dc:Bounds height="259" width="579" x="231" y="334"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__6168218E-55E5-4901-9F3E-BEACF78E18B3" 
bpmnElement="_6168218E-55E5-4901-9F3E-BEACF78E18B3">
+        <dc:Bounds height="102" width="154" x="290" y="446"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__54BD6682-3DA3-408A-B5E0-9E6BC9CF07B7" 
bpmnElement="_54BD6682-3DA3-408A-B5E0-9E6BC9CF07B7">
+        <dc:Bounds height="56" width="56" x="471" y="469"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__E0A3C51A-3EFA-4657-B0EA-8E001C35BC01" 
bpmnElement="_E0A3C51A-3EFA-4657-B0EA-8E001C35BC01">
+        <dc:Bounds height="102" width="154" x="554" y="446"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__8CDFADB2-6478-4405-90DE-2EA6381095F8" 
bpmnElement="_8CDFADB2-6478-4405-90DE-2EA6381095F8">
+        <dc:Bounds height="56" width="56" x="738" y="469"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__D45B7BB5-B555-4CED-9812-B26810F92B54" 
bpmnElement="_D45B7BB5-B555-4CED-9812-B26810F92B54">
+        <dc:Bounds height="56" width="56" x="340" y="345"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge 
id="edge_shape__D45B7BB5-B555-4CED-9812-B26810F92B54_to_shape__6168218E-55E5-4901-9F3E-BEACF78E18B3"
 bpmnElement="_D4DDD98E-F8CC-4DE2-A83A-CD98FE0090C9">
+        <di:waypoint x="368" y="373"/>
+        <di:waypoint x="367" y="446"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge 
id="edge_shape__6168218E-55E5-4901-9F3E-BEACF78E18B3_to_shape__54BD6682-3DA3-408A-B5E0-9E6BC9CF07B7"
 bpmnElement="_717B70E1-D44A-41B2-BB35-372195C4B8C2">
+        <di:waypoint x="367" y="497"/>
+        <di:waypoint x="471" y="497"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge 
id="edge_shape__54BD6682-3DA3-408A-B5E0-9E6BC9CF07B7_to_shape__E0A3C51A-3EFA-4657-B0EA-8E001C35BC01"
 bpmnElement="_FB7D37EF-2B85-4BF7-AF1F-3B30F641A65F">
+        <di:waypoint x="499" y="497"/>
+        <di:waypoint x="631" y="497"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge 
id="edge_shape__E0A3C51A-3EFA-4657-B0EA-8E001C35BC01_to_shape__8CDFADB2-6478-4405-90DE-2EA6381095F8"
 bpmnElement="_F648A8EA-A514-428D-9F0E-FE22D10869AB">
+        <di:waypoint x="631" y="497"/>
+        <di:waypoint x="766" y="497"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="shape__D36A9FBC-C0A5-4E4D-93DE-154A0CAA3BA6" 
bpmnElement="_D36A9FBC-C0A5-4E4D-93DE-154A0CAA3BA6">
+        <dc:Bounds height="56" width="55.99999999999994" x="506.2857142857143" 
y="565"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__6E5D986F-44CC-4285-9D83-FA4B0992D58D" 
bpmnElement="_6E5D986F-44CC-4285-9D83-FA4B0992D58D">
+        <dc:Bounds height="56" width="56" x="125" y="163"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__B1503FAC-5C99-488C-82C9-5FDE5F343F4B" 
bpmnElement="_B1503FAC-5C99-488C-82C9-5FDE5F343F4B">
+        <dc:Bounds height="102" width="154" x="231" y="140"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__A3EA3450-0072-494E-814E-FE79EFCB14C7" 
bpmnElement="_A3EA3450-0072-494E-814E-FE79EFCB14C7">
+        <dc:Bounds height="56" width="56" x="435" y="163"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__A1275EC1-2B48-4D5F-8DFF-093E914A429B" 
bpmnElement="_A1275EC1-2B48-4D5F-8DFF-093E914A429B">
+        <dc:Bounds height="102" width="154" x="518" y="140"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__9C86D45B-37C6-4FD2-B0DF-858427414CF1" 
bpmnElement="_9C86D45B-37C6-4FD2-B0DF-858427414CF1">
+        <dc:Bounds height="102" width="154" x="457" y="665"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__C0638AB0-B291-4FA3-A23B-32795AADD598" 
bpmnElement="_C0638AB0-B291-4FA3-A23B-32795AADD598">
+        <dc:Bounds height="56" width="56" x="745" y="688"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__98D1ACAF-B077-4259-88D6-A98A8A0BA915" 
bpmnElement="_98D1ACAF-B077-4259-88D6-A98A8A0BA915">
+        <dc:Bounds height="102" width="154" x="724" y="140"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__C0F562EA-CAE7-4397-8D0C-268ED31A7692" 
bpmnElement="_C0F562EA-CAE7-4397-8D0C-268ED31A7692">
+        <dc:Bounds height="56" width="56" x="958" y="163"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge 
id="edge_shape__D36A9FBC-C0A5-4E4D-93DE-154A0CAA3BA6_to_shape__9C86D45B-37C6-4FD2-B0DF-858427414CF1"
 bpmnElement="_FDDE6BE2-4698-449E-BD81-C1F984217F59">
+        <di:waypoint x="534.2857142857142" y="593"/>
+        <di:waypoint x="534" y="716"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge 
id="edge_shape__6E5D986F-44CC-4285-9D83-FA4B0992D58D_to_shape__B1503FAC-5C99-488C-82C9-5FDE5F343F4B"
 bpmnElement="_2207CDA7-0D9A-475F-A82F-4F7C00032203">
+        <di:waypoint x="153" y="191"/>
+        <di:waypoint x="231" y="191"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge 
id="edge_shape__B1503FAC-5C99-488C-82C9-5FDE5F343F4B_to_shape__A3EA3450-0072-494E-814E-FE79EFCB14C7"
 bpmnElement="_6461CD5F-1BBB-4848-AC4C-92780D4EB928">
+        <di:waypoint x="308" y="191"/>
+        <di:waypoint x="463" y="191"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge 
id="edge_shape__A3EA3450-0072-494E-814E-FE79EFCB14C7_to_shape__A1275EC1-2B48-4D5F-8DFF-093E914A429B"
 bpmnElement="_62F7D3F8-F64F-4C45-B8B6-F73E3EAA0617">
+        <di:waypoint x="463" y="191"/>
+        <di:waypoint x="518" y="191"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge 
id="edge_shape__A1275EC1-2B48-4D5F-8DFF-093E914A429B_to_shape__98D1ACAF-B077-4259-88D6-A98A8A0BA915"
 bpmnElement="_546538EF-7FD3-4F2A-94D7-E6164020D828">
+        <di:waypoint x="595" y="191"/>
+        <di:waypoint x="801" y="191"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge 
id="edge_shape__9C86D45B-37C6-4FD2-B0DF-858427414CF1_to_shape__C0638AB0-B291-4FA3-A23B-32795AADD598"
 bpmnElement="_7F78C4C4-0339-447F-9B38-BC61BAA82721">
+        <di:waypoint x="534" y="716"/>
+        <di:waypoint x="822" y="688"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge 
id="edge_shape__98D1ACAF-B077-4259-88D6-A98A8A0BA915_to_shape__C0F562EA-CAE7-4397-8D0C-268ED31A7692"
 bpmnElement="_A0422A4F-E3B8-42C2-8C6F-234CE1780524">
+        <di:waypoint x="801" y="191"/>
+        <di:waypoint x="986" y="191"/>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+  <bpmn2:relationship type="BPSimData">
+    <bpmn2:extensionElements>
+      <bpsim:BPSimData>
+        <bpsim:Scenario id="default" name="Simulationscenario">
+          <bpsim:ScenarioParameters/>
+          <bpsim:ElementParameters 
elementRef="_6E5D986F-44CC-4285-9D83-FA4B0992D58D">
+            <bpsim:TimeParameters>
+              <bpsim:ProcessingTime>
+                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters 
elementRef="_B1503FAC-5C99-488C-82C9-5FDE5F343F4B">
+            <bpsim:TimeParameters>
+              <bpsim:ProcessingTime>
+                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ResourceParameters>
+              <bpsim:Availability>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Availability>
+              <bpsim:Quantity>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Quantity>
+            </bpsim:ResourceParameters>
+            <bpsim:CostParameters>
+              <bpsim:UnitCost>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:UnitCost>
+            </bpsim:CostParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters 
elementRef="_A1275EC1-2B48-4D5F-8DFF-093E914A429B">
+            <bpsim:TimeParameters>
+              <bpsim:ProcessingTime>
+                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ResourceParameters>
+              <bpsim:Availability>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Availability>
+              <bpsim:Quantity>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Quantity>
+            </bpsim:ResourceParameters>
+            <bpsim:CostParameters>
+              <bpsim:UnitCost>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:UnitCost>
+            </bpsim:CostParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters 
elementRef="_9C86D45B-37C6-4FD2-B0DF-858427414CF1">
+            <bpsim:TimeParameters>
+              <bpsim:ProcessingTime>
+                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ResourceParameters>
+              <bpsim:Availability>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Availability>
+              <bpsim:Quantity>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Quantity>
+            </bpsim:ResourceParameters>
+            <bpsim:CostParameters>
+              <bpsim:UnitCost>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:UnitCost>
+            </bpsim:CostParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters 
elementRef="_98D1ACAF-B077-4259-88D6-A98A8A0BA915">
+            <bpsim:TimeParameters>
+              <bpsim:ProcessingTime>
+                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ResourceParameters>
+              <bpsim:Availability>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Availability>
+              <bpsim:Quantity>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Quantity>
+            </bpsim:ResourceParameters>
+            <bpsim:CostParameters>
+              <bpsim:UnitCost>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:UnitCost>
+            </bpsim:CostParameters>
+          </bpsim:ElementParameters>
+        </bpsim:Scenario>
+      </bpsim:BPSimData>
+    </bpmn2:extensionElements>
+    <bpmn2:source>_4D6UQA-DED2fZdcCquQDuw</bpmn2:source>
+    <bpmn2:target>_4D6UQA-DED2fZdcCquQDuw</bpmn2:target>
+  </bpmn2:relationship>
+</bpmn2:definitions>
\ No newline at end of file
diff --git 
a/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/escalation/BPMN2-TopLevelEscalation.bpmn2
 
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/escalation/BPMN2-TopLevelEscalation.bpmn2
new file mode 100644
index 0000000000..140b641e69
--- /dev/null
+++ 
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/escalation/BPMN2-TopLevelEscalation.bpmn2
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-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:bpsim="http://www.bpsim.org/schemas/1.0"; 
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"; 
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"; 
xmlns:drools="http://www.jboss.org/drools"; id="_ioNE0A98ED2kMdINZFf-yQ" 
xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd 
http://www. [...]
+  <bpmn2:itemDefinition id="_dataItem" structureRef="String"/>
+  <bpmn2:itemDefinition 
id="__A4C8228C-1359-4663-A82B-4AA1C98C3871_dataOutputXItem" 
structureRef="String"/>
+  <bpmn2:itemDefinition 
id="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_SkippableInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_PriorityInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_CommentInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_DescriptionInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_CreatedByInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_TaskNameInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_GroupIdInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_ContentInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_NotStartedReassignInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_NotCompletedReassignInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_NotStartedNotifyInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_NotCompletedNotifyInputXItem" 
structureRef="Object"/>
+  <bpmn2:itemDefinition 
id="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_dataInputXItem" 
structureRef="String"/>
+  <bpmn2:itemDefinition 
id="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_dataOutputXItem" 
structureRef="String"/>
+  <bpmn2:escalation id="_658585603" escalationCode="START_NEW"/>
+  <bpmn2:collaboration id="_A65AF1CE-3E9B-430C-B7E2-7BB89D32788A" 
name="Default Collaboration">
+    <bpmn2:participant id="_472C4BC3-AFDF-401C-B83D-211935DBFDFC" name="Pool 
Participant" processRef="after"/>
+  </bpmn2:collaboration>
+  <bpmn2:process id="TopLevelEscalation" 
drools:packageName="org.jbpm.bpmn2.escalation" drools:version="1.0" 
drools:adHoc="false" name="after" isExecutable="true" processType="Public">
+    <bpmn2:property id="data" itemSubjectRef="_dataItem" name="data"/>
+    <bpmn2:sequenceFlow id="_9F387975-3BC6-4C9E-A993-91A84BF8A727" 
sourceRef="_75AFFB28-C6CE-40D8-9DA0-29593E1BB636" 
targetRef="_6021FBD1-B098-47A9-BB1F-1DF99E90C405"/>
+    <bpmn2:sequenceFlow id="_1B1AE7E4-585B-4DE2-92EE-AEB5FA650595" 
sourceRef="_A4C8228C-1359-4663-A82B-4AA1C98C3871" 
targetRef="_75AFFB28-C6CE-40D8-9DA0-29593E1BB636"/>
+    <bpmn2:endEvent id="_6021FBD1-B098-47A9-BB1F-1DF99E90C405">
+      <bpmn2:incoming>_9F387975-3BC6-4C9E-A993-91A84BF8A727</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:userTask id="_75AFFB28-C6CE-40D8-9DA0-29593E1BB636" name="Task">
+      <bpmn2:extensionElements>
+        <drools:metaData name="elementname">
+          <drools:metaValue><![CDATA[Task]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>_1B1AE7E4-585B-4DE2-92EE-AEB5FA650595</bpmn2:incoming>
+      <bpmn2:outgoing>_9F387975-3BC6-4C9E-A993-91A84BF8A727</bpmn2:outgoing>
+      <bpmn2:ioSpecification>
+        <bpmn2:dataInput 
id="_75AFFB28-C6CE-40D8-9DA0-29593E1BB636_TaskNameInputX" drools:dtype="Object" 
itemSubjectRef="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_TaskNameInputXItem" 
name="TaskName"/>
+        <bpmn2:dataInput id="_75AFFB28-C6CE-40D8-9DA0-29593E1BB636_dataInputX" 
drools:dtype="String" 
itemSubjectRef="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_dataInputXItem" 
name="data"/>
+        <bpmn2:dataInput 
id="_75AFFB28-C6CE-40D8-9DA0-29593E1BB636_SkippableInputX" 
drools:dtype="Object" 
itemSubjectRef="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_SkippableInputXItem" 
name="Skippable"/>
+        <bpmn2:dataOutput 
id="_75AFFB28-C6CE-40D8-9DA0-29593E1BB636_dataOutputX" drools:dtype="String" 
itemSubjectRef="__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_dataOutputXItem" 
name="data"/>
+        <bpmn2:inputSet>
+          
<bpmn2:dataInputRefs>_75AFFB28-C6CE-40D8-9DA0-29593E1BB636_TaskNameInputX</bpmn2:dataInputRefs>
+          
<bpmn2:dataInputRefs>_75AFFB28-C6CE-40D8-9DA0-29593E1BB636_dataInputX</bpmn2:dataInputRefs>
+          
<bpmn2:dataInputRefs>_75AFFB28-C6CE-40D8-9DA0-29593E1BB636_SkippableInputX</bpmn2:dataInputRefs>
+        </bpmn2:inputSet>
+        <bpmn2:outputSet>
+          
<bpmn2:dataOutputRefs>_75AFFB28-C6CE-40D8-9DA0-29593E1BB636_dataOutputX</bpmn2:dataOutputRefs>
+        </bpmn2:outputSet>
+      </bpmn2:ioSpecification>
+      <bpmn2:dataInputAssociation>
+        
<bpmn2:targetRef>_75AFFB28-C6CE-40D8-9DA0-29593E1BB636_TaskNameInputX</bpmn2:targetRef>
+        <bpmn2:assignment>
+          <bpmn2:from 
xsi:type="bpmn2:tFormalExpression"><![CDATA[Task]]></bpmn2:from>
+          <bpmn2:to 
xsi:type="bpmn2:tFormalExpression"><![CDATA[_75AFFB28-C6CE-40D8-9DA0-29593E1BB636_TaskNameInputX]]></bpmn2:to>
+        </bpmn2:assignment>
+      </bpmn2:dataInputAssociation>
+      <bpmn2:dataInputAssociation>
+        <bpmn2:sourceRef>data</bpmn2:sourceRef>
+        
<bpmn2:targetRef>_75AFFB28-C6CE-40D8-9DA0-29593E1BB636_dataInputX</bpmn2:targetRef>
+      </bpmn2:dataInputAssociation>
+      <bpmn2:dataInputAssociation>
+        
<bpmn2:targetRef>_75AFFB28-C6CE-40D8-9DA0-29593E1BB636_SkippableInputX</bpmn2:targetRef>
+        <bpmn2:assignment>
+          <bpmn2:from 
xsi:type="bpmn2:tFormalExpression"><![CDATA[false]]></bpmn2:from>
+          <bpmn2:to 
xsi:type="bpmn2:tFormalExpression"><![CDATA[_75AFFB28-C6CE-40D8-9DA0-29593E1BB636_SkippableInputX]]></bpmn2:to>
+        </bpmn2:assignment>
+      </bpmn2:dataInputAssociation>
+      <bpmn2:dataOutputAssociation>
+        
<bpmn2:sourceRef>_75AFFB28-C6CE-40D8-9DA0-29593E1BB636_dataOutputX</bpmn2:sourceRef>
+        <bpmn2:targetRef>data</bpmn2:targetRef>
+      </bpmn2:dataOutputAssociation>
+      <bpmn2:potentialOwner id="_ioPhEA98ED2kMdINZFf-yQ">
+        <bpmn2:resourceAssignmentExpression id="_ioPhEQ98ED2kMdINZFf-yQ">
+          <bpmn2:formalExpression>jdoe</bpmn2:formalExpression>
+        </bpmn2:resourceAssignmentExpression>
+      </bpmn2:potentialOwner>
+    </bpmn2:userTask>
+    <bpmn2:startEvent id="_A4C8228C-1359-4663-A82B-4AA1C98C3871">
+      <bpmn2:outgoing>_1B1AE7E4-585B-4DE2-92EE-AEB5FA650595</bpmn2:outgoing>
+      <bpmn2:dataOutput id="_A4C8228C-1359-4663-A82B-4AA1C98C3871_dataOutputX" 
drools:dtype="String" 
itemSubjectRef="__A4C8228C-1359-4663-A82B-4AA1C98C3871_dataOutputXItem" 
name="data"/>
+      <bpmn2:dataOutputAssociation>
+        
<bpmn2:sourceRef>_A4C8228C-1359-4663-A82B-4AA1C98C3871_dataOutputX</bpmn2:sourceRef>
+        <bpmn2:targetRef>data</bpmn2:targetRef>
+      </bpmn2:dataOutputAssociation>
+      <bpmn2:outputSet>
+        
<bpmn2:dataOutputRefs>_A4C8228C-1359-4663-A82B-4AA1C98C3871_dataOutputX</bpmn2:dataOutputRefs>
+      </bpmn2:outputSet>
+      <bpmn2:escalationEventDefinition drools:esccode="START_NEW" 
escalationRef="_658585603"/>
+    </bpmn2:startEvent>
+  </bpmn2:process>
+  <bpmndi:BPMNDiagram>
+    <bpmndi:BPMNPlane bpmnElement="after">
+      <bpmndi:BPMNShape id="shape__A4C8228C-1359-4663-A82B-4AA1C98C3871" 
bpmnElement="_A4C8228C-1359-4663-A82B-4AA1C98C3871">
+        <dc:Bounds height="56" width="56" x="105" y="94"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__75AFFB28-C6CE-40D8-9DA0-29593E1BB636" 
bpmnElement="_75AFFB28-C6CE-40D8-9DA0-29593E1BB636">
+        <dc:Bounds height="102" width="154" x="241" y="71"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__6021FBD1-B098-47A9-BB1F-1DF99E90C405" 
bpmnElement="_6021FBD1-B098-47A9-BB1F-1DF99E90C405">
+        <dc:Bounds height="56" width="56" x="475" y="94"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge 
id="edge_shape__A4C8228C-1359-4663-A82B-4AA1C98C3871_to_shape__75AFFB28-C6CE-40D8-9DA0-29593E1BB636"
 bpmnElement="_1B1AE7E4-585B-4DE2-92EE-AEB5FA650595">
+        <di:waypoint x="133" y="122"/>
+        <di:waypoint x="318" y="122"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge 
id="edge_shape__75AFFB28-C6CE-40D8-9DA0-29593E1BB636_to_shape__6021FBD1-B098-47A9-BB1F-1DF99E90C405"
 bpmnElement="_9F387975-3BC6-4C9E-A993-91A84BF8A727">
+        <di:waypoint x="318" y="122"/>
+        <di:waypoint x="503" y="122"/>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+  <bpmn2:relationship type="BPSimData">
+    <bpmn2:extensionElements>
+      <bpsim:BPSimData>
+        <bpsim:Scenario id="default" name="Simulationscenario">
+          <bpsim:ScenarioParameters/>
+          <bpsim:ElementParameters 
elementRef="_A4C8228C-1359-4663-A82B-4AA1C98C3871">
+            <bpsim:TimeParameters>
+              <bpsim:ProcessingTime>
+                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters 
elementRef="_75AFFB28-C6CE-40D8-9DA0-29593E1BB636">
+            <bpsim:TimeParameters>
+              <bpsim:ProcessingTime>
+                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ResourceParameters>
+              <bpsim:Availability>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Availability>
+              <bpsim:Quantity>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Quantity>
+            </bpsim:ResourceParameters>
+            <bpsim:CostParameters>
+              <bpsim:UnitCost>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:UnitCost>
+            </bpsim:CostParameters>
+          </bpsim:ElementParameters>
+        </bpsim:Scenario>
+      </bpsim:BPSimData>
+    </bpmn2:extensionElements>
+    <bpmn2:source>_ioNE0A98ED2kMdINZFf-yQ</bpmn2:source>
+    <bpmn2:target>_ioNE0A98ED2kMdINZFf-yQ</bpmn2:target>
+  </bpmn2:relationship>
+</bpmn2:definitions>
\ No newline at end of file
diff --git 
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/EscalationEventTest.java 
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/EscalationEventTest.java
index cb5420383c..f2f8c232be 100755
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/EscalationEventTest.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/EscalationEventTest.java
@@ -19,22 +19,40 @@
 package org.jbpm.bpmn2;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.jbpm.bpmn2.escalation.EscalationBoundaryEventWithTaskModel;
+import org.jbpm.bpmn2.escalation.EscalationBoundaryEventWithTaskProcess;
+import org.jbpm.bpmn2.escalation.EventSubprocessEscalationModel;
+import org.jbpm.bpmn2.escalation.EventSubprocessEscalationProcess;
+import org.jbpm.bpmn2.escalation.MultiEscalationModel;
+import org.jbpm.bpmn2.escalation.MultiEscalationProcess;
+import org.jbpm.bpmn2.escalation.TopLevelEscalationModel;
+import org.jbpm.bpmn2.escalation.TopLevelEscalationProcess;
 import org.jbpm.bpmn2.objects.TestWorkItemHandler;
+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.event.process.ProcessNodeLeftEvent;
 import org.kie.api.event.process.ProcessNodeTriggeredEvent;
+import org.kie.api.event.process.ProcessStartedEvent;
+import org.kie.api.event.process.SignalEvent;
+import org.kie.api.runtime.process.ProcessInstance;
+import org.kie.kogito.Application;
 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.KogitoWorkItem;
+import org.kie.kogito.process.impl.Sig;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.jbpm.test.utils.ProcessTestHelper.left;
+import static org.jbpm.test.utils.ProcessTestHelper.triggered;
 
 public class EscalationEventTest extends JbpmBpmn2TestCase {
 
@@ -62,39 +80,85 @@ public class EscalationEventTest extends JbpmBpmn2TestCase {
 
     };
 
+    @Test
+    public void testMultiEscalation() throws Exception {
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerProcessEventListener(app, new 
DefaultKogitoProcessEventListener() {
+            @Override
+            public void onSignal(SignalEvent event) {
+                logger.info("on signal {}", event);
+            }
+        });
+        org.kie.kogito.process.Process<MultiEscalationModel> definition = 
MultiEscalationProcess.newProcess(app);
+        MultiEscalationModel model = definition.createModel();
+        model.setData("data");
+        model.setEnddata("end_data");
+        org.kie.kogito.process.ProcessInstance<MultiEscalationModel> instance 
= definition.createInstance(model);
+        instance.start();
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ABORTED);
+    }
+
+    @Test
+    public void testTopLevelEscalation() throws Exception {
+        Application app = ProcessTestHelper.newApplication();
+        List<String> instances = new ArrayList<>();
+        ProcessTestHelper.registerProcessEventListener(app, new 
DefaultKogitoProcessEventListener() {
+            @Override
+            public void beforeProcessStarted(ProcessStartedEvent event) {
+                instances.add(event.getProcessInstance().getId());
+            }
+        });
+        org.kie.kogito.process.Process<TopLevelEscalationModel> definition = 
TopLevelEscalationProcess.newProcess(app);
+        TopLevelEscalationModel model = definition.createModel();
+        model.setData("data");
+        definition.send(Sig.of("Escalation-START_NEW", "data"));
+        assertThat(instances).hasSize(1);
+    }
+
     @Test
     public void testEventSubprocessEscalation() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("escalation/BPMN2-EventSubprocessEscalation.bpmn2");
         final List<String> executednodes = new ArrayList<>();
         KogitoProcessEventListener listener = new 
DefaultKogitoProcessEventListener() {
 
             @Override
             public void afterNodeLeft(ProcessNodeLeftEvent event) {
-                if (event.getNodeInstance().getNodeName()
-                        .equals("Script Task 1")) {
+                if (event.getNodeInstance().getNodeName().equals("Script Task 
1")) {
                     executednodes.add(((KogitoNodeInstance) 
event.getNodeInstance()).getStringId());
                 }
             }
 
         };
-
-        kruntime.getProcessEventManager().addEventListener(listener);
+        EventTrackerProcessListener tracker = new 
EventTrackerProcessListener();
         TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task",
-                workItemHandler);
-        KogitoProcessInstance processInstance = kruntime
-                .startProcess("BPMN2-EventSubprocessEscalation");
-        assertProcessInstanceActive(processInstance);
-        kruntime.getProcessEventManager().addEventListener(listener);
+
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerProcessEventListener(app, listener);
+        ProcessTestHelper.registerProcessEventListener(app, tracker);
+        ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
+
+        org.kie.kogito.process.Process<EventSubprocessEscalationModel> 
processDefinition = EventSubprocessEscalationProcess.newProcess(app);
+        org.kie.kogito.process.ProcessInstance<EventSubprocessEscalationModel> 
instance = processDefinition.createInstance(processDefinition.createModel());
+        instance.start();
+
+        assertThat(instance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
 
         KogitoWorkItem workItem = workItemHandler.getWorkItem();
         assertThat(workItem).isNotNull();
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(workItem.getStringId(), 
null);
-        assertProcessInstanceFinished(processInstance, kruntime);
-        assertNodeTriggered(processInstance.getStringId(), "start", "User Task 
1",
-                "end", "Sub Process 1", "start-sub", "Script Task 1", 
"end-sub");
+
+        ProcessTestHelper.completeWorkItem(instance, "john", 
Collections.emptyMap());
+
+        
assertThat(instance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
         assertThat(executednodes).hasSize(1);
 
+        assertThat(tracker.tracked())
+                .anyMatch(triggered("start"))
+                .anyMatch(triggered("User Task 1"))
+                .anyMatch(triggered("end"))
+                .anyMatch(left("Sub Process 1"))
+                .anyMatch(left("start-sub"))
+                .anyMatch(triggered("Script Task 1"))
+                .anyMatch(triggered("end-sub"));
+
     }
 
     @Test
@@ -135,22 +199,22 @@ public class EscalationEventTest extends 
JbpmBpmn2TestCase {
     }
 
     @Test
-    @Disabled("General escalation is not yet supported.")
-    // TODO: implement general escalation
-    // TODO: implement asynchronous escalation
     public void testGeneralEscalationBoundaryEventWithTask() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("escalation/BPMN2-EscalationBoundaryEventWithTask.bpmn2");
-
         TestWorkItemHandler handler = new TestWorkItemHandler();
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human 
Task", handler);
-        Map<String, Object> params = new HashMap<>();
-        params.put("x", "0");
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("non-interrupting-escalation", params);
 
-        
kruntime.getKogitoWorkItemManager().completeWorkItem(handler.getWorkItem().getStringId(),
 null);
-        assertProcessInstanceCompleted(processInstance);
-        // Did escalation fire? 
-        assertProcessVarValue(processInstance, "x", "1");
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerHandler(app, "Human Task", handler);
+
+        org.kie.kogito.process.Process<EscalationBoundaryEventWithTaskModel> 
processDefinition = EscalationBoundaryEventWithTaskProcess.newProcess(app);
+        EscalationBoundaryEventWithTaskModel model = 
processDefinition.createModel();
+        model.setX("0");
+        
org.kie.kogito.process.ProcessInstance<EscalationBoundaryEventWithTaskModel> 
instance = processDefinition.createInstance(model);
+        instance.start();
+        ProcessTestHelper.completeWorkItem(instance, "john", 
Collections.emptyMap());
+
+        
assertThat(instance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
+        assertThat(instance.variables().getX()).isEqualTo("1");
+
     }
 
     @Test
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 0bfaf312c2..ecf59596cb 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
@@ -34,6 +34,8 @@ 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.EventSubprocessErrorSignalEmbeddedModel;
+import org.jbpm.bpmn2.intermediate.EventSubprocessErrorSignalEmbeddedProcess;
 import 
org.jbpm.bpmn2.intermediate.IntermediateCatchEventMessageWithTransformationModel;
 import 
org.jbpm.bpmn2.intermediate.IntermediateCatchEventMessageWithTransformationProcess;
 import org.jbpm.bpmn2.intermediate.IntermediateCatchEventSignal2Model;
@@ -2351,20 +2353,17 @@ public class IntermediateEventTest extends 
JbpmBpmn2TestCase {
 
     @Test
     public void testEventSubprocessWithEmbeddedSignals() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-EventSubprocessErrorSignalEmbedded.bpmn2");
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("EventSubprocessErrorSignalEmbedded");
-
-        assertProcessInstanceActive(processInstance.getStringId(), kruntime);
-        assertProcessInstanceActive(processInstance);
-        kruntime.signalEvent("signal1", null, processInstance.getStringId());
-        assertProcessInstanceActive(processInstance.getStringId(), kruntime);
-
-        kruntime.signalEvent("signal2", null, processInstance.getStringId());
-        assertProcessInstanceActive(processInstance.getStringId(), kruntime);
-
-        kruntime.signalEvent("signal3", null, processInstance.getStringId());
+        Application app = ProcessTestHelper.newApplication();
 
-        assertProcessInstanceFinished(processInstance, kruntime);
+        
org.kie.kogito.process.Process<EventSubprocessErrorSignalEmbeddedModel> 
definition = EventSubprocessErrorSignalEmbeddedProcess.newProcess(app);
+        
org.kie.kogito.process.ProcessInstance<EventSubprocessErrorSignalEmbeddedModel> 
instance = definition.createInstance(definition.createModel());
+        instance.start();
+        instance.send(Sig.of("signal1", null));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+        instance.send(Sig.of("signal2", null));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+        instance.send(Sig.of("signal3", null));
+        
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ABORTED);
     }
 
     @Test
diff --git 
a/jbpm/jbpm-tests/src/test/java/org/jbpm/test/utils/ProcessTestHelper.java 
b/jbpm/jbpm-tests/src/test/java/org/jbpm/test/utils/ProcessTestHelper.java
index 6c1d8ac54a..3b9dc1d336 100644
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/test/utils/ProcessTestHelper.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/test/utils/ProcessTestHelper.java
@@ -24,6 +24,7 @@ import java.util.function.Consumer;
 import java.util.function.Predicate;
 
 import org.kie.api.event.process.ProcessNodeEvent;
+import org.kie.api.event.process.ProcessNodeLeftEvent;
 import org.kie.api.event.process.ProcessNodeTriggeredEvent;
 import org.kie.kogito.Application;
 import org.kie.kogito.Model;
@@ -85,4 +86,9 @@ public class ProcessTestHelper {
         };
     }
 
+    public static <T extends ProcessNodeEvent> Predicate<T> left(String 
nodeName) {
+        return e -> {
+            return e instanceof ProcessNodeLeftEvent && 
nodeName.equals(((ProcessNodeLeftEvent) e).getNodeInstance().getNodeName());
+        };
+    }
 }
diff --git 
a/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-EventSubprocessErrorSignalEmbedded.bpmn2
 
b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-EventSubprocessErrorSignalEmbedded.bpmn2
new file mode 100755
index 0000000000..ebafacec5b
--- /dev/null
+++ 
b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-EventSubprocessErrorSignalEmbedded.bpmn2
@@ -0,0 +1,342 @@
+<?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="http://www.omg.org/bpmn20"; 
xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL"; 
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"; 
xmlns:bpsim="http://www.bpsim.org/schemas/1.0"; 
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"; 
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"; 
xmlns:drools="http://www.jboss.org/drools"; id="_pgP6sHTaEeaoApuNXeI-uQ" 
xsi:schemaLocation="http://www.omg.org/spec/BPMN/201 [...]
+  <bpmn2:signal id="signal1" name="signal1"/>
+  <bpmn2:signal id="signal2" name="signal2"/>
+  <bpmn2:signal id="signal3" name="signal3"/>
+  <bpmn2:error id="myerrorref" errorCode="myerrorref"/>
+  <bpmn2:process id="EventSubprocessErrorSignalEmbedded" 
drools:packageName="org.jbpm.bpmn2.intermediate" drools:version="1.0" 
name="myerrorprocess" isExecutable="true">
+    <bpmn2:startEvent id="processStartEvent" drools:bgcolor="#9acd32" 
drools:selectable="true" name="">
+      <bpmn2:outgoing>_39010054-5D46-4E8C-A9FA-64E46B4E293A</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:scriptTask id="_C17A804A-5140-4FF4-9F27-3608B2F8D4A3" 
drools:selectable="true" name="Parent Process" 
scriptFormat="http://www.java.com/java";>
+      <bpmn2:incoming>_39010054-5D46-4E8C-A9FA-64E46B4E293A</bpmn2:incoming>
+      <bpmn2:outgoing>_FCC2871C-1D99-46E5-BE85-294F2F5EC58A</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[System.out.println("Parent process 
run...");]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="_39010054-5D46-4E8C-A9FA-64E46B4E293A" 
drools:bgcolor="#000000" drools:selectable="true" sourceRef="processStartEvent" 
targetRef="_C17A804A-5140-4FF4-9F27-3608B2F8D4A3"/>
+    <bpmn2:intermediateCatchEvent id="_A55CA959-D4DA-403D-8F0B-2078F58D2DDE" 
drools:bgcolor="#f5deb3" drools:selectable="true" drools:bordercolor="#a0522d" 
drools:boundaryca="" name="Signal1">
+      <bpmn2:incoming>_FCC2871C-1D99-46E5-BE85-294F2F5EC58A</bpmn2:incoming>
+      <bpmn2:outgoing>_05EE3913-3EAD-424B-92DC-6465CFA11A50</bpmn2:outgoing>
+      <bpmn2:signalEventDefinition id="_pgP6sXTaEeaoApuNXeI-uQ" 
signalRef="signal1"/>
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="_FCC2871C-1D99-46E5-BE85-294F2F5EC58A" 
drools:bgcolor="#000000" drools:selectable="true" 
sourceRef="_C17A804A-5140-4FF4-9F27-3608B2F8D4A3" 
targetRef="_A55CA959-D4DA-403D-8F0B-2078F58D2DDE"/>
+    <bpmn2:endEvent id="_D5BCD39D-61A8-49BA-8AC1-477D27500F0D" 
drools:bgcolor="#ff6347" drools:selectable="true" name="">
+      <bpmn2:incoming>_05EE3913-3EAD-424B-92DC-6465CFA11A50</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="_pgP6snTaEeaoApuNXeI-uQ" 
drools:erefname="myerrorref" errorRef="myerrorref"/>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="_05EE3913-3EAD-424B-92DC-6465CFA11A50" 
drools:bgcolor="#000000" drools:selectable="true" 
sourceRef="_A55CA959-D4DA-403D-8F0B-2078F58D2DDE" 
targetRef="_D5BCD39D-61A8-49BA-8AC1-477D27500F0D"/>
+    <bpmn2:subProcess id="_AB7869E8-1143-43A1-8F62-EB0FEE4E131D" 
drools:bgcolor="#ffffff" drools:selectable="true" name="" 
triggeredByEvent="true">
+      <bpmn2:startEvent id="_41A836D9-83C2-4B6B-A2CB-FB392E62C6EA" 
drools:bgcolor="#9acd32" drools:selectable="true" name="">
+        <bpmn2:outgoing>_87AD2D24-CFFC-4352-BC76-DA18AE611768</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_pgP6s3TaEeaoApuNXeI-uQ" 
drools:erefname="myerrorref" errorRef="myerrorref"/>
+      </bpmn2:startEvent>
+      <bpmn2:scriptTask id="_9C6C7F2A-9459-40DE-9675-DDA5CB1A0CD6" 
drools:selectable="true" name="Script1" scriptFormat="http://www.java.com/java";>
+        <bpmn2:incoming>_87AD2D24-CFFC-4352-BC76-DA18AE611768</bpmn2:incoming>
+        <bpmn2:outgoing>_4099F2E8-745B-4C8A-81F5-177D8B3D09A3</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[System.out.println("Script1 
run...");]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:intermediateCatchEvent id="_9BE0054F-3EA1-415D-80F5-3DB0770FA1C0" 
drools:bgcolor="#f5deb3" drools:selectable="true" drools:bordercolor="#a0522d" 
drools:boundaryca="" name="Sub-signal1">
+        <bpmn2:incoming>_4099F2E8-745B-4C8A-81F5-177D8B3D09A3</bpmn2:incoming>
+        <bpmn2:outgoing>_C970DF27-4230-4477-9D81-0C34636CE8BB</bpmn2:outgoing>
+        <bpmn2:signalEventDefinition id="_pgP6tHTaEeaoApuNXeI-uQ" 
signalRef="signal2"/>
+      </bpmn2:intermediateCatchEvent>
+      <bpmn2:scriptTask id="_87B4E535-4BA2-4F83-9F9A-CD147B67C6DE" 
drools:selectable="true" name="Script2" scriptFormat="http://www.java.com/java";>
+        <bpmn2:incoming>_C970DF27-4230-4477-9D81-0C34636CE8BB</bpmn2:incoming>
+        <bpmn2:outgoing>_52E875AC-A9EA-41CF-A168-3C02CEB2AA06</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[System.out.println("Script2 
run...");]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:intermediateCatchEvent id="_EAB2BE48-6748-4C2E-91E1-D27C080E96FA" 
drools:bgcolor="#f5deb3" drools:selectable="true" drools:bordercolor="#a0522d" 
drools:boundaryca="" name="Sub-signal2">
+        <bpmn2:incoming>_52E875AC-A9EA-41CF-A168-3C02CEB2AA06</bpmn2:incoming>
+        <bpmn2:outgoing>_AA209FC7-33F3-483C-ABAB-541246AD4445</bpmn2:outgoing>
+        <bpmn2:signalEventDefinition id="_pgP6tXTaEeaoApuNXeI-uQ" 
signalRef="signal3"/>
+      </bpmn2:intermediateCatchEvent>
+      <bpmn2:endEvent id="_BCAF7A70-3871-44F5-9E24-1A87D436FF93" 
drools:bgcolor="#ff6347" drools:selectable="true" name="">
+        <bpmn2:incoming>_AA209FC7-33F3-483C-ABAB-541246AD4445</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="_87AD2D24-CFFC-4352-BC76-DA18AE611768" 
drools:bgcolor="#000000" drools:selectable="true" 
sourceRef="_41A836D9-83C2-4B6B-A2CB-FB392E62C6EA" 
targetRef="_9C6C7F2A-9459-40DE-9675-DDA5CB1A0CD6"/>
+      <bpmn2:sequenceFlow id="_4099F2E8-745B-4C8A-81F5-177D8B3D09A3" 
drools:bgcolor="#000000" drools:selectable="true" 
sourceRef="_9C6C7F2A-9459-40DE-9675-DDA5CB1A0CD6" 
targetRef="_9BE0054F-3EA1-415D-80F5-3DB0770FA1C0"/>
+      <bpmn2:sequenceFlow id="_C970DF27-4230-4477-9D81-0C34636CE8BB" 
drools:bgcolor="#000000" drools:selectable="true" 
sourceRef="_9BE0054F-3EA1-415D-80F5-3DB0770FA1C0" 
targetRef="_87B4E535-4BA2-4F83-9F9A-CD147B67C6DE"/>
+      <bpmn2:sequenceFlow id="_52E875AC-A9EA-41CF-A168-3C02CEB2AA06" 
drools:bgcolor="#000000" drools:selectable="true" 
sourceRef="_87B4E535-4BA2-4F83-9F9A-CD147B67C6DE" 
targetRef="_EAB2BE48-6748-4C2E-91E1-D27C080E96FA"/>
+      <bpmn2:sequenceFlow id="_AA209FC7-33F3-483C-ABAB-541246AD4445" 
drools:bgcolor="#000000" drools:selectable="true" 
sourceRef="_EAB2BE48-6748-4C2E-91E1-D27C080E96FA" 
targetRef="_BCAF7A70-3871-44F5-9E24-1A87D436FF93"/>
+    </bpmn2:subProcess>
+  </bpmn2:process>
+  <bpmndi:BPMNDiagram id="_pgP6tnTaEeaoApuNXeI-uQ">
+    <bpmndi:BPMNPlane id="_pgP6t3TaEeaoApuNXeI-uQ" 
bpmnElement="project2.myerrorprocess">
+      <bpmndi:BPMNShape id="_pgP6uHTaEeaoApuNXeI-uQ" 
bpmnElement="processStartEvent">
+        <dc:Bounds height="30.0" width="30.0" x="120.0" y="165.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_pgP6uXTaEeaoApuNXeI-uQ" 
bpmnElement="_C17A804A-5140-4FF4-9F27-3608B2F8D4A3">
+        <dc:Bounds height="80.0" width="100.0" x="195.0" y="140.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="_pgP6unTaEeaoApuNXeI-uQ" 
bpmnElement="_39010054-5D46-4E8C-A9FA-64E46B4E293A">
+        <di:waypoint xsi:type="dc:Point" x="135.0" y="180.0"/>
+        <di:waypoint xsi:type="dc:Point" x="245.0" y="180.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_pgP6u3TaEeaoApuNXeI-uQ" 
bpmnElement="_A55CA959-D4DA-403D-8F0B-2078F58D2DDE">
+        <dc:Bounds height="30.0" width="30.0" x="339.0" y="165.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="_pgP6vHTaEeaoApuNXeI-uQ" 
bpmnElement="_FCC2871C-1D99-46E5-BE85-294F2F5EC58A">
+        <di:waypoint xsi:type="dc:Point" x="245.0" y="180.0"/>
+        <di:waypoint xsi:type="dc:Point" x="354.0" y="180.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_pgP6vXTaEeaoApuNXeI-uQ" 
bpmnElement="_D5BCD39D-61A8-49BA-8AC1-477D27500F0D">
+        <dc:Bounds height="28.0" width="28.0" x="431.0" y="166.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="_pgQhwHTaEeaoApuNXeI-uQ" 
bpmnElement="_05EE3913-3EAD-424B-92DC-6465CFA11A50">
+        <di:waypoint xsi:type="dc:Point" x="354.0" y="180.0"/>
+        <di:waypoint xsi:type="dc:Point" x="445.0" y="180.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_pgQhwXTaEeaoApuNXeI-uQ" 
bpmnElement="_AB7869E8-1143-43A1-8F62-EB0FEE4E131D">
+        <dc:Bounds height="169.0" width="595.0" x="75.0" y="255.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_pgQhwnTaEeaoApuNXeI-uQ" 
bpmnElement="_41A836D9-83C2-4B6B-A2CB-FB392E62C6EA">
+        <dc:Bounds height="30.0" width="30.0" x="90.0" y="321.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_pgQhw3TaEeaoApuNXeI-uQ" 
bpmnElement="_9C6C7F2A-9459-40DE-9675-DDA5CB1A0CD6">
+        <dc:Bounds height="80.0" width="100.0" x="165.0" y="296.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_pgQhxHTaEeaoApuNXeI-uQ" 
bpmnElement="_9BE0054F-3EA1-415D-80F5-3DB0770FA1C0">
+        <dc:Bounds height="30.0" width="30.0" x="315.0" y="321.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_pgQhxXTaEeaoApuNXeI-uQ" 
bpmnElement="_87B4E535-4BA2-4F83-9F9A-CD147B67C6DE">
+        <dc:Bounds height="80.0" width="100.0" x="395.0" y="296.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_pgQhxnTaEeaoApuNXeI-uQ" 
bpmnElement="_EAB2BE48-6748-4C2E-91E1-D27C080E96FA">
+        <dc:Bounds height="30.0" width="30.0" x="525.0" y="321.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_pgQhx3TaEeaoApuNXeI-uQ" 
bpmnElement="_BCAF7A70-3871-44F5-9E24-1A87D436FF93">
+        <dc:Bounds height="28.0" width="28.0" x="600.0" y="323.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="_pgQhyHTaEeaoApuNXeI-uQ" 
bpmnElement="_87AD2D24-CFFC-4352-BC76-DA18AE611768">
+        <di:waypoint xsi:type="dc:Point" x="30.0" y="81.0"/>
+        <di:waypoint xsi:type="dc:Point" x="140.0" y="81.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="_pgQhyXTaEeaoApuNXeI-uQ" 
bpmnElement="_4099F2E8-745B-4C8A-81F5-177D8B3D09A3">
+        <di:waypoint xsi:type="dc:Point" x="140.0" y="81.0"/>
+        <di:waypoint xsi:type="dc:Point" x="255.0" y="81.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="_pgQhynTaEeaoApuNXeI-uQ" 
bpmnElement="_C970DF27-4230-4477-9D81-0C34636CE8BB">
+        <di:waypoint xsi:type="dc:Point" x="255.0" y="81.0"/>
+        <di:waypoint xsi:type="dc:Point" x="370.0" y="81.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="_pgQhy3TaEeaoApuNXeI-uQ" 
bpmnElement="_52E875AC-A9EA-41CF-A168-3C02CEB2AA06">
+        <di:waypoint xsi:type="dc:Point" x="370.0" y="81.0"/>
+        <di:waypoint xsi:type="dc:Point" x="465.0" y="81.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="_pgQhzHTaEeaoApuNXeI-uQ" 
bpmnElement="_AA209FC7-33F3-483C-ABAB-541246AD4445">
+        <di:waypoint xsi:type="dc:Point" x="465.0" y="81.0"/>
+        <di:waypoint xsi:type="dc:Point" x="577.0" y="336.0"/>
+        <di:waypoint xsi:type="dc:Point" x="577.0" y="337.0"/>
+        <di:waypoint xsi:type="dc:Point" x="539.0" y="82.0"/>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+  <bpmn2:relationship id="_pgQhzXTaEeaoApuNXeI-uQ" type="BPSimData">
+    <bpmn2:extensionElements>
+      <bpsim:BPSimData>
+        <bpsim:Scenario xsi:type="bpsim:Scenario" id="default" 
name="Simulationscenario">
+          <bpsim:ScenarioParameters xsi:type="bpsim:ScenarioParameters" 
baseTimeUnit="min"/>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_39010054-5D46-4E8C-A9FA-64E46B4E293A" id="_pgQhznTaEeaoApuNXeI-uQ">
+            <bpsim:ControlParameters xsi:type="bpsim:ControlParameters">
+              <bpsim:Probability xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="100.0"/>
+              </bpsim:Probability>
+            </bpsim:ControlParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_AA209FC7-33F3-483C-ABAB-541246AD4445" id="_pgQhz3TaEeaoApuNXeI-uQ">
+            <bpsim:ControlParameters xsi:type="bpsim:ControlParameters">
+              <bpsim:Probability xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="100.0"/>
+              </bpsim:Probability>
+            </bpsim:ControlParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_87AD2D24-CFFC-4352-BC76-DA18AE611768" id="_pgQh0HTaEeaoApuNXeI-uQ">
+            <bpsim:ControlParameters xsi:type="bpsim:ControlParameters">
+              <bpsim:Probability xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="100.0"/>
+              </bpsim:Probability>
+            </bpsim:ControlParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_4099F2E8-745B-4C8A-81F5-177D8B3D09A3" id="_pgQh0XTaEeaoApuNXeI-uQ">
+            <bpsim:ControlParameters xsi:type="bpsim:ControlParameters">
+              <bpsim:Probability xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="100.0"/>
+              </bpsim:Probability>
+            </bpsim:ControlParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_FCC2871C-1D99-46E5-BE85-294F2F5EC58A" id="_pgQh0nTaEeaoApuNXeI-uQ">
+            <bpsim:ControlParameters xsi:type="bpsim:ControlParameters">
+              <bpsim:Probability xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="100.0"/>
+              </bpsim:Probability>
+            </bpsim:ControlParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_87B4E535-4BA2-4F83-9F9A-CD147B67C6DE" id="_pgQh03TaEeaoApuNXeI-uQ">
+            <bpsim:TimeParameters xsi:type="bpsim:TimeParameters">
+              <bpsim:ProcessingTime xsi:type="bpsim:Parameter">
+                <bpsim:UniformDistribution max="10.0" min="5.0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:CostParameters xsi:type="bpsim:CostParameters">
+              <bpsim:UnitCost xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="0.0"/>
+              </bpsim:UnitCost>
+            </bpsim:CostParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_52E875AC-A9EA-41CF-A168-3C02CEB2AA06" id="_pgQh1HTaEeaoApuNXeI-uQ">
+            <bpsim:ControlParameters xsi:type="bpsim:ControlParameters">
+              <bpsim:Probability xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="100.0"/>
+              </bpsim:Probability>
+            </bpsim:ControlParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_D5BCD39D-61A8-49BA-8AC1-477D27500F0D" id="_pgQh1XTaEeaoApuNXeI-uQ">
+            <bpsim:TimeParameters xsi:type="bpsim:TimeParameters">
+              <bpsim:ProcessingTime xsi:type="bpsim:Parameter">
+                <bpsim:UniformDistribution max="10.0" min="5.0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_9C6C7F2A-9459-40DE-9675-DDA5CB1A0CD6" id="_pgQh1nTaEeaoApuNXeI-uQ">
+            <bpsim:TimeParameters xsi:type="bpsim:TimeParameters">
+              <bpsim:ProcessingTime xsi:type="bpsim:Parameter">
+                <bpsim:UniformDistribution max="10.0" min="5.0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:CostParameters xsi:type="bpsim:CostParameters">
+              <bpsim:UnitCost xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="0.0"/>
+              </bpsim:UnitCost>
+            </bpsim:CostParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_C17A804A-5140-4FF4-9F27-3608B2F8D4A3" id="_pgQh13TaEeaoApuNXeI-uQ">
+            <bpsim:TimeParameters xsi:type="bpsim:TimeParameters">
+              <bpsim:ProcessingTime xsi:type="bpsim:Parameter">
+                <bpsim:UniformDistribution max="10.0" min="5.0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:CostParameters xsi:type="bpsim:CostParameters">
+              <bpsim:UnitCost xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="0.0"/>
+              </bpsim:UnitCost>
+            </bpsim:CostParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_AB7869E8-1143-43A1-8F62-EB0FEE4E131D" id="_pgQh2HTaEeaoApuNXeI-uQ">
+            <bpsim:TimeParameters xsi:type="bpsim:TimeParameters">
+              <bpsim:ProcessingTime xsi:type="bpsim:Parameter">
+                <bpsim:UniformDistribution max="10.0" min="5.0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:CostParameters xsi:type="bpsim:CostParameters">
+              <bpsim:UnitCost xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="0.0"/>
+              </bpsim:UnitCost>
+            </bpsim:CostParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_EAB2BE48-6748-4C2E-91E1-D27C080E96FA" id="_pgQh2XTaEeaoApuNXeI-uQ">
+            <bpsim:TimeParameters xsi:type="bpsim:TimeParameters">
+              <bpsim:ProcessingTime xsi:type="bpsim:Parameter">
+                <bpsim:UniformDistribution max="10.0" min="5.0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ControlParameters xsi:type="bpsim:ControlParameters">
+              <bpsim:Probability xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="100.0"/>
+              </bpsim:Probability>
+            </bpsim:ControlParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_C970DF27-4230-4477-9D81-0C34636CE8BB" id="_pgQh2nTaEeaoApuNXeI-uQ">
+            <bpsim:ControlParameters xsi:type="bpsim:ControlParameters">
+              <bpsim:Probability xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="100.0"/>
+              </bpsim:Probability>
+            </bpsim:ControlParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_41A836D9-83C2-4B6B-A2CB-FB392E62C6EA" id="_pgQh23TaEeaoApuNXeI-uQ">
+            <bpsim:TimeParameters xsi:type="bpsim:TimeParameters">
+              <bpsim:ProcessingTime xsi:type="bpsim:Parameter">
+                <bpsim:UniformDistribution max="10.0" min="5.0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ControlParameters xsi:type="bpsim:ControlParameters">
+              <bpsim:Probability xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="100.0"/>
+              </bpsim:Probability>
+            </bpsim:ControlParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_BCAF7A70-3871-44F5-9E24-1A87D436FF93" id="_pgQh3HTaEeaoApuNXeI-uQ">
+            <bpsim:TimeParameters xsi:type="bpsim:TimeParameters">
+              <bpsim:ProcessingTime xsi:type="bpsim:Parameter">
+                <bpsim:UniformDistribution max="10.0" min="5.0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="processStartEvent" id="_pgQh3XTaEeaoApuNXeI-uQ">
+            <bpsim:TimeParameters xsi:type="bpsim:TimeParameters">
+              <bpsim:ProcessingTime xsi:type="bpsim:Parameter">
+                <bpsim:UniformDistribution max="10.0" min="5.0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ControlParameters xsi:type="bpsim:ControlParameters">
+              <bpsim:Probability xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="100.0"/>
+              </bpsim:Probability>
+            </bpsim:ControlParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_05EE3913-3EAD-424B-92DC-6465CFA11A50" id="_pgQh3nTaEeaoApuNXeI-uQ">
+            <bpsim:ControlParameters xsi:type="bpsim:ControlParameters">
+              <bpsim:Probability xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="100.0"/>
+              </bpsim:Probability>
+            </bpsim:ControlParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_9BE0054F-3EA1-415D-80F5-3DB0770FA1C0" id="_pgQh33TaEeaoApuNXeI-uQ">
+            <bpsim:TimeParameters xsi:type="bpsim:TimeParameters">
+              <bpsim:ProcessingTime xsi:type="bpsim:Parameter">
+                <bpsim:UniformDistribution max="10.0" min="5.0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ControlParameters xsi:type="bpsim:ControlParameters">
+              <bpsim:Probability xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="100.0"/>
+              </bpsim:Probability>
+            </bpsim:ControlParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters xsi:type="bpsim:ElementParameters" 
elementRef="_A55CA959-D4DA-403D-8F0B-2078F58D2DDE" id="_pgQh4HTaEeaoApuNXeI-uQ">
+            <bpsim:TimeParameters xsi:type="bpsim:TimeParameters">
+              <bpsim:ProcessingTime xsi:type="bpsim:Parameter">
+                <bpsim:UniformDistribution max="10.0" min="5.0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ControlParameters xsi:type="bpsim:ControlParameters">
+              <bpsim:Probability xsi:type="bpsim:Parameter">
+                <bpsim:FloatingParameter value="100.0"/>
+              </bpsim:Probability>
+            </bpsim:ControlParameters>
+          </bpsim:ElementParameters>
+        </bpsim:Scenario>
+      </bpsim:BPSimData>
+    </bpmn2:extensionElements>
+    <bpmn2:source>_pgP6sHTaEeaoApuNXeI-uQ</bpmn2:source>
+    <bpmn2:target>_pgP6sHTaEeaoApuNXeI-uQ</bpmn2:target>
+  </bpmn2:relationship>
+</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-IntermediateThrowEventMessageWithTransformation.bpmn2
 
b/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-IntermediateThrowEventMessageWithTransformation.bpmn2
deleted file mode 100755
index bc22ee935a..0000000000
--- 
a/jbpm/jbpm-tools/jbpm-tools-maven-plugin/src/test/resources/unit/project/src/main/bpmn/BPMN2-IntermediateThrowEventMessageWithTransformation.bpmn2
+++ /dev/null
@@ -1,87 +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="http://www.example.org/MinimalExample";
-             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: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="_xItem" structureRef="String" />
-
-  <itemDefinition id="_2_MessageType" structureRef="String" />
-  <message id="_2_Message" itemRef="_2_MessageType" />
-
-  <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"/>
-
-    <!-- nodes -->
-    <startEvent id="_1" name="StartProcess" />
-    <intermediateThrowEvent id="_2" name="MessageEvent" >
-      <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>
-      </inputSet>
-      <messageEventDefinition messageRef="_2_Message"/>
-    </intermediateThrowEvent>
-    <endEvent id="_3" name="EndEvent" />
-
-    <!-- connections -->
-    <sequenceFlow id="_1-_2" sourceRef="_1" targetRef="_2" />
-    <sequenceFlow id="_2-_3" sourceRef="_2" targetRef="_3" />
-
-  </process>
-
-  <bpmndi:BPMNDiagram>
-    <bpmndi:BPMNPlane bpmnElement="MessageIntermediateEvent" >
-      <bpmndi:BPMNShape bpmnElement="_1" >
-        <dc:Bounds x="16" y="16" width="48" height="48" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape bpmnElement="_2" >
-        <dc:Bounds x="96" y="16" width="131" height="48" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape bpmnElement="_3" >
-        <dc:Bounds x="262" y="15" width="48" height="48" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge bpmnElement="_1-_2" >
-        <di:waypoint x="40" y="40" />
-        <di:waypoint x="161" y="40" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge bpmnElement="_2-_3" >
-        <di:waypoint x="161" y="40" />
-        <di:waypoint x="286" y="39" />
-      </bpmndi:BPMNEdge>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-
-</definitions>
\ No newline at end of file


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

Reply via email to