public void signal(ActivityExecution execution, String signalName, Object signalData) throws Exception { // join compensating executions if(!execution.hasChildren()) { leave(execution); } else { ((ExecutionEntity)execution).forceUpdate(); } }
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(); }
} else { activity.getProperties().set(BpmnProperties.TYPE, ActivityTypes.END_EVENT_CANCEL); activity.setActivityBehavior(new CancelEndEventActivityBehavior()); activity.setActivityStartBehavior(ActivityStartBehavior.INTERRUPT_FLOW_SCOPE); activity.setProperty(PROPERTYNAME_THROWS_COMPENSATION, true);
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(); }
} else { activity.getProperties().set(BpmnProperties.TYPE, ActivityTypes.END_EVENT_CANCEL); activity.setActivityBehavior(new CancelEndEventActivityBehavior()); activity.setActivityStartBehavior(ActivityStartBehavior.INTERRUPT_FLOW_SCOPE); activity.setProperty(PROPERTYNAME_THROWS_COMPENSATION, true);
public void signal(ActivityExecution execution, String signalName, Object signalData) throws Exception { // join compensating executions if(!execution.hasChildren()) { leave(execution); } else { ((ExecutionEntity)execution).forceUpdate(); } }
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(); }
} else { activity.getProperties().set(BpmnProperties.TYPE, ActivityTypes.END_EVENT_CANCEL); activity.setActivityBehavior(new CancelEndEventActivityBehavior()); activity.setActivityStartBehavior(ActivityStartBehavior.INTERRUPT_FLOW_SCOPE); activity.setProperty(PROPERTYNAME_THROWS_COMPENSATION, true);
@Override public void execute(ActivityExecution execution) throws Exception { EnsureUtil .ensureNotNull("Could not find cancel boundary event for cancel end event " + execution.getActivity(), "cancelBoundaryEvent", cancelBoundaryEvent); List<EventSubscriptionEntity> compensateEventSubscriptions = CompensationUtil.collectCompensateEventSubscriptionsForScope(execution); if(compensateEventSubscriptions.isEmpty()) { leave(execution); } else { CompensationUtil.throwCompensationEvent(compensateEventSubscriptions, execution, false); } }
@Override public void execute(ActivityExecution execution) throws Exception { EnsureUtil .ensureNotNull("Could not find cancel boundary event for cancel end event " + execution.getActivity(), "cancelBoundaryEvent", cancelBoundaryEvent); List<EventSubscriptionEntity> compensateEventSubscriptions = CompensationUtil.collectCompensateEventSubscriptionsForScope(execution); if(compensateEventSubscriptions.isEmpty()) { leave(execution); } else { CompensationUtil.throwCompensationEvent(compensateEventSubscriptions, execution, false); } }
public void signal(ActivityExecution execution, String signalName, Object signalData) throws Exception { // join compensating executions if(!execution.hasChildren()) { leave(execution); } else { ((ExecutionEntity)execution).forceUpdate(); } }
@Override public void execute(ActivityExecution execution) throws Exception { EnsureUtil .ensureNotNull("Could not find cancel boundary event for cancel end event " + execution.getActivity(), "cancelBoundaryEvent", cancelBoundaryEvent); List<EventSubscriptionEntity> compensateEventSubscriptions = CompensationUtil.collectCompensateEventSubscriptionsForScope(execution); if(compensateEventSubscriptions.isEmpty()) { leave(execution); } else { CompensationUtil.throwCompensationEvent(compensateEventSubscriptions, execution, false); } }