Element signalEventDefinition = startEventElement.element("signalEventDefinition");
if (isTriggeredByEvent) { // event subprocess
// all start events of an event subprocess share common behavior
EventSubProcessStartEventActivityBehavior activityBehavior = new EventSubProcessStartEventActivityBehavior(startEventActivity.getId());
startEventActivity.setActivityBehavior(activityBehavior);
String isInterrupting = startEventElement.attribute("isInterrupting");
if(isInterrupting != null && (isInterrupting.equals("false")||isInterrupting.equals("FALSE"))) {
activityBehavior.setInterrupting(false);
}
// the scope of the event subscription is the parent of the event
// subprocess (subscription must be created when parent is initialized)
ScopeImpl catchingScope = ((ActivityImpl) scope).getParent();
if (errorEventDefinition != null) {
if(!activityBehavior.isInterrupting()) {
addError("error start event of event subprocess must be interrupting", startEventElement);
}
if (scope.getProperty(PROPERTYNAME_INITIAL) == null) {
scope.setProperty(PROPERTYNAME_INITIAL, startEventActivity);
parseErrorStartEventDefinition(errorEventDefinition, startEventActivity, catchingScope);