NonInterruptingUtil.js 985 B

123456789101112131415161718192021222324252627282930313233
  1. import { isEventSubProcess } from '../../../../util/DiUtil';
  2. import { getBusinessObject, is } from '../../../../util/ModelUtil';
  3. export const NON_INTERRUPTING_EVENT_TYPES = [
  4. 'bpmn:MessageEventDefinition',
  5. 'bpmn:TimerEventDefinition',
  6. 'bpmn:EscalationEventDefinition',
  7. 'bpmn:ConditionalEventDefinition',
  8. 'bpmn:SignalEventDefinition'
  9. ];
  10. export function canBeNonInterrupting(shape) {
  11. const businessObject = getBusinessObject(shape);
  12. if (
  13. !is(businessObject, 'bpmn:BoundaryEvent') &&
  14. !(is(businessObject, 'bpmn:StartEvent') && isEventSubProcess(businessObject.$parent))
  15. ) {
  16. return false;
  17. }
  18. const eventDefinitions = businessObject.get('eventDefinitions');
  19. if (!eventDefinitions || !eventDefinitions.length) {
  20. return false;
  21. }
  22. return NON_INTERRUPTING_EVENT_TYPES.some(event => is(eventDefinitions[0], event));
  23. }
  24. export function getInterruptingProperty(shape) {
  25. return is(shape, 'bpmn:BoundaryEvent') ? 'cancelActivity' : 'isInterrupting';
  26. }