public void signal(ActivityExecution execution, String signalName, Object signalData) throws Exception { if (LegacyBehavior.signalCancelBoundaryEvent(signalName)) { // join compensating executions if (!execution.hasChildren()) { leave(execution); } else { ((ExecutionEntity)execution).forceUpdate(); } } else { super.signal(execution, signalName, signalData); } }
protected ActivityBehavior parseBoundaryCancelEventDefinition(Element cancelEventDefinition, ActivityImpl activity) { activity.getProperties().set(BpmnProperties.TYPE, ActivityTypes.BOUNDARY_CANCEL); LegacyBehavior.parseCancelBoundaryEvent(activity); ActivityImpl transaction = (ActivityImpl) activity.getEventScope(); if (transaction.getActivityBehavior() != null && transaction.getActivityBehavior() instanceof MultiInstanceActivityBehavior) { transaction = transaction.getActivities().get(0); } if (!"transaction".equals(transaction.getProperty(BpmnProperties.TYPE.getName()))) { addError("boundary event with cancelEventDefinition only supported on transaction subprocesses", cancelEventDefinition); } // ensure there is only one cancel boundary event for (ActivityImpl sibling : activity.getFlowScope().getActivities()) { if ("cancelBoundaryCatch".equals(sibling.getProperty(BpmnProperties.TYPE.getName())) && sibling != activity && sibling.getEventScope() == transaction) { addError("multiple boundary events with cancelEventDefinition not supported on same transaction subprocess", cancelEventDefinition); } } // find all cancel end events for (ActivityImpl childActivity : transaction.getActivities()) { ActivityBehavior activityBehavior = childActivity.getActivityBehavior(); if (activityBehavior != null && activityBehavior instanceof CancelEndEventActivityBehavior) { ((CancelEndEventActivityBehavior) activityBehavior).setCancelBoundaryEvent(activity); } } return new CancelBoundaryEventActivityBehavior(); }
protected ActivityBehavior parseBoundaryCancelEventDefinition(Element cancelEventDefinition, ActivityImpl activity) { activity.getProperties().set(BpmnProperties.TYPE, ActivityTypes.BOUNDARY_CANCEL); LegacyBehavior.parseCancelBoundaryEvent(activity); ActivityImpl transaction = (ActivityImpl) activity.getEventScope(); if (transaction.getActivityBehavior() != null && transaction.getActivityBehavior() instanceof MultiInstanceActivityBehavior) { transaction = transaction.getActivities().get(0); } if (!"transaction".equals(transaction.getProperty(BpmnProperties.TYPE.getName()))) { addError("boundary event with cancelEventDefinition only supported on transaction subprocesses", cancelEventDefinition); } // ensure there is only one cancel boundary event for (ActivityImpl sibling : activity.getFlowScope().getActivities()) { if ("cancelBoundaryCatch".equals(sibling.getProperty(BpmnProperties.TYPE.getName())) && sibling != activity && sibling.getEventScope() == transaction) { addError("multiple boundary events with cancelEventDefinition not supported on same transaction subprocess", cancelEventDefinition); } } // find all cancel end events for (ActivityImpl childActivity : transaction.getActivities()) { ActivityBehavior activityBehavior = childActivity.getActivityBehavior(); if (activityBehavior != null && activityBehavior instanceof CancelEndEventActivityBehavior) { ((CancelEndEventActivityBehavior) activityBehavior).setCancelBoundaryEvent(activity); } } return new CancelBoundaryEventActivityBehavior(); }
public void signal(ActivityExecution execution, String signalName, Object signalData) throws Exception { if (LegacyBehavior.signalCancelBoundaryEvent(signalName)) { // join compensating executions if (!execution.hasChildren()) { leave(execution); } else { ((ExecutionEntity)execution).forceUpdate(); } } else { super.signal(execution, signalName, signalData); } }
protected ActivityBehavior parseBoundaryCancelEventDefinition(Element cancelEventDefinition, ActivityImpl activity) { activity.getProperties().set(BpmnProperties.TYPE, ActivityTypes.BOUNDARY_CANCEL); LegacyBehavior.parseCancelBoundaryEvent(activity); ActivityImpl transaction = (ActivityImpl) activity.getEventScope(); if (transaction.getActivityBehavior() != null && transaction.getActivityBehavior() instanceof MultiInstanceActivityBehavior) { transaction = transaction.getActivities().get(0); } if (!"transaction".equals(transaction.getProperty(BpmnProperties.TYPE.getName()))) { addError("boundary event with cancelEventDefinition only supported on transaction subprocesses", cancelEventDefinition); } // ensure there is only one cancel boundary event for (ActivityImpl sibling : activity.getFlowScope().getActivities()) { if ("cancelBoundaryCatch".equals(sibling.getProperty(BpmnProperties.TYPE.getName())) && sibling != activity && sibling.getEventScope() == transaction) { addError("multiple boundary events with cancelEventDefinition not supported on same transaction subprocess", cancelEventDefinition); } } // find all cancel end events for (ActivityImpl childActivity : transaction.getActivities()) { ActivityBehavior activityBehavior = childActivity.getActivityBehavior(); if (activityBehavior != null && activityBehavior instanceof CancelEndEventActivityBehavior) { ((CancelEndEventActivityBehavior) activityBehavior).setCancelBoundaryEvent(activity); } } return new CancelBoundaryEventActivityBehavior(); }
public void signal(ActivityExecution execution, String signalName, Object signalData) throws Exception { if (LegacyBehavior.signalCancelBoundaryEvent(signalName)) { // join compensating executions if (!execution.hasChildren()) { leave(execution); } else { ((ExecutionEntity)execution).forceUpdate(); } } else { super.signal(execution, signalName, signalData); } }