We're happy to announce the latest release of our BPMN modeling toolkit allowing you to hook into the import and export lifecycle of XML and SVG. This makes it easier for integrators to perform custom actions along with user triggered save/export actions.
bpmn-js allows you to hook into virtually anything from creating and deleting shapes to things like clicking on elements or changing their properties. Therefore, extending the toolkit or integrating with it is straightforward. So far it was not possible to hook into the lifecycle of importing and exporting XML and exporting SVG. As of this release you can hook into these, too:
const viewer = new Viewer();
viewer.importXML(myXML, (error, warnings) => {
/*
* XML import
*/
viewer.on('import.parse.start', ({ xml }) => {
// manipulate XML before parsing
// make sure to return the manipulated xml
return xml;
});
viewer.on('import.parse.complete', ({ error, definitions, context }) => {
// manipulate definitions before import
// make sure to return the manipulated defintions
return defintions;
});
viewer.on('import.done', ({ error, warnings }) => {
// do something after import
});
/*
* XML export
*/
viewer.on('saveXML.start', ({ definitions }) => {
// manipulate defintions before export
// make sure to return manipulated defintions
return definitions;
});
viewer.on('saveXML.serialized', ({ xml }) => {
// manipulate XML before export
// make sure to return manipulated XML
return xml;
});
viewer.on('saveXML.done', ({ error, xml }) => {
// do something after export
});
/*
* SVG export
*/
viewer.on('saveSVG.start', () => {
// do something before export
});
viewer.on('saveSVG.done', ({ error, svg }) => {
// do something after export
});
});
Other Improvements
This release also ships with a few additional improvements and fixes:
FEAT
: unset businessObject name if emptyFEAT
: resize text annotation on text changeFIX
: apply data store behavior in collaboration onlyFIX
: create/update labels when updating element name viaModeling#updateProperties
Get the latest BPMN toolkit pre-packaged or as source code via npm or unpkg.
Are you passionate about JavaScript, modeling, and the web?
Join Camunda and build modeling tools people .