本文将介绍如何基于 bpmn-js 打造一款媲美甚至超越官方的 Flowable 流程设计器,支持丰富的自定义属性、事件监听、与后端无缝联动等功能。为什么选择 bpmn-js? bpmn-js 是 Camunda 团队开源的一款 BPMN 2.0 图形建模工具,具有如下优势:原生支持 BPMN 2.0 标准支持建模与渲染可扩展性强(可定制 palette、renderer、moddle 补偿、参数中间事件:消息、定时、升级、条件、补偿、信号、参数结束事件:结束、消息、升级、错误、补偿、信号、终止子流程:引用流程、子流程、临时子流程、事件子流程、事务子流程示例效果图(建议附带)预览地址:bpmn-js
2.1.3 Web框架 https://www.djangoproject.com/ PyCharm 2018.2.4 可视化开发工具 http://www.jetbrains.com/pycharm/ BPMN-JS 3.2.2 BPMN前端插件 https://github.com/bpmn-io/bpmn-js 项目截图 项目开发 功能模块 这是一个Python版本,Java版本功能已经基本开发完毕,需要进行功能迁移 # 动静分离 Nginx 处理静态请求 location /static { root /www/bpmn/; } } 演示 以下是基于 bpmn-js
bpmn_demo --template vue cd bpmn_demo npm install npm run dev 创建完成后,我们先来装上 bpmn.js 所需要的依赖,一共是三个依赖: bpmn-js bpmn-js-properties-panel 这是 bpmn-js 的属性面板,流程图中的每一个节点都有属性,如果需要配置这些数据,就需要用到这个依赖,小伙伴们看看下图中右边的部分,就是这个依赖实现的功能 <script setup> import { onMounted} from 'vue'; import BpmnModeler from 'bpmn-js/lib/Modeler' 配置完成后,还要记得在 main.js 中引入样式文件,如下: 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
这里要用到BPMN.js[3],可以很方便的将bpmn-js集成进 vue 项目,可以访问官方 demo 页[4]进行体验。 核心用法如下: import BpmnViewer from 'bpmn-js'; import testXML from '. 大致流程如下: import Modeler from 'bpmn-js/lib/Modeler' this.modeler = new Modeler({ container: '#canvas' 并且介绍了如何使用bpmn-js来绘制业务流程。不仅支持导入、导出,还支持「Undo」、「Redo」。 后续会将bpmn-js相关知识进行沉淀与总结,持续更新中。
推荐阅读 G6快速上手[9] vue之G6上手 demo[10] G6语雀文档[11] 3.3 bpmn-js ❝官方介绍:一个BPMN 2.0渲染工具包和Web建模器。 bpmn-js 是依赖两个重要的库如下? /vue-g6-editor [11] G6语雀文档: https://www.yuque.com/antv/g6/fvuhbz [12] 官网链接: https://bpmn.io/toolkit/bpmn-js
推荐阅读 G6快速上手 vue之G6上手 demo G6语雀文档 3.3 bpmn-js 官方介绍:一个BPMN 2.0渲染工具包和Web建模器。 我们看看下面这个实际例子基于BPMN的业务流程图(请假流程) bpmn-js 是依赖两个重要的库如下?
功能上支持逻辑结构图、思维导图、组织结构图、目录组织图四种结构,鱼骨图笔者尝试了,但没做出来(尴尬),另外支持主题设置、节点拖拽等,界面如下: 流程图 流程图也做了两种,一种是使用bpmn-js做的BPMN 流程图,基本使用比较简单,但是找半天没有找到详细的文档,它的官方示例看着还不错,但是也没找到源码,最终也没有完全实现出它的效果: 在用bpmn-js做完后又发现了一个更强大的流程图框架mxgraph,虽然现在这个项目已经停止更新了
目前主流的流程设计器有 Activiti-Modeler,mxGraph,bpmn-js 等,下面来做一个简单介绍。 bpmn-js 正在努力成为 Camunda BPM 的一部分。bpmn-js 使用 Web 建模工具可以很方便的构建 BPMN 图表,可以把 BPMN 图表嵌入到你的项目中,容易扩展。 bpmn-js 是基于原生 js 开发,支持集成到 vue、react 等开源框架中。
BPMN模块提供了基于BPMN规范进行流程定义和可视化的能力,流程可视化基于bpmn-js,其本质为提供了将BPMN格式流程定义转换为JDEasyFlow格式的能力。
3.前端渲染引擎化设计前端不是简单的iframe嵌套,而是整合了数十种优秀的开源渲染库,统一封装为可扩展的格式平台:PDF.js(PDF)epub.js(EPUB)bpmn-js(BPMN)Three.js
实现方式:集成bpmn-js或LogicFlow作为流程设计器前端流程定义存储为BPMN2.0XML或自定义JSON流程引擎采用Camunda或自研轻量级状态机引擎每个流程节点可绑定:业务实体(如工单)
性能测试详细文章见:https://lowcode.blog.csdn.net/article/details/109030329 三、选型推荐 推荐大家使用camunda(流程引擎)+bpmn-js(
推荐使用camunda和bpmn-js(流程设计器)组合,camunda在功能方面比flowable、activiti流程引擎强大,性能和稳定性更突出一些。 术因分享而日新,每获新知,喜溢心扉。
spec/DD/20100524/DI" id="Definitions_0pbqtyh" targetNamespace="http://bpmn.io/schema/bpmn" exporter="bpmn-js