DiUtil.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import {
  2. is,
  3. getBusinessObject,
  4. getDi
  5. } from './ModelUtil';
  6. import {
  7. some
  8. } from 'min-dash';
  9. /**
  10. * @typedef {import('../model/Types').Element} Element
  11. * @typedef {import('../model/Types').ModdleElement} ModdleElement
  12. */
  13. /**
  14. * @param {Element} element
  15. * @param {ModdleElement} [di]
  16. *
  17. * @return {boolean}
  18. */
  19. export function isExpanded(element, di) {
  20. if (is(element, 'bpmn:CallActivity')) {
  21. return false;
  22. }
  23. if (is(element, 'bpmn:SubProcess')) {
  24. di = di || getDi(element);
  25. if (di && is(di, 'bpmndi:BPMNPlane')) {
  26. return true;
  27. }
  28. return di && !!di.isExpanded;
  29. }
  30. if (is(element, 'bpmn:Participant')) {
  31. return !!getBusinessObject(element).processRef;
  32. }
  33. return true;
  34. }
  35. /**
  36. * @param {Element} element
  37. *
  38. * @return {boolean}
  39. */
  40. export function isHorizontal(element) {
  41. if (!is(element, 'bpmn:Participant') && !is(element, 'bpmn:Lane')) {
  42. return undefined;
  43. }
  44. var isHorizontal = getDi(element).isHorizontal;
  45. if (isHorizontal === undefined) {
  46. return true;
  47. }
  48. return isHorizontal;
  49. }
  50. /**
  51. * @param {Element} element
  52. *
  53. * @return {boolean}
  54. */
  55. export function isInterrupting(element) {
  56. return element && getBusinessObject(element).isInterrupting !== false;
  57. }
  58. /**
  59. * @param {Element} element
  60. *
  61. * @return {boolean}
  62. */
  63. export function isEventSubProcess(element) {
  64. return element && !!getBusinessObject(element).triggeredByEvent;
  65. }
  66. /**
  67. * @param {Element} element
  68. * @param {string} eventType
  69. *
  70. * @return {boolean}
  71. */
  72. export function hasEventDefinition(element, eventType) {
  73. var eventDefinitions = getBusinessObject(element).eventDefinitions;
  74. return some(eventDefinitions, function(event) {
  75. return is(event, eventType);
  76. });
  77. }
  78. /**
  79. * @param {Element} element
  80. *
  81. * @return {boolean}
  82. */
  83. export function hasErrorEventDefinition(element) {
  84. return hasEventDefinition(element, 'bpmn:ErrorEventDefinition');
  85. }
  86. /**
  87. * @param {Element} element
  88. *
  89. * @return {boolean}
  90. */
  91. export function hasEscalationEventDefinition(element) {
  92. return hasEventDefinition(element, 'bpmn:EscalationEventDefinition');
  93. }
  94. /**
  95. * @param {Element} element
  96. *
  97. * @return {boolean}
  98. */
  99. export function hasCompensateEventDefinition(element) {
  100. return hasEventDefinition(element, 'bpmn:CompensateEventDefinition');
  101. }