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     

相关内容

热门资讯

aapoker俱乐部!aa扑克... aapoker俱乐部!aa扑克平台的机制,(aa poker)切实是有挂(详细辅助高科技教程);1、...
透视了解(云扑克德州)德扑之星... 透视了解(云扑克德州)德扑之星ai代打(透视)好像真的有挂(详细辅助详细教程)1、不需要AI权限,帮...
透视有挂(WpK)微扑克ai辅... 透视有挂(WpK)微扑克ai辅助器苹果版(透视)详细辅助切实教程(原来真的是有挂)1、进入游戏-大厅...
aapoker透视辅助!aap... aapoker透视辅助!aapoker软件app,(AaPOKER)真是是真的有挂(详细辅助玩家教你...
透视美元局(德州机器人)智星德... 透视美元局(德州机器人)智星德州菠萝有挂吗(透视)都是存在有挂(详细辅助2025新版总结)1、起透看...
透视透视(wpK)微扑克辅助挂... 透视透视(wpK)微扑克辅助挂(透视)详细辅助技巧教程(果然是真的有挂)进入游戏-大厅左侧-新手福利...
aapoker俱乐部!aapo... aapoker俱乐部!aapoker下载教程,(aa扑克)原来存在有挂(详细辅助大神讲解);1、aa...
透视安卓版(德州nzt)德州A... 透视安卓版(德州nzt)德州AI智能辅助机器人(透视)确实有挂(详细辅助教你教程)1、许多玩家不知道...
透视代打(微扑克)wpk德州透... 透视代打(微扑克)wpk德州透视辅助(透视)详细辅助教你攻略(其实真的是有挂);亲,关键说明,wpk...
透视透视挂(wepower德州... 透视透视挂(wepower德州)德州ai辅助软件(透视)确实真的是有挂(详细辅助技巧教程);一、德州...