camunda-bpmn-js 0.12.0 → 0.13.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +28 -1
  2. package/dist/assets/base-modeler.css +1 -1
  3. package/dist/assets/camunda-platform-modeler.css +2 -1
  4. package/dist/assets/diagram-js.css +82 -78
  5. package/dist/assets/element-templates.css +75 -0
  6. package/dist/assets/properties-panel.css +115 -18
  7. package/dist/base-modeler.development.js +16412 -19783
  8. package/dist/base-modeler.production.min.js +8 -3
  9. package/dist/camunda-cloud-modeler.development.js +12685 -14386
  10. package/dist/camunda-cloud-modeler.production.min.js +8 -3
  11. package/dist/camunda-platform-modeler.development.js +22350 -25352
  12. package/dist/camunda-platform-modeler.production.min.js +8 -3
  13. package/lib/base/Modeler.js +5 -3
  14. package/lib/camunda-cloud/Modeler.js +10 -3
  15. package/lib/camunda-cloud/features/modeling/behavior/CleanUpAssignmentDefinitionBehavior.js +78 -0
  16. package/lib/camunda-cloud/features/modeling/behavior/CreateZeebeCallActivityBehavior.js +2 -2
  17. package/lib/camunda-cloud/features/modeling/behavior/FormDefinitionBehavior.js +2 -2
  18. package/lib/camunda-cloud/features/modeling/behavior/index.js +3 -0
  19. package/lib/camunda-cloud/helper/CalledElementHelper.js +1 -1
  20. package/lib/camunda-cloud/helper/ElementHelper.js +18 -0
  21. package/lib/camunda-cloud/helper/ExtensionElementsHelper.js +17 -0
  22. package/lib/camunda-cloud/helper/FormsHelper.js +5 -5
  23. package/lib/camunda-cloud/helper/InputOutputHelper.js +2 -6
  24. package/lib/camunda-cloud/helper/Utils.js +10 -0
  25. package/lib/camunda-cloud/helper/ZeebeServiceTaskHelper.js +22 -5
  26. package/lib/camunda-platform/Modeler.js +7 -3
  27. package/package.json +9 -8
  28. package/styles/base-modeler.css +1 -1
  29. package/styles/camunda-platform-modeler.css +2 -1
  30. package/dist/assets/bpmn-js-properties-panel.css +0 -778
  31. package/lib/camunda-cloud/features/properties-provider/ZeebePropertiesProvider.js +0 -201
  32. package/lib/camunda-cloud/features/properties-provider/index.js +0 -11
  33. package/lib/camunda-cloud/features/properties-provider/parts/CallActivityProps.js +0 -90
  34. package/lib/camunda-cloud/features/properties-provider/parts/ErrorProps.js +0 -13
  35. package/lib/camunda-cloud/features/properties-provider/parts/FormProps.js +0 -14
  36. package/lib/camunda-cloud/features/properties-provider/parts/HeadersProps.js +0 -52
  37. package/lib/camunda-cloud/features/properties-provider/parts/InputOutputProps.js +0 -8
  38. package/lib/camunda-cloud/features/properties-provider/parts/MessageProps.js +0 -51
  39. package/lib/camunda-cloud/features/properties-provider/parts/MultiInstanceProps.js +0 -25
  40. package/lib/camunda-cloud/features/properties-provider/parts/SequenceFlowProps.js +0 -149
  41. package/lib/camunda-cloud/features/properties-provider/parts/TaskDefinitionProps.js +0 -135
  42. package/lib/camunda-cloud/features/properties-provider/parts/TimerEventProps.js +0 -77
  43. package/lib/camunda-cloud/features/properties-provider/parts/implementation/ElementReferenceExtensionElementProperty.js +0 -110
  44. package/lib/camunda-cloud/features/properties-provider/parts/implementation/FormDefinition.js +0 -207
  45. package/lib/camunda-cloud/features/properties-provider/parts/implementation/Headers.js +0 -208
  46. package/lib/camunda-cloud/features/properties-provider/parts/implementation/InputOutput.js +0 -274
  47. package/lib/camunda-cloud/features/properties-provider/parts/implementation/InputOutputParameter.js +0 -147
  48. package/lib/camunda-cloud/features/properties-provider/parts/implementation/MultiInstanceLoopCharacteristics.js +0 -176
  49. package/lib/camunda-cloud/features/properties-provider/parts/implementation/OutputParameterToggle.js +0 -97
  50. package/lib/camunda-cloud/features/properties-provider/parts/implementation/TimerDurationDefinition.js +0 -69
  51. package/lib/camunda-cloud/features/properties-provider/parts/implementation/TimerEventDefinition.js +0 -132
