前言
Q: bpmn.js是什么? ️
bpmn.js是一个BPMN2.0渲染工具包和web建模器, 使得画流程图的功能在前端来完成.
Q: 我为什么要写该系列的教材? ️
因为公司业务的需要因而要在项目中使用到bpmn.js
,但是由于bpmn.js
的开发者是国外友人, 因此国内对这方面的教材很少, 也没有详细的文档. 所以很多使用方式很多坑都得自己去找.在将其琢磨完之后, 决定写一系列关于它的教材来帮助更多bpmn.js
的使用者或者是期于找到一种好的绘制流程图的开发者. 同时也是自己对其的一种巩固.
由于是系列的文章, 所以更新的可能会比较频繁, 您要是无意间刷到了且不是您所需要的还请谅解.
不求赞不求心❤️. 只希望能对你有一点小小的帮助.
所有教材的github地址: 《bpmn-chinese-document》
bpmn.js基本的使用
这一章节主要是介绍了bpmn.js
最基本的几种实用方式, 适合完全没有接触过bpmn.js
的新手或者想要在vue
项目中使用它的开发者.
通过这一章节的讲解你可以学习到:
bpmn.js最简单的一种使用
使用npm安装bpmn.js
vue中使用bpmn.js
为了方便大家对后面的讲解有一个大概认识, 我们先来看一下使用bpmn.js
画图都有哪些内容:
bpmn.js最简单的一种使用
我们可以直接使用CDN
将bpmn.js
引入到代码中使用:
BPMNJS
(上面的xmlStr.js
以及案例代码在这里LinDaiDai-bpmn-basic-demo)
如上面的案例所示, 我们使用DNS
加速直接引入bpmn.js
, 然后本地指定一个容器(也就是id
为canvas
的那个div
), 接着用bpmn.js
提供的方法importXML
就可以解析xml
字符串生成对应的工作流图了.
打开页面可以看到
使用npm安装bpmn.js
上面提供的使用方式是一种最基本的方式,仅仅是将图展示出来,不能自己绘画也不能操作. 所以在工作中使用更多的还是采用npm
安装到项目中使用. 我们可以使用以下命令进行安装:
npm install --save bpmn-js
在应用程序中使用:
import BpmnViewer from 'bpmn-js';
import testDiagram from './test-diagram.bpmn';
var viewer = new BpmnViewer({
container: '#canvas'
});
viewer.importXML(testDiagram, function(err) {
if (!err) {
console.log('success!');
viewer.get('canvas').zoom('fit-viewport');
} else {
console.log('something went wrong:', err);
}
});
上面的testDiagram
指的是某个bpmn
文件了,而不是第一个案例中的xml
字符串.
官方这边也提供了一个例子, 可以看一下: bpmn-js-example-bunding
vue中使用bpmn.js
在vue
中的使用可以分为以下几个部分:
vue中使用bpmn.js-基础篇
vue中使用bpmn.js-左侧工具栏
vue中使用bpmn.js-右侧属性栏
为了方便讲解, 我先创建一个空的vue
项目(只安装了路由):
vue create vue-bpmn-basic
cd vue-bpmn-basic
npm i vue-router --save-D
注⚠️️
你可以不用本地创建, 此项目地址
LinDaiDai/bpmn-vue-basic
vue中使用bpmn.js-基础篇
我在项目的components
文件夹下创建一个名为basic.vue
的文件, 且配置好路由:
const routes = [
{
path: '/basic',
component: () => import('./../components/basic')
}
]
项目结构如图所示:
- 安装相关依赖
npm i bpmn-js --save-D
- 编写
HTML
代码
// basic.vue
- 编写
JS
代码
// basic.vue
- 编写
CSS
// basic.vue
使用命令npm run start
启动项目, 打开可以看到:
vue中使用bpmn.js-左侧工具栏
左侧工具栏作用: 给图形添加新的节点
如图所示:
要想使用左侧工具栏, 需要在项目中引用相应的样式:
- 在
main.js
中引用css
:
// main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'
Vue.config.productionTip = false
// 以下为bpmn工作流绘图工具的样式
import 'bpmn-js/dist/assets/diagram-js.css' // 左边工具栏以及编辑节点的样式
import 'bpmn-js/dist/assets/bpmn-font/css/bpmn.css'
import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css'
import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css'
new Vue({
router,
render: h => h(App),
}).$mount('#app')
- 页面上引入
propertiesProviderModule
:
// provider.vue
provider.vue
的其他代码片段都和basic.vue
相同.
此时打开页面就发现多了左侧的工具栏, 且可以添加节点.
vue中使用bpmn.js-右侧属性栏
属性栏的作用: 用户在点击图上的节点的时候, 能获取到该节点的属性信息
如图所示:
想要使用右侧的属性栏就得安装上一个名为bpmn-js-properties-panel
的插件了.
- 安装插件
npm i bpmn-js-properties-panel --save-D
- 在
main.js
中引入相应样式:
// main.js
import Vue from 'vue'
...
import 'bpmn-js-properties-panel/dist/assets/bpmn-js-properties-panel.css' // 右边工具栏样式
...
- 在页面中引入
propertiesProviderModule
:
// panel.vue