bpmn.js 流程基本使用

实际项目需求:

我们公司的项目需求不是一般的审批流,而是通过构建流程 然后后端通过Flowable流程引擎执行过后给出结果(比如获取参数执行流程然后输出结果 或者中间穿插分支 根据条件走不通分支 输出结果)

bpmn的实现机理:

Flowable和bpmn之间通过协商好的xml格式数据进行沟通. 
Flowable通过jar包或者自己的api进行解析xml进行流程执行 
bpmn通过页面拖拽输入输出 生成约定好格式的xml (json转化xml  xml转化json)

参考资料:

https://juejin.cn/post/6844904017567416328 bpmn中文非官方教程经验
https://juejin.cn/post/6912331982701592590 自定义文件及自定义属性字段规则

初始化:

import BpmnModeler from 'bpmn-js/lib/Modeler'; // 引入bpmn文件
import customTranslate from '@/translate/customTranslate'; // 引入自定义文件配置(英文转中文)
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';
import {onUpdateJson, onGetAll} from '@/services/process';
import defaultXml from '@/defaultBpmn'; // 引入xml初始化格式(除了节点需要更改其他东西一般不变)
import {bpmnToObj, objToBpmn} from '@/utils/util'; // bpmn转化json  json转化bpmn方法
import flowableModdleDescriptor from '@/flowable/index'; // 自定义标签属性(需要严格遵守 不然会出现字段转化的时候类型错误)
import Elements from '@/palettes'; // 引入自定义节点
import JsonView from 'vue-json-viewer'; // json转化

async mounted() {
    const {uuid} = this.$route.query;
    const res = await onGetAll({processId: uuid});
    const {processJson} = typeof res === 'string' ? JSON.parse(res) : res;
    this.loading = false;
    this.$nextTick(() => {
      this.bpmnModeler = new BpmnModeler({
        container: this.$refs.canvas,
        additionalModules: [{translate: ['value', customTranslate]}, Elements],
        moddleExtensions: {
          flowable: flowableModdleDescriptor
        }
      });
      this.createDiagram(processJson || defaultXml(uuid));  // 初始化流程图
    });
  },
  async createDiagram(xmlStr) {
      try {
        await this.bpmnModeler.importXML(xmlStr);
        this.addEventBusListener();
      } catch (err) {
        console.log(err);
        this.$message.error(err || '数据出错,请联系管理员');
      }
    },
然后根据业务需求 添加节点事件监控(如 获取数据后 开始节点数据如何处理  分支节点和业务节点如何处理)
节点添加点击事件  节点切换如何区分数据如何在节点来回切换之间保存并转化
BPMN.js是一个用于浏览器中的JavaScript库,它允许开发者创建、编辑和可视化Business Process Model and Notation (BPMN)流程图。这是一种标准的图形表示法,广泛应用于业务流程管理领域。 举一个简单的BPMN.js实例,你可以开始创建一个基本的工作流,比如包含开始事件(Start Event)、任务(Task)、决策(Exclusive Gateway)和结束事件(End Event)。首先,你需要在HTML中引入BPMN.js库,然后在JavaScript中初始化画布并定义流程图: ```html <!DOCTYPE html> <html> <head> <script src="path/to/bpmn-js/dist/bpmn.min.js"></script> </head> <body> <div id="bpmn-container" style="width:800px; height:600px;"></div> <script> var bpmnXML = ` <bpmn:definitions xmlns:bpmn="http://www.omg.org/bpmn/20400" id="myProcess"> <bpmn:startEvent id="startEvent"/> <bpmn:task id="task1" name="Task 1"/> <bpmn:exclusiveGateway id="exclusiveGateway"/> <bpmn:endEvent id="endEvent"/> <bpmn:sequenceFlow sourceRef="startEvent" targetRef="task1"/> <bpmn:sequenceFlow sourceRef="task1" targetRef="exclusiveGateway"/> <bpmn:sequenceFlow sourceRef="exclusiveGateway" targetRef="endEvent" conditionalExpression="${true}"/> </bpmn:definitions>`; var canvas = new bpmn.BpmnDiagram(document.getElementById('bpmn-container'), bpmnXML); canvas.render(); </script> </body> </html> ``` 在这个例子中,我们定义了一个从开始到结束的简单流程,用户可以点击各个元素进行交互。`bpmnJS`提供了丰富的API和事件处理机制,让你能够定制更多的功能,如拖放、事件触发等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值