Bpmn.js 简介

908 阅读1分钟
bpmn.js 是一个BPMN2.0渲染工具包和web建模器,使得画流程图的功能在前端完成

它使用JavaScript 编写,在不需要后台服务器支持下 的前提下向现代浏览器内嵌入BPMN2.0流程图

image.png

|工具包|bpmn.io

FlowableCamunda 是什么?

都是 工作流引擎

image.png

都是 基于 activiti 衍生出来的 版本,包括很多其他引擎(类如BPMN)

预览xml-viewer ex:

<!--BPMN diagram container -->
<div id='canvas'></div>
<!-- replace CDN url with local bpmn-js path -->
<script src="https://unpkg.com/bpmn-js/dist/bpmn-viewer.development.js"></script>
<script>
// the diagram you are going to display
const bpmnXMl ;
const viewwe = new BpmnJs({container:'#canvas'});
try{
await viewer.importXML(bpmnXML)
viewer.get('canvas').zoom('fit-viewport')
}catch(err){

}
</script>

viewer.importXML APi to display a pre-loaded BPMN 2.0 diagram.  importing 过程是异步的,通过 回调通知 结果,完成后,通过 viewer.get获取 图表服务

Modeler 建模器

1、isntall bpmn-js

npm install bpmn-js

2、 import && new

import Modeler from 'bpmn-js/lib/modeler';
const modeler = new Modeler({container:'#canvas'});
try {
await modeler.importXML(bpmnXML)

}catch(err)

3、 添加 styleSheets
4、 需要 打包 例如 webpack

Hook into Life-Cycle Event

modeler.on('commandStack.changed', () => { 
// user modeled something or 
// performed an undo/redo operation 
}); 
modeler.on('element.changed', (event) => { 
const element = event.element;
// the element was changed by the user
});

使用 on 在事件队列中注册事件,销毁事件,需要使用 off

扩展建模器 additionalModules``Viewer

import OriginModule from 'diagram-js-origin';
// create a modeler
const modeler = new Modeler({ 
container: '#canvas', 
additionalModules: [ OriginModule, require('./custom-rules'), 
require('./custom-context-pad') ] });

再添加亿点点就出来了

image.png

image.png

全网最详bpmn.js教材-基础篇 - 简书 (jianshu.com)