bpmn.js一个基于Bpmn 2.0的前端工作流展示和绘制工具
创始人
2025-01-08 16:33:35
0

bpmn.js是由开源工作流引擎camunda内部组织BPMN.IO组织开发的一款基于BPMN 2.0的工作流展示、编辑的web端工具库。由于工作流引擎activiti、flowable、camunda属于同宗分流,其工作流定义格式大致相同,所以我们可以使用bpmn.js完美融合其中任一工作流引擎。

什么是工作流引擎?

这里引用咖啡兔在《Activiti实战》一书中对于工作流的描述:工作流(Work Flow)引擎被广泛应用于各种信息化系统中,将原本散乱甚至混乱的业务梳理后制定成业务规范流程,进而约束业务的规范化处理和运转。需求人员、开发人员共同协作制定了符合BPMN 2.0规范的流程定义,之后将其部署到工作流引擎中,由它自动驱动业务流程的进行。

完整的工作流周期如上:

  • 定义:收集业务需求并转化为流程定义。
  • 发布:在系统管理(平台)中发布流程定义。
  • 执行:体的流程引擎按照事先定义的流程处理路线以任务驱动的方式执行业务流程。
  • 监控:办理任务的同时收集每个任务(Task)的结果,然后根据结果做出相应处理。
  • 优化:根据整个流程的运行过程结果分析问题的根源,然后在此基础上进一步改进,并再次开始一个新的周期。

BPMN是什么?

BPMNBusiness Process Modeling Notation的简写,中文含义是业务流程管理,是一套达成企业各种业务环节整合的全面管理模式。是由BPMN标准组织发布的,其第一版BPMN 1.0规范于2004年5月发布。经过多年的改进新的规范BPMN 2.0于2011年发布。而bpmn.js则是一款由BPMN.IO组织基于BPMN 2.0开发的一款前端开发工具集。

bpmn.js的官网对其定位也是“View and edit BPMN 2.0 diagrams in the browser.”,如下介绍如何在vue3中使用bpmn.j来绘制和展示流程图。

安装

我使用的是vue3接入bpmn.js,可以通过npm对齐进行包管理,需要注意的bpmn.js目前尚未支持typescript,所以开发过程中可能会爆红,直接忽略即可。

$ npm i --save bpmn-js 

展示流程图

bpmn支持使用读取xml文件通过xml文件反解析生成对应的svg组合的方式生成流程图。如下为一个简单的Web展示流程图的样式。

  

展示结果如下:

如上,需要注意的是:

  1. bpmn-js是通过挂载元素实现canvas绘制的,需要在元素加载后进行创建操作。
  2. 导入的xml数据为txt文本数据

流程编辑器

bpmn-js提供 BpmnModeler用于实现流程编辑器的绘制工作。编辑器支持基础流程组件的绘制,同时也可以根据需要自行进行客制化组件的开发。流程编辑器除了主编辑模块还需要右侧的属性板用于配置组件属性等相关信息。

$ npm i --save bpmn-js-properties-panel  camunda-bpmn-moddle

通过将其使用tsx封装,在vue文件中直接调用使用,以便于后期的扩展和自定义组件信息。如下为创建自定义组件 bpmn.tsx

import { defineComponent, markRaw, onMounted } from 'vue' import type { ExtractPublicPropTypes } from 'vue'  // bpmn相关引入 import 'bpmn-js/dist/assets/diagram-js.css' // 左边工具栏以及编辑节点的样式 import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css' import BpmnModeler from 'bpmn-js/lib/Modeler'  // bpmn-js-properties-panel相关 import 'bpmn-js-properties-panel/dist/assets/bpmn-js-properties-panel.css' import propertiesPanelModule from 'bpmn-js-properties-panel' import propertiesProviderModule from 'bpmn-js-properties-panel/lib/provider/camunda' import camundaModdleDescriptor from 'camunda-bpmn-moddle/resources/camunda'  import './bpmn.css'   const bpmnViewProps = {   data: {     type: String,   }, }  export type BpmnViewProps = ExtractPublicPropTypes  const BpmnView = defineComponent((props: BpmnViewProps, context) => {   onMounted(() => {     const containerEl = document.getElementById('container')     const bpmnModeler = markRaw(       new BpmnModeler({         container: containerEl,         // 添加控制板         propertiesPanel: {           parent: '#js-properties-panel',         },         // 右侧属性面板         additionalModules: [propertiesPanelModule, propertiesProviderModule, translateModule],         moddleExtensions: {           camunda: camundaModdleDescriptor,         },       }),     )     bpmnModeler.createDiagram(() => {       bpmnModeler.get('canvas').zoom('fit-viewport')     })   })    return () => {     return (       
) } }) export default BpmnView

组件创建完成后只需在Vue中进行引用即可:

// main.vue     

相关内容

热门资讯

透视黑科技!hhpoker德州... 您好,hhpoker德州机器人这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很...
透视透视!wepoker永久免... 透视透视!wepoker永久免费脚本(透视)底牌透视挂辅助方法(可靠开挂辅助wpk教程)-哔哩哔哩;...
透视智能ai!wepoker插... 透视智能ai!wepoker插件程序激活码(透视)底牌透视挂辅助软件(可靠开挂辅助必胜教程)-哔哩哔...
透视线上!werplan透视挂... 透视线上!werplan透视挂(透视)底牌透视挂辅助程序(可靠开挂辅助必备教程)-哔哩哔哩是一款可以...
透视教学!德州透视脚本(透视)... 透视教学!德州透视脚本(透视)底牌透视挂辅助插件(可靠开挂辅助安装教程)-哔哩哔哩是一款可以让一直输...
透视透视!newpoker脚本... 透视透视!newpoker脚本(透视)底牌透视挂辅助app(可靠开挂辅助安装教程)-哔哩哔哩;new...
透视科技!hhpoker德州机... 您好:hhpoker德州机器人这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多...
透视智能ai!we poker... 透视智能ai!we poker辅助器(透视)底牌透视挂辅助挂(可靠开挂辅助软件教程)-哔哩哔哩;2....
透视计算!德普之星有透视辅助(... 透视计算!德普之星有透视辅助(透视)底牌透视挂辅助软件(可靠开挂辅助系统教程)-哔哩哔哩;亲真的是有...
透视真的!aapoker如何设... 您好,aapoker如何设置胜率这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】...