camunda-bpmn-js 5.6.2 → 5.7.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.
- package/dist/base-modeler.development.js +294 -147
- package/dist/base-modeler.production.min.js +2 -2
- package/dist/base-navigated-viewer.development.js +92 -41
- package/dist/base-navigated-viewer.production.min.js +1 -1
- package/dist/base-viewer.development.js +92 -41
- package/dist/base-viewer.production.min.js +1 -1
- package/dist/camunda-cloud-modeler.development.js +1578 -403
- package/dist/camunda-cloud-modeler.production.min.js +6 -6
- package/dist/camunda-cloud-navigated-viewer.development.js +92 -41
- package/dist/camunda-cloud-navigated-viewer.production.min.js +1 -1
- package/dist/camunda-cloud-viewer.development.js +92 -41
- package/dist/camunda-cloud-viewer.production.min.js +1 -1
- package/dist/camunda-platform-modeler.development.js +294 -147
- package/dist/camunda-platform-modeler.production.min.js +5 -5
- package/dist/camunda-platform-navigated-viewer.development.js +92 -41
- package/dist/camunda-platform-navigated-viewer.production.min.js +1 -1
- package/dist/camunda-platform-viewer.development.js +92 -41
- package/dist/camunda-platform-viewer.production.min.js +1 -1
- package/lib/camunda-cloud/Modeler.js +4 -1
- package/lib/camunda-cloud/features/external-resources/README.md +14 -0
- package/lib/camunda-cloud/features/external-resources/ResourceLoader.d.ts +6 -0
- package/lib/camunda-cloud/features/external-resources/ResourceLoader.js +24 -0
- package/lib/camunda-cloud/features/external-resources/Resources.d.ts +7 -0
- package/lib/camunda-cloud/features/external-resources/Resources.js +19 -0
- package/lib/camunda-cloud/features/external-resources/cmd/ComposedCommandHandler.d.ts +12 -0
- package/lib/camunda-cloud/features/external-resources/cmd/ComposedCommandHandler.js +16 -0
- package/lib/camunda-cloud/features/external-resources/cmd/index.d.ts +4 -0
- package/lib/camunda-cloud/features/external-resources/cmd/index.js +21 -0
- package/lib/camunda-cloud/features/external-resources/handlers/decision/AppendMenuProvider.d.ts +5 -0
- package/lib/camunda-cloud/features/external-resources/handlers/decision/AppendMenuProvider.js +19 -0
- package/lib/camunda-cloud/features/external-resources/handlers/decision/CreateMenuProvider.d.ts +5 -0
- package/lib/camunda-cloud/features/external-resources/handlers/decision/CreateMenuProvider.js +19 -0
- package/lib/camunda-cloud/features/external-resources/handlers/decision/ReplaceMenuProvider.d.ts +5 -0
- package/lib/camunda-cloud/features/external-resources/handlers/decision/ReplaceMenuProvider.js +19 -0
- package/lib/camunda-cloud/features/external-resources/handlers/decision/createElement.d.ts +13 -0
- package/lib/camunda-cloud/features/external-resources/handlers/decision/createElement.js +35 -0
- package/lib/camunda-cloud/features/external-resources/handlers/decision/index.d.ts +8 -0
- package/lib/camunda-cloud/features/external-resources/handlers/decision/index.js +14 -0
- package/lib/camunda-cloud/features/external-resources/handlers/decision/replaceElement.d.ts +15 -0
- package/lib/camunda-cloud/features/external-resources/handlers/decision/replaceElement.js +77 -0
- package/lib/camunda-cloud/features/external-resources/handlers/decision/searchTerms.d.ts +1 -0
- package/lib/camunda-cloud/features/external-resources/handlers/decision/searchTerms.js +6 -0
- package/lib/camunda-cloud/features/external-resources/handlers/form/AppendMenuProvider.d.ts +5 -0
- package/lib/camunda-cloud/features/external-resources/handlers/form/AppendMenuProvider.js +19 -0
- package/lib/camunda-cloud/features/external-resources/handlers/form/CreateMenuProvider.d.ts +5 -0
- package/lib/camunda-cloud/features/external-resources/handlers/form/CreateMenuProvider.js +19 -0
- package/lib/camunda-cloud/features/external-resources/handlers/form/ReplaceMenuProvider.d.ts +5 -0
- package/lib/camunda-cloud/features/external-resources/handlers/form/ReplaceMenuProvider.js +19 -0
- package/lib/camunda-cloud/features/external-resources/handlers/form/createElement.d.ts +9 -0
- package/lib/camunda-cloud/features/external-resources/handlers/form/createElement.js +39 -0
- package/lib/camunda-cloud/features/external-resources/handlers/form/index.d.ts +8 -0
- package/lib/camunda-cloud/features/external-resources/handlers/form/index.js +14 -0
- package/lib/camunda-cloud/features/external-resources/handlers/form/replaceElement.d.ts +15 -0
- package/lib/camunda-cloud/features/external-resources/handlers/form/replaceElement.js +82 -0
- package/lib/camunda-cloud/features/external-resources/handlers/form/searchTerms.d.ts +1 -0
- package/lib/camunda-cloud/features/external-resources/handlers/form/searchTerms.js +6 -0
- package/lib/camunda-cloud/features/external-resources/handlers/process/AppendMenuProvider.d.ts +5 -0
- package/lib/camunda-cloud/features/external-resources/handlers/process/AppendMenuProvider.js +19 -0
- package/lib/camunda-cloud/features/external-resources/handlers/process/CreateMenuProvider.d.ts +5 -0
- package/lib/camunda-cloud/features/external-resources/handlers/process/CreateMenuProvider.js +19 -0
- package/lib/camunda-cloud/features/external-resources/handlers/process/ReplaceMenuProvider.d.ts +5 -0
- package/lib/camunda-cloud/features/external-resources/handlers/process/ReplaceMenuProvider.js +19 -0
- package/lib/camunda-cloud/features/external-resources/handlers/process/createElement.d.ts +14 -0
- package/lib/camunda-cloud/features/external-resources/handlers/process/createElement.js +36 -0
- package/lib/camunda-cloud/features/external-resources/handlers/process/index.d.ts +8 -0
- package/lib/camunda-cloud/features/external-resources/handlers/process/index.js +14 -0
- package/lib/camunda-cloud/features/external-resources/handlers/process/replaceElement.d.ts +16 -0
- package/lib/camunda-cloud/features/external-resources/handlers/process/replaceElement.js +78 -0
- package/lib/camunda-cloud/features/external-resources/handlers/process/searchTerms.d.ts +1 -0
- package/lib/camunda-cloud/features/external-resources/handlers/process/searchTerms.js +6 -0
- package/lib/camunda-cloud/features/external-resources/handlers/util/BaseAppendMenuProvider.d.ts +18 -0
- package/lib/camunda-cloud/features/external-resources/handlers/util/BaseAppendMenuProvider.js +103 -0
- package/lib/camunda-cloud/features/external-resources/handlers/util/BaseCreateMenuProvider.d.ts +17 -0
- package/lib/camunda-cloud/features/external-resources/handlers/util/BaseCreateMenuProvider.js +84 -0
- package/lib/camunda-cloud/features/external-resources/handlers/util/BaseReplaceMenuProvider.d.ts +22 -0
- package/lib/camunda-cloud/features/external-resources/handlers/util/BaseReplaceMenuProvider.js +82 -0
- package/lib/camunda-cloud/features/external-resources/index.d.ts +23 -0
- package/lib/camunda-cloud/features/external-resources/index.js +27 -0
- package/package.json +4 -4
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
} from 'bpmn-js-create-append-anything';
|
|
31
31
|
|
|
32
32
|
import camundaDetailsPopupMenuModule from './features/popup-menu';
|
|
33
|
+
import { DefaultHandlersModule, ResourcesModule } from './features/external-resources';
|
|
33
34
|
|
|
34
35
|
/**
|
|
35
36
|
* @typedef {import('bpmn-js/lib/BaseViewer').BaseViewerOptions} BaseViewerOptions
|
|
@@ -99,7 +100,9 @@ Modeler.prototype._camundaCloudModules = [
|
|
|
99
100
|
variableResolverModule,
|
|
100
101
|
exampleDataPropertiesProviderModule,
|
|
101
102
|
formVariableProviderModule,
|
|
102
|
-
camundaDetailsPopupMenuModule
|
|
103
|
+
camundaDetailsPopupMenuModule,
|
|
104
|
+
DefaultHandlersModule,
|
|
105
|
+
ResourcesModule
|
|
103
106
|
];
|
|
104
107
|
|
|
105
108
|
Modeler.prototype._modules = [].concat(
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# external-resources
|
|
2
|
+
|
|
3
|
+
Define available resources and create linked elements right away in BPMN editor.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
Import the library and include it in `additionalModules`.
|
|
8
|
+
Then, register a resources provider to pass the resources to the handlers.
|
|
9
|
+
|
|
10
|
+
## Principles
|
|
11
|
+
|
|
12
|
+
* The module is extensible. You can pass any resources, and define handlers for them.
|
|
13
|
+
You can also override the default handlers.
|
|
14
|
+
* User is in control. Unlike in element templates, the user can still decide to override any properties set in the handler. The built-in resource handlers are merely helpers to create standard BPMN elements.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export class ResourceLoader {
|
|
2
|
+
static $inject = [ 'eventBus', 'resources' ];
|
|
3
|
+
|
|
4
|
+
constructor(eventBus, resources) {
|
|
5
|
+
this._resources = resources;
|
|
6
|
+
this._providers = [];
|
|
7
|
+
|
|
8
|
+
eventBus.on('diagram.init', () => {
|
|
9
|
+
this.reload();
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
register(resourceProvider) {
|
|
14
|
+
this._providers.push(resourceProvider);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
reload() {
|
|
18
|
+
const combined = this._providers.reduce((resources, provider) => {
|
|
19
|
+
return resources.concat(provider.getResources());
|
|
20
|
+
}, []);
|
|
21
|
+
|
|
22
|
+
this._resources.set(combined);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export class Resources {
|
|
2
|
+
static $inject = [ 'config.resources' ];
|
|
3
|
+
|
|
4
|
+
constructor(resources) {
|
|
5
|
+
this._resources = resources || [];
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
set(resources) {
|
|
9
|
+
this._resources = resources;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
getAll() {
|
|
13
|
+
return this._resources;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
filter(fn) {
|
|
17
|
+
return this._resources.filter(fn);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command handler to compose multiple commands into a single command.
|
|
3
|
+
* It allows to use facades like `BpmnReplace` and `Modeling` while retaining
|
|
4
|
+
* single undo/redo feature.
|
|
5
|
+
*/
|
|
6
|
+
export class ComposedCommandHandler {
|
|
7
|
+
constructor(commandStack: any);
|
|
8
|
+
preExecute(context: any): void;
|
|
9
|
+
}
|
|
10
|
+
export namespace ComposedCommandHandler {
|
|
11
|
+
let $inject: string[];
|
|
12
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command handler to compose multiple commands into a single command.
|
|
3
|
+
* It allows to use facades like `BpmnReplace` and `Modeling` while retaining
|
|
4
|
+
* single undo/redo feature.
|
|
5
|
+
*/
|
|
6
|
+
export class ComposedCommandHandler {
|
|
7
|
+
constructor(commandStack) {
|
|
8
|
+
this._commandStack = commandStack;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
preExecute(context) {
|
|
12
|
+
context.command();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
ComposedCommandHandler.$inject = [ 'commandStack' ];
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
forEach
|
|
3
|
+
} from 'min-dash';
|
|
4
|
+
|
|
5
|
+
import { ComposedCommandHandler } from './ComposedCommandHandler.js';
|
|
6
|
+
|
|
7
|
+
const HANDLERS = {
|
|
8
|
+
'external-resources.composed-command': ComposedCommandHandler
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
export default function CommandInitializer(eventBus, commandStack) {
|
|
13
|
+
|
|
14
|
+
eventBus.on('diagram.init', function() {
|
|
15
|
+
forEach(HANDLERS, function(handler, id) {
|
|
16
|
+
commandStack.registerHandler(id, handler);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
CommandInitializer.$inject = [ 'eventBus', 'commandStack' ];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createElement } from './createElement.js';
|
|
2
|
+
import { searchTerms } from './searchTerms.js';
|
|
3
|
+
import { BaseAppendMenuProvider } from '../util/BaseAppendMenuProvider.js';
|
|
4
|
+
|
|
5
|
+
export class AppendMenuProvider extends BaseAppendMenuProvider {
|
|
6
|
+
static $inject = [
|
|
7
|
+
'injector'
|
|
8
|
+
];
|
|
9
|
+
|
|
10
|
+
constructor(injector) {
|
|
11
|
+
super(injector, {
|
|
12
|
+
resourceType: 'dmnDecision',
|
|
13
|
+
groupName: 'Decisions',
|
|
14
|
+
className: 'bpmn-icon-business-rule-task',
|
|
15
|
+
createElement: (resource, bpmnFactory) => createElement(resource, bpmnFactory),
|
|
16
|
+
search: searchTerms
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createElement } from './createElement.js';
|
|
2
|
+
import { searchTerms } from './searchTerms.js';
|
|
3
|
+
import { BaseCreateMenuProvider } from '../util/BaseCreateMenuProvider.js';
|
|
4
|
+
|
|
5
|
+
export class CreateMenuProvider extends BaseCreateMenuProvider {
|
|
6
|
+
static $inject = [
|
|
7
|
+
'injector'
|
|
8
|
+
];
|
|
9
|
+
|
|
10
|
+
constructor(injector) {
|
|
11
|
+
super(injector, {
|
|
12
|
+
resourceType: 'dmnDecision',
|
|
13
|
+
groupName: 'Decisions',
|
|
14
|
+
className: 'bpmn-icon-business-rule-task',
|
|
15
|
+
createElement: (resource, bpmnFactory) => createElement(resource, bpmnFactory),
|
|
16
|
+
search: searchTerms
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
package/lib/camunda-cloud/features/external-resources/handlers/decision/ReplaceMenuProvider.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { replaceElement } from './replaceElement.js';
|
|
2
|
+
import { searchTerms } from './searchTerms.js';
|
|
3
|
+
import { BaseReplaceMenuProvider } from '../util/BaseReplaceMenuProvider.js';
|
|
4
|
+
|
|
5
|
+
export class ReplaceMenuProvider extends BaseReplaceMenuProvider {
|
|
6
|
+
static $inject = [
|
|
7
|
+
'injector'
|
|
8
|
+
];
|
|
9
|
+
|
|
10
|
+
constructor(injector) {
|
|
11
|
+
super(injector, {
|
|
12
|
+
resourceType: 'dmnDecision',
|
|
13
|
+
groupName: 'Decisions',
|
|
14
|
+
className: 'bpmn-icon-business-rule-task',
|
|
15
|
+
replaceElement: (element, resource, injector) => replaceElement(element, resource, injector),
|
|
16
|
+
search: searchTerms
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param resource
|
|
3
|
+
* @param bpmnFactory
|
|
4
|
+
*/
|
|
5
|
+
export function createElement(
|
|
6
|
+
resource: Decision,
|
|
7
|
+
bpmnFactory: import("bpmn-js/lib/features/modeling/BpmnFactory").default
|
|
8
|
+
): any;
|
|
9
|
+
export type Decision = {
|
|
10
|
+
type: "dmnDecision";
|
|
11
|
+
name: string;
|
|
12
|
+
decisionId: string;
|
|
13
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {{
|
|
3
|
+
* type: 'dmnDecision',
|
|
4
|
+
* name: string,
|
|
5
|
+
* decisionId: string
|
|
6
|
+
* }} Decision
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @param {Decision} resource
|
|
11
|
+
* @param {import('bpmn-js/lib/features/modeling/BpmnFactory').default} bpmnFactory
|
|
12
|
+
*/
|
|
13
|
+
export function createElement(resource, bpmnFactory) {
|
|
14
|
+
return createDecisionTask(resource, bpmnFactory);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function createDecisionTask(resource, bpmnFactory) {
|
|
18
|
+
const calledElement = createCalledDecision(resource, bpmnFactory);
|
|
19
|
+
const extensionElements = bpmnFactory.create('bpmn:ExtensionElements', {
|
|
20
|
+
values: [
|
|
21
|
+
calledElement
|
|
22
|
+
]
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
return bpmnFactory.create('bpmn:BusinessRuleTask', {
|
|
26
|
+
name: resource.name,
|
|
27
|
+
extensionElements
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function createCalledDecision(resource, bpmnFactory) {
|
|
32
|
+
return bpmnFactory.create('zeebe:CalledDecision', {
|
|
33
|
+
decisionId: resource.decisionId
|
|
34
|
+
});
|
|
35
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const DecisionHandlerModule: {
|
|
2
|
+
'resources.decisionHandler.create': (string | typeof CreateMenuProvider)[];
|
|
3
|
+
'resources.decisionHandler.append': (string | typeof AppendMenuProvider)[];
|
|
4
|
+
'resources.decisionHandler.replace': (string | typeof ReplaceMenuProvider)[];
|
|
5
|
+
};
|
|
6
|
+
import { CreateMenuProvider } from './CreateMenuProvider';
|
|
7
|
+
import { AppendMenuProvider } from './AppendMenuProvider';
|
|
8
|
+
import { ReplaceMenuProvider } from './ReplaceMenuProvider';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CreateMenuProvider } from './CreateMenuProvider';
|
|
2
|
+
import { AppendMenuProvider } from './AppendMenuProvider';
|
|
3
|
+
import { ReplaceMenuProvider } from './ReplaceMenuProvider';
|
|
4
|
+
|
|
5
|
+
export const DecisionHandlerModule = {
|
|
6
|
+
__init__: [
|
|
7
|
+
'resources.decisionHandler.create',
|
|
8
|
+
'resources.decisionHandler.append',
|
|
9
|
+
'resources.decisionHandler.replace'
|
|
10
|
+
],
|
|
11
|
+
'resources.decisionHandler.create': [ 'type', CreateMenuProvider ],
|
|
12
|
+
'resources.decisionHandler.append': [ 'type', AppendMenuProvider ],
|
|
13
|
+
'resources.decisionHandler.replace': [ 'type', ReplaceMenuProvider ]
|
|
14
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param element
|
|
3
|
+
* @param resource
|
|
4
|
+
* @param injector
|
|
5
|
+
*/
|
|
6
|
+
export function replaceElement(
|
|
7
|
+
element: import("diagram-js/lib/model").Element,
|
|
8
|
+
resource: Decision,
|
|
9
|
+
injector: import("didi").Injector
|
|
10
|
+
): void;
|
|
11
|
+
export type Decision = {
|
|
12
|
+
type: "dmnDecision";
|
|
13
|
+
name: string;
|
|
14
|
+
decisionId: string;
|
|
15
|
+
};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { getBusinessObject, is } from 'bpmn-js/lib/util/ModelUtil';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @typedef {{
|
|
5
|
+
* type: 'dmnDecision',
|
|
6
|
+
* name: string,
|
|
7
|
+
* decisionId: string
|
|
8
|
+
* }} Decision
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @param {import('diagram-js/lib/model').Element} element
|
|
13
|
+
* @param {Decision} resource
|
|
14
|
+
* @param {import('didi').Injector} injector
|
|
15
|
+
*/
|
|
16
|
+
export function replaceElement(element, resource, injector) {
|
|
17
|
+
const bpmnFactory = injector.get('bpmnFactory'),
|
|
18
|
+
bpmnReplace = injector.get('bpmnReplace'),
|
|
19
|
+
modeling = injector.get('modeling'),
|
|
20
|
+
commandStack = injector.get('commandStack');
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
commandStack.execute('external-resources.composed-command', {
|
|
24
|
+
command: replace
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
function replace() {
|
|
29
|
+
const replacedElement = bpmnReplace.replaceElement(element, { type: 'bpmn:BusinessRuleTask' });
|
|
30
|
+
modeling.updateProperties(replacedElement, {
|
|
31
|
+
name: resource.name
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const bo = getBusinessObject(replacedElement);
|
|
35
|
+
|
|
36
|
+
const extensionElements = bo.get('extensionElements');
|
|
37
|
+
|
|
38
|
+
if (!extensionElements) {
|
|
39
|
+
modeling.updateProperties(replacedElement, {
|
|
40
|
+
extensionElements: bpmnFactory.create('bpmn:ExtensionElements', {
|
|
41
|
+
values: [
|
|
42
|
+
createCalledDecision(resource, bpmnFactory)
|
|
43
|
+
]
|
|
44
|
+
})
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const calledDecision = getCalledDecision(replacedElement);
|
|
51
|
+
|
|
52
|
+
if (!calledDecision) {
|
|
53
|
+
modeling.updateModdleProperties(replacedElement, extensionElements, {
|
|
54
|
+
values: [
|
|
55
|
+
...extensionElements.values,
|
|
56
|
+
createCalledDecision(resource, bpmnFactory)
|
|
57
|
+
]
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
modeling.updateModdleProperties(replacedElement, calledDecision, {
|
|
64
|
+
decisionId: resource.decisionId
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function getCalledDecision(element) {
|
|
70
|
+
return element.businessObject?.extensionElements?.values.find(value => is(value, 'zeebe:CalledDecision'));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function createCalledDecision(resource, bpmnFactory) {
|
|
74
|
+
return bpmnFactory.create('zeebe:CalledDecision', {
|
|
75
|
+
decisionId: resource.decisionId
|
|
76
|
+
});
|
|
77
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const searchTerms: string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createElement } from './createElement.js';
|
|
2
|
+
import { searchTerms } from './searchTerms.js';
|
|
3
|
+
import { BaseAppendMenuProvider } from '../util/BaseAppendMenuProvider.js';
|
|
4
|
+
|
|
5
|
+
export class AppendMenuProvider extends BaseAppendMenuProvider {
|
|
6
|
+
static $inject = [
|
|
7
|
+
'injector'
|
|
8
|
+
];
|
|
9
|
+
|
|
10
|
+
constructor(injector) {
|
|
11
|
+
super(injector, {
|
|
12
|
+
resourceType: 'form',
|
|
13
|
+
groupName: 'Forms',
|
|
14
|
+
className: 'bpmn-icon-user-task',
|
|
15
|
+
createElement: (resource, bpmnFactory) => createElement(resource, bpmnFactory),
|
|
16
|
+
search: searchTerms
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createElement } from './createElement.js';
|
|
2
|
+
import { searchTerms } from './searchTerms.js';
|
|
3
|
+
import { BaseCreateMenuProvider } from '../util/BaseCreateMenuProvider.js';
|
|
4
|
+
|
|
5
|
+
export class CreateMenuProvider extends BaseCreateMenuProvider {
|
|
6
|
+
static $inject = [
|
|
7
|
+
'injector'
|
|
8
|
+
];
|
|
9
|
+
|
|
10
|
+
constructor(injector) {
|
|
11
|
+
super(injector, {
|
|
12
|
+
resourceType: 'form',
|
|
13
|
+
groupName: 'Forms',
|
|
14
|
+
className: 'bpmn-icon-user-task',
|
|
15
|
+
createElement: (resource, bpmnFactory) => createElement(resource, bpmnFactory),
|
|
16
|
+
search: searchTerms
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { replaceElement } from './replaceElement.js';
|
|
2
|
+
import { searchTerms } from './searchTerms.js';
|
|
3
|
+
import { BaseReplaceMenuProvider } from '../util/BaseReplaceMenuProvider.js';
|
|
4
|
+
|
|
5
|
+
export class ReplaceMenuProvider extends BaseReplaceMenuProvider {
|
|
6
|
+
static $inject = [
|
|
7
|
+
'injector'
|
|
8
|
+
];
|
|
9
|
+
|
|
10
|
+
constructor(injector) {
|
|
11
|
+
super(injector, {
|
|
12
|
+
resourceType: 'form',
|
|
13
|
+
groupName: 'Forms',
|
|
14
|
+
className: 'bpmn-icon-user-task',
|
|
15
|
+
replaceElement: (element, resource, injector) => replaceElement(element, resource, injector),
|
|
16
|
+
search: searchTerms
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {{
|
|
3
|
+
* type: 'form',
|
|
4
|
+
* name: string,
|
|
5
|
+
* formId: string
|
|
6
|
+
* }} Form
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @param {Form} resource
|
|
11
|
+
*/
|
|
12
|
+
export function createElement(resource, bpmnFactory) {
|
|
13
|
+
return createFormTask(resource, bpmnFactory);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function createFormTask(resource, bpmnFactory) {
|
|
17
|
+
const formDefinition = createFormDefinition(resource, bpmnFactory);
|
|
18
|
+
const extensionElements = bpmnFactory.create('bpmn:ExtensionElements', {
|
|
19
|
+
values: [
|
|
20
|
+
createZeebeUserTask(bpmnFactory),
|
|
21
|
+
formDefinition
|
|
22
|
+
]
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
return bpmnFactory.create('bpmn:UserTask', {
|
|
26
|
+
name: resource.name,
|
|
27
|
+
extensionElements
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function createFormDefinition(resource, bpmnFactory) {
|
|
32
|
+
return bpmnFactory.create('zeebe:FormDefinition', {
|
|
33
|
+
formId: resource.formId
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function createZeebeUserTask(bpmnFactory) {
|
|
38
|
+
return bpmnFactory.create('zeebe:UserTask');
|
|
39
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const FormHandlerModule: {
|
|
2
|
+
'resources.formHandler.create': (string | typeof CreateMenuProvider)[];
|
|
3
|
+
'resources.formHandler.append': (string | typeof AppendMenuProvider)[];
|
|
4
|
+
'resources.formHandler.replace': (string | typeof ReplaceMenuProvider)[];
|
|
5
|
+
};
|
|
6
|
+
import { CreateMenuProvider } from './CreateMenuProvider';
|
|
7
|
+
import { AppendMenuProvider } from './AppendMenuProvider';
|
|
8
|
+
import { ReplaceMenuProvider } from './ReplaceMenuProvider';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CreateMenuProvider } from './CreateMenuProvider';
|
|
2
|
+
import { AppendMenuProvider } from './AppendMenuProvider';
|
|
3
|
+
import { ReplaceMenuProvider } from './ReplaceMenuProvider';
|
|
4
|
+
|
|
5
|
+
export const FormHandlerModule = {
|
|
6
|
+
__init__: [
|
|
7
|
+
'resources.formHandler.create',
|
|
8
|
+
'resources.formHandler.append',
|
|
9
|
+
'resources.formHandler.replace'
|
|
10
|
+
],
|
|
11
|
+
'resources.formHandler.create': [ 'type', CreateMenuProvider ],
|
|
12
|
+
'resources.formHandler.append': [ 'type', AppendMenuProvider ],
|
|
13
|
+
'resources.formHandler.replace': [ 'type', ReplaceMenuProvider ]
|
|
14
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param element
|
|
3
|
+
* @param resource
|
|
4
|
+
* @param injector
|
|
5
|
+
*/
|
|
6
|
+
export function replaceElement(
|
|
7
|
+
element: import("diagram-js/lib/model").Element,
|
|
8
|
+
resource: Form,
|
|
9
|
+
injector: import("didi").Injector
|
|
10
|
+
): void;
|
|
11
|
+
export type Form = {
|
|
12
|
+
type: "form";
|
|
13
|
+
name: string;
|
|
14
|
+
formId: string;
|
|
15
|
+
};
|