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     

相关内容

热门资讯

一分钟了解(线上wpk德州ai... 相信很多朋友都在电脑上玩过德州之星辅助挂吧,但是很多朋友都在抱怨用电脑玩起来不方便。为此小编给大家带...
黑科技辅助“wepoke智能a... 黑科技辅助“wepoke智能ai”Wepoke辅助器(辅助挂)竟然是真的有挂(有挂规律)-哔哩哔哩1...
2分钟细说“wpk到底有没有外... 2分钟细说“wpk到底有没有外挂”wpk ai辅助(wpK)确实是有挂(有挂秘籍)-哔哩哔哩1、很好...
分享开挂内幕(德州ai软件购买... 您好,德州ai软件购买这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在...
黑科技智能ai“wepoke透... 黑科技智能ai“wepoke透明黑科技”wepoke是不是有辅助(透视)总是是真的有挂(有挂教学)-...
实测发现“wpk ai辅助”w... 1、实测发现“wpk ai辅助”wpk辅助器安装(WpK)往昔存在有挂(讲解有挂)-哔哩哔哩;该软件...
必看攻略(德州ai辅助软件)德... 此外,数据分析德州(德州ai辅助软件)辅助神器app还具备辅助透视行为开挂功能,通过对客户德州ai辅...
黑科技辅助“wepoke辅助插... 黑科技辅助“wepoke辅助插件”wepoke有挂吗蓝鸟(黑科技ai)都是是真的有挂(有挂功能)-哔...
热门推荐“wpk最新黑科技”w... 热门推荐“wpk最新黑科技”wpk有ai吗(wpK)从来真的是有挂(了解有挂)-哔哩哔哩您好,wpk...
推荐一款(德州辅助神器软件)德... 推荐一款(德州辅助神器软件)德州之星伙牌(固有有挂)-哔哩哔哩;实战中需综合运用上述技巧,并根据牌桌...