I’m trying with creating a custom task (custom task of type service task) in the sub menu. With the reference to the articles (ref1, ref2), the source code should be changed in-order to add or remove the menu items.
Is it true or the ReplaceMenuProvider can be extended and pass the override items when create instance of Bpmn. Attached sample code below.
I’ve tried to directly use the ReplaceMenuProvider in additoinalModules by modify TASK name from ReplaceOptions. But it didn’t work out. Is there anything else should be done.?
import * as CustomMenuProvider from 'bpmn-js/lib/features/popup-menu/ReplaceMenuProvider'
loadModeler() {
this.container = document.getElementById('js-drop-zone');
this.modeler = new BpmnJS({
container: '#js-canvas',
keyboard: { bindTo: document },
propertiesPanel: {
parent: '#js-properties-panel'
},
additionalModules: [
propertiesPanelModule,
propertiesProviderModule,
CustomMenuProvider, // <-- used the default provider. Just modified the TASK name from ReplaceOptions
],
replaceMenuProvider: [],
moddleExtensions: {
camunda: camundaModdleDescriptor,
}
});
It’s hard to guess what the issue is. Overriding components should be straight forward. You may have a look at the custom elements example where we make heavy use of overriding components.
import inherits from 'inherits';
import ReplaceMenuProvider from 'bpmn-js/lib/features/popup-menu';
export default function CustomReplaceMenuProvider() {
debugger;
ReplaceMenuProvider.call(this);
console.log("replaceOptions:", this.replaceOptions);
}
inherits(CustomReplaceMenuProvider, ReplaceMenuProvider);
CustomReplaceMenuProvider.$inject = ['popupMenu', 'modeling', 'moddle',
'bpmnReplace', 'rules', 'translate'
];
zone.js:2198 Uncaught TypeError: Object prototype may only be an Object or null: undefined
at create ()
at Function.Object.create (zone.js:2198)
at inherits (inherits_browser.js:5)
at Module…/src/app/bpmn-js/awtCustom/CustomReplaceMenuProvider.js (CustomReplaceMenuProvider.js:8)
at webpack_require (bootstrap:78)
at Module…/src/app/bpmn-js/awtCustom/index.js (index.js:1)
at webpack_require (bootstrap:78)
at Module…/src/app/bpmn-js/bpmn-js.ts (bpmn-js.ts:1)
at webpack_require (bootstrap:78)
at Module…/src/app/flow/bpmn/bpmn.component.ts (main.js:1860)