@@ -13,8 +13,10 @@ import signavioCompatModule from 'bpmn-js-signavio-compat';
13
13
 
14
14
  import disableCollapsedSubprocessModule from 'bpmn-js-disable-collapsed-subprocess';
15
15
 
16
- import propertiesPanelModule from 'bpmn-js-properties-panel';
17
- import propertiesProviderModule from 'bpmn-js-properties-panel/lib/provider/bpmn';
16
+ import {
17
+ BpmnPropertiesPanelModule as propertiesPanelModule,
18
+ BpmnPropertiesProviderModule as bpmnPropertiesProviderModule
19
+ } from 'bpmn-js-properties-panel';
18
20
 
19
21
  /**
20
22
  *
@@ -42,7 +44,7 @@ Modeler.prototype._extensionModules = [
42
44
  signavioCompatModule,
43
45
  disableCollapsedSubprocessModule,
44
46
  propertiesPanelModule,
45
- propertiesProviderModule
47
+ bpmnPropertiesProviderModule
46
48
  ];
47
49
 
48
50
  Modeler.prototype._modules = [].concat(
@@ -12,7 +12,10 @@ import popupMenuModule from './features/popup-menu';
12
12
 
13
13
  import rulesModule from './features/rules';
14
14
 
15
- import propertiesProviderModule from './features/properties-provider';
15
+ import {
16
+ ZeebePropertiesProviderModule as zeebePropertiesProviderModule,
17
+ ZeebeDescriptionProvider
18
+ } from 'bpmn-js-properties-panel';
16
19
 
17
20
  import zeebeModdle from 'zeebe-bpmn-moddle/resources/zeebe.json';
18
21
 
@@ -30,6 +33,10 @@ export default function Modeler(options = {}) {
30
33
  moddleExtensions: {
31
34
  zeebe: zeebeModdle,
32
35
  ...options.moddleExtensions
36
+ },
37
+ propertiesPanel: {
38
+ description: ZeebeDescriptionProvider,
39
+ ...options.propertiesPanel
33
40
  }
34
41
  };
35
42
 
@@ -44,11 +51,11 @@ Modeler.prototype._camundaCloudModules = [
44
51
  paletteModule,
45
52
  popupMenuModule,
46
53
  rulesModule,
47
- propertiesProviderModule,
54
+ zeebePropertiesProviderModule,
48
55
  zeebeModdleExtension
49
56
  ];
50
57
 
51
58
  Modeler.prototype._modules = [].concat(
52
59
  BaseModeler.prototype._modules,
53
60
  Modeler.prototype._camundaCloudModules
54
- );
61
+ );
@@ -0,0 +1,78 @@
1
+ import {
2
+ is
3
+ } from 'bpmn-js/lib/util/ModelUtil';
4
+
5
+ import {
6
+ getBusinessObject
7
+ } from 'bpmn-js/lib/util/ModelUtil';
8
+
9
+ import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';
10
+
11
+ const HIGH_PRIORITY = 5000;
12
+
13
+
14
+ /**
15
+ * Zeebe BPMN behavior for ensuring that there are not empty (ie. without properties)
16
+ * zeebe:assignmentDefinitions after modeling operations. Will also remove related
17
+ * extensionElements, if they remain empty afterwards (could be a seperate
18
+ * behavior in the future, if needed)
19
+ */
20
+ export default class CleanUpBusinessRuleTaskBehavior extends CommandInterceptor {
21
+ constructor(eventBus, modeling) {
22
+ super(eventBus);
23
+
24
+ /**
25
+ * Remove zeebe:assignmentDefinition when it has no defined properties left after the operation
26
+ */
27
+ this.postExecuted([
28
+ 'properties-panel.update-businessobject',
29
+ 'element.updateModdleProperties'
30
+ ] , HIGH_PRIORITY, function(context) {
31
+ const {
32
+ element,
33
+ businessObject,
34
+ moddleElement
35
+ } = context;
36
+
37
+ // (1) harmonize property names from commands
38
+ const assignmentDefintion = businessObject || moddleElement;
39
+
40
+ if (
41
+ is(element, 'bpmn:UserTask')
42
+ && assignmentDefintion
43
+ && is(assignmentDefintion, 'zeebe:AssignmentDefinition')
44
+ && assignmentDefintion.assignee === undefined
45
+ && assignmentDefintion.candidateGroups === undefined
46
+ ) {
47
+ const extensionElements = getBusinessObject(element).extensionElements;
48
+
49
+ // (2) remove zeebe:assignmentDefintion
50
+ removeFromExtensionElements(element, extensionElements, modeling,
51
+ (ele) => !is(ele, 'zeebe:AssignmentDefinition'));
52
+
53
+ // (3) if extensionElements are empty afterwards, remove them as well
54
+ if (extensionElements.values.length === 0) {
55
+ modeling.updateModdleProperties(element, getBusinessObject(element),
56
+ { extensionElements: undefined });
57
+ }
58
+ }
59
+ }, true);
60
+
61
+ }
62
+ }
63
+
64
+ CleanUpBusinessRuleTaskBehavior.$inject = [
65
+ 'eventBus',
66
+ 'modeling'
67
+ ];
68
+
69
+
70
+ // helper ////////////////////
71
+
72
+ function removeFromExtensionElements(element, extensionElements, modeling, filterFun) {
73
+ const values = extensionElements.get('values').filter(filterFun);
74
+
75
+ modeling.updateModdleProperties(element, extensionElements, {
76
+ values
77
+ });
78
+ }
@@ -1,6 +1,6 @@
1
1
  import { has } from 'min-dash';
