bpmn-js/lib/util/DiUtil.js
Martin Stamm 2b11d871cd feat: decouple DI from businessObject
In the diagram `di` is now accessed via the diagram element, not the
business object. This has the benefit that elements in multiple diagrams
can easily be represented.

Related to https://github.com/bpmn-io/bpmn-js/issues/1472

BREAKING CHANGE:

* Instead of referencing the `di` from the business object, reference it
  from the diagram element representing it.
2021-09-03 15:14:00 +02:00

65 lines
1.4 KiB
JavaScript

import {
is,
getBusinessObject,
getDi
} from './ModelUtil';
import {
forEach
} from 'min-dash';
export function isExpanded(element, di) {
if (is(element, 'bpmn:CallActivity')) {
return false;
}
if (is(element, 'bpmn:SubProcess')) {
di = di || getDi(element);
return di && !!di.isExpanded;
}
if (is(element, 'bpmn:Participant')) {
return !!getBusinessObject(element).processRef;
}
return true;
}
export function isInterrupting(element) {
return element && getBusinessObject(element).isInterrupting !== false;
}
export function isEventSubProcess(element) {
return element && !!getBusinessObject(element).triggeredByEvent;
}
export function hasEventDefinition(element, eventType) {
var bo = getBusinessObject(element),
hasEventDefinition = false;
if (bo.eventDefinitions) {
forEach(bo.eventDefinitions, function(event) {
if (is(event, eventType)) {
hasEventDefinition = true;
}
});
}
return hasEventDefinition;
}
export function hasErrorEventDefinition(element) {
return hasEventDefinition(element, 'bpmn:ErrorEventDefinition');
}
export function hasEscalationEventDefinition(element) {
return hasEventDefinition(element, 'bpmn:EscalationEventDefinition');
}
export function hasCompensateEventDefinition(element) {
return hasEventDefinition(element, 'bpmn:CompensateEventDefinition');
}