2
2
 
3
- import elementHelper from 'bpmn-js-properties-panel/lib/helper/ElementHelper';
3
+ import { createElement } from '../../../helper/ElementHelper';
4
4
 
5
5
  import { getCalledElement } from '../../../helper/CalledElementHelper';
6
6
 
@@ -44,7 +44,7 @@ export default class CreateZeebeCallActivityBehavior extends CommandInterceptor
44
44
  let extensionElements = businessObject.get('extensionElements');
45
45
 
46
46
  if (!extensionElements) {
47
- extensionElements = elementHelper.createElement('bpmn:ExtensionElements', { values: [] }, businessObject, bpmnFactory);
47
+ extensionElements = createElement('bpmn:ExtensionElements', { values: [] }, businessObject, bpmnFactory);
48
48
 
49
49
  modeling.updateProperties(shape, { extensionElements });
50
50
  }
@@ -1,7 +1,7 @@
1
1
 
2
2
  import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';
3
3
 
4
- import elementHelper from 'bpmn-js-properties-panel/lib/helper/ElementHelper';
4
+ import { createElement } from '../../../helper/ElementHelper';
5
5
 
6
6
  import {
7
7
  getBusinessObject,
@@ -76,7 +76,7 @@ export default class FormDefinitionBehavior extends CommandInterceptor {
76
76
 
77
77
  // (1) ensure extension elements exists
78
78
  if (!rootExtensionElements) {
79
- rootExtensionElements = elementHelper.createElement('bpmn:ExtensionElements', { values: [] }, rootElement, bpmnFactory);
79
+ rootExtensionElements = createElement('bpmn:ExtensionElements', { values: [] }, rootElement, bpmnFactory);
80
80
 
81
81
  modeling.updateModdleProperties(shape, rootElement, { extensionElements: rootExtensionElements });
82
82
  }
@@ -1,3 +1,4 @@
1
+ import CleanUpAssignmentDefinitionBehavior from './CleanUpAssignmentDefinitionBehavior';
1
2
  import CleanUpBusinessRuleTaskBehavior from './CleanUpBusinessRuleTaskBehavior';
2
3
  import CreateZeebeBoundaryEventBehavior from './CreateZeebeBoundaryEventBehavior';
3
4
  import CreateZeebeCallActivityBehavior from './CreateZeebeCallActivityBehavior';
@@ -7,12 +8,14 @@ import FormDefinitionBehavior from './FormDefinitionBehavior';
7
8
 
8
9
  export default {
9
10
  __init__: [
11
+ 'cleanUpAssignmentDefinitionBehavior',
10
12
  'cleanUpBusinessRuleTaskBehavior',
11
13
  'createZeebeBoundaryEventBehavior',
12
14
  'createZeebeCallActivityBehavior',
13
15
  'updatePropagateAllChildVariablesBehavior',
14
16
  'formDefinitionBehavior'
15
17
  ],
18
+ cleanUpAssignmentDefinitionBehavior: [ 'type', CleanUpAssignmentDefinitionBehavior ],
16
19
  cleanUpBusinessRuleTaskBehavior: [ 'type', CleanUpBusinessRuleTaskBehavior ],
17
20
  createZeebeBoundaryEventBehavior: [ 'type', CreateZeebeBoundaryEventBehavior ],
18
21
  createZeebeCallActivityBehavior: [ 'type', CreateZeebeCallActivityBehavior ],
@@ -2,7 +2,7 @@ import { has } from 'min-dash';
2
2
 
3
3
  import { getOutputParameters } from './InputOutputHelper';
4
4
 
5
- import { getExtensionElements } from 'bpmn-js-properties-panel/lib/helper/ExtensionElementsHelper';
5
+ import { getExtensionElements } from './ExtensionElementsHelper';
6
6
 
7
7
  import {
8
8
  getBusinessObject,
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Creates a new element and set the parent to it
3
+ *
4
+ * @method ElementHelper#createElement
5
+ *
6
+ * @param {String} elementType of the new element
7
+ * @param {Object} properties of the new element in key-value pairs
8
+ * @param {moddle.object} parent of the new element
9
+ * @param {BpmnFactory} factory which creates the new element
10
+ *
11
+ * @returns {djs.model.Base} element which is created
12
+ */
13
+ export function createElement(elementType, properties, parent, factory) {
14
+ var element = factory.create(elementType, properties);
15
+ element.$parent = parent;
16
+
17
+ return element;
18
+ }
@@ -0,0 +1,17 @@
1
+ import { is } from 'bpmn-js/lib/util/ModelUtil';
2
+
3
+ export function getExtensionElements(bo, type) {
4
+ let elements = [];
5
+ const extensionElements = bo.get('extensionElements');
6
+
7
+ if (typeof extensionElements !== 'undefined') {
8
+ const extensionValues = extensionElements.get('values');
9
+ if (typeof extensionValues !== 'undefined') {
10
+ elements = extensionValues.filter(function(value) {
11
+ return is(value, type);
12
+ });
13
+ }
14
+ }
15
+
16
+ return elements;
17
+ }
@@ -1,13 +1,13 @@
1
- import { getExtensionElements } from 'bpmn-js-properties-panel/lib/helper/ExtensionElementsHelper';
1
+ import { getExtensionElements } from './ExtensionElementsHelper';
2
2
 
3
- import elementHelper from 'bpmn-js-properties-panel/lib/helper/ElementHelper';
3
+ import { createElement } from './ElementHelper';
4
4
 
5
5
  import {
6
6
  getBusinessObject,
7
7
  is
8
8
  } from 'bpmn-js/lib/util/ModelUtil';
9
9
 
10
- import { nextId } from 'bpmn-js-properties-panel/lib/Utils';
10
+ import { nextId } from './Utils';
11
11
 
12
12
  import { find } from 'min-dash';
13
13
 
@@ -15,7 +15,7 @@ const USER_TASK_FORM_PREFIX = 'UserTaskForm_';
15
15
 
16
16
 
17
17
  export function createFormDefinition(properties, extensionElements, bpmnFactory) {
18
- return elementHelper.createElement(
18
+ return createElement(
19
19
  'zeebe:FormDefinition',
20
20
  properties,
21
21
  extensionElements,
@@ -32,7 +32,7 @@ export function createFormKey(formId) {
32
32
  }
33
33
 
34
34
  export function createUserTaskForm(properties, extensionElements, bpmnFactory) {
35
- return elementHelper.createElement(
35
+ return createElement(
36
36
  'zeebe:UserTaskForm',
37
37
  properties,
38
38
  extensionElements,
@@ -5,7 +5,7 @@ import {
5
5
 
6
6
  import { isAny } from 'bpmn-js/lib/features/modeling/util/ModelingUtil';
7
7
 
8
- import elementHelper from 'bpmn-js-properties-panel/lib/helper/ElementHelper';
8
+ import { createElement } from './ElementHelper';
9
9
 
10
10
  import { isZeebeServiceTask } from './ZeebeServiceTaskHelper';
11
11
 
@@ -133,10 +133,6 @@ export function areOutputParametersSupported(element) {
133
133
  ]);
134
134
  }
135
135
 
136
- export function createElement(type, parent, factory, properties) {
137
- return elementHelper.createElement(type, properties, parent, factory);
138
- }
139
-
140
136
  export function createIoMapping(parent, bpmnFactory, properties) {
141
- return createElement('zeebe:IoMapping', parent, bpmnFactory, properties);
137
+ return createElement('zeebe:IoMapping', properties, parent, bpmnFactory);
142
138
  }
@@ -0,0 +1,10 @@
1
+ import Ids from 'ids';
2
+
3
+ /**
4
+ * generate a semantic id with given prefix
5
+ */
6
+ export function nextId(prefix) {
7
+ const ids = new Ids([ 32,32,1 ]);
8
+
9
+ return ids.nextPrefixed(prefix);
10
+ }
@@ -1,24 +1,41 @@
1
1
  import {
2
+ getBusinessObject,
2
3
  is
3
4
  } from 'bpmn-js/lib/util/ModelUtil';
4
5
 
5
- import eventDefinitionHelper from 'bpmn-js-properties-panel/lib/helper/EventDefinitionHelper';
6
+ import { forEach } from 'min-dash';
6
7
 
7
8
 
8
9
  export function isZeebeServiceTask(element) {
9
10
  if (!is(element, 'zeebe:ZeebeServiceTask')) return false;
10
11
 
11
12
  if (is(element, 'bpmn:EndEvent') || is(element, 'bpmn:IntermediateThrowEvent')) {
12
- return !!eventDefinitionHelper.getMessageEventDefinition(element);
13
+ return !!getMessageEventDefinition(element);
13
14
  }
14
15
 
15
16
  return true;
16
17
  }
17
18
 
18
19
  export function isMessageEndEvent(element) {
19
- return is(element, 'bpmn:EndEvent') && !!eventDefinitionHelper.getMessageEventDefinition(element);
20
+ return is(element, 'bpmn:EndEvent') && !!getMessageEventDefinition(element);
20
21
  }
21
22
 
22
23
  export function isMessageThrowEvent(element) {
23
- return is(element, 'bpmn:IntermediateThrowEvent') && !!eventDefinitionHelper.getMessageEventDefinition(element);
24
- }
24
+ return is(element, 'bpmn:IntermediateThrowEvent') && !!getMessageEventDefinition(element);
25
+ }
26
+
27
+ function getMessageEventDefinition(element) {
28
+
29
+ var bo = getBusinessObject(element),
30
+ eventDefinition = null;
31
+
32
+ if (bo.eventDefinitions) {
33
+ forEach(bo.eventDefinitions, function(event) {
34
+ if (is(event, 'bpmn:MessageEventDefinition')) {
35
+ eventDefinition = event;
36
+ }
37
+ });
38
+ }
39
+
40
+ return eventDefinition;
41
+ }
@@ -4,12 +4,15 @@ import BaseModeler from '../base/Modeler';
4
4
 
5
5
  import modelingModule from './features/modeling';
6
6
 
7
- import propertiesProviderModule from 'bpmn-js-properties-panel/lib/provider/camunda';
8
-
9
7
  import camundaModdle from 'camunda-bpmn-moddle/resources/camunda.json';
10
8
 
11
9
  import camundaModdleExtension from 'camunda-bpmn-moddle/lib';
12
10
 
11
+ import {
12
+ CamundaPlatformPropertiesProviderModule,
13
+ ElementTemplatesPropertiesProviderModule
14
+ } from 'bpmn-js-properties-panel';
15
+
13
16
 
14
17
  /**
15
18
  *
@@ -33,7 +36,8 @@ inherits(Modeler, BaseModeler);
33
36
  Modeler.prototype._camundaPlatformModules = [
34
37
  camundaModdleExtension,
35
38
  modelingModule,
36
- propertiesProviderModule
39
+ CamundaPlatformPropertiesProviderModule,
40
+ ElementTemplatesPropertiesProviderModule
37
41
  ];
38
42
 
39
43
  Modeler.prototype._modules = [].concat(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camunda-bpmn-js",
3
- "version": "0.12.0",
3
+ "version": "0.13.0-alpha.1",
4
4
  "description": "Embeddable Camunda modeling distributions based on bpmn-js",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -40,18 +40,19 @@
40
40
  "license": "MIT",
41
41
  "dependencies": {
42
42
  "@bpmn-io/align-to-origin": "^0.7.0",
43
- "bpmn-js": "^8.8.2",
43
+ "@bpmn-io/properties-panel": "^0.10.2",
44
+ "bpmn-js": "^8.9.1",
44
45
  "bpmn-js-disable-collapsed-subprocess": "^0.1.3",
45
46
  "bpmn-js-executable-fix": "^0.1.3",
46
- "bpmn-js-properties-panel": "^0.46.0",
47
+ "bpmn-js-properties-panel": "~1.0.0-alpha.1",
47
48
  "bpmn-js-signavio-compat": "^1.2.3",
48
49
  "camunda-bpmn-moddle": "^6.1.1",
49
- "diagram-js": "^7.5.0",
50
+ "diagram-js": "^7.8.2",
50
51
  "diagram-js-minimap": "^2.0.4",
51
52
  "diagram-js-origin": "^1.3.2",
52
53
  "inherits": "^2.0.4",
53
54
  "min-dash": "^3.7.0",
54
- "zeebe-bpmn-moddle": "^0.9.0"
55
+ "zeebe-bpmn-moddle": "^0.10.0"
55
56
  },
56
57
  "devDependencies": {
57
58
  "@rollup/plugin-commonjs": "^17.1.0",
@@ -59,8 +60,8 @@
59
60
  "@rollup/plugin-node-resolve": "^11.1.1",
60
61
  "chai": "^4.2.0",
61
62
  "cross-env": "^7.0.3",
62
- "eslint": "^7.19.0",
63
- "eslint-plugin-bpmn-io": "^0.12.0",
63
+ "eslint": "^7.32.0",
64
+ "eslint-plugin-bpmn-io": "^0.13.0",
64
65
  "execa": "^5.0.0",
65
66
  "istanbul-instrumenter-loader": "^3.0.1",
66
67
  "karma": "^6.3.0",
@@ -75,7 +76,7 @@
75
76
  "karma-sinon-chai": "^2.0.2",
76
77
  "karma-webpack": "^5.0.0",
77
78
  "min-dom": "^3.1.3",
78
- "mocha": "^8.2.1",
79
+ "mocha": "^9.2.0",
79
80
  "mocha-test-container-support": "^0.2.0",
80
81
  "npm-run-all": "^4.1.5",
81
82
  "puppeteer": "^8.0.0",
@@ -1,4 +1,4 @@
1
1
  @import './diagram-js.css';
2
2
  @import './bpmn-font/css/bpmn-embedded.css';
3
3
  @import './diagram-js-minimap.css';
4
- @import './bpmn-js-properties-panel.css';
4
+ @import './properties-panel.css';
@@ -1 +1,2 @@
1
- @import './base-modeler.css';
1
+ @import './base-modeler.css';
2
+ @import './element-templates.css';