当前位置: 首页 > article >正文

Vue BPMN Modeler流程图

1、参考地址

git clone https://github.com/evanyangg/vue-bpmn-modeler.git

2、安装bpmn.js

npm install bpmn-js --save

3、使用bpmn.js

<template>
  <div class="containers">
    <div class="canvas" ref="canvas"></div>
  </div>
</template>
<script>
import BpmnModeler from 'bpmn-js/lib/Modeler' // 引入 bpmn-js
export default {
  data () {
    return {
      bpmnModeler: null
    }
  },
  methods: {
    createNewDiagram () {
      const bpmnXmlStr = `
      <?xml version="1.0" encoding="UTF-8"?>
        <bpmn2:definitions xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" id="sample-diagram" targetNamespace="http://bpmn.io/schema/bpmn" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
          <bpmn2:process id="process1567044459787" name="流程1567044459787">
            <bpmn2:documentation>描述</bpmn2:documentation>
            <bpmn2:startEvent id="StartEvent_1" name="开始"/>
          </bpmn2:process>
          <bpmndi:BPMNDiagram id="BPMNDiagram_1">
            <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="process1567044459787">
              <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
                <dc:Bounds x="184" y="64" width="36" height="36"/>
                <bpmndi:BPMNLabel>
                  <dc:Bounds x="191" y="40" width="22" height="14"/>
                </bpmndi:BPMNLabel>
              </bpmndi:BPMNShape>
            </bpmndi:BPMNPlane>
          </bpmndi:BPMNDiagram>
        <processType id="test"/></bpmn2:definitions>
      `
      // 将字符串转换成图显示出来
      this.bpmnModeler.importXML(bpmnXmlStr, (err) => {
        if (err) {
          console.error(err)
        }
      })
    }
  mounted () {
    const canvas = this.$refs.canvas
    // 生成实例
    this.bpmnModeler = new BpmnModeler({
      container: canvas
    })
    this.createNewDiagram() // 新增流程定义
  }
}
</script>
<style lang="scss">
  /*左边工具栏以及编辑节点的样式*/
  @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';
  .containers{
    position: absolute;
    background-color: #ffffff;
    width: 100%;
    height: 100%;
    .canvas{
      width: 100%;
      height: 100%;
    }
    .bjs-powered-by {
      display: none;
    }
  }
</style>

4、监听方法

// 监听节点选择变化
this.modeler.on('selection.changed', (e) => {
    const element = e.newSelection[0]
    console.log(element) 
})

//  监听节点属性变化
this.modeler.on('element.changed', (e) => {
    const { element } = e
    console.log(element) 
})

5、展示效果


http://www.kler.cn/a/454714.html

相关文章:

  • LLM常见面试题(26-30题)--langchain篇
  • LeetCode--347.前k个高频元素(使用优先队列解决)
  • 【WRF模拟】如何得到更佳的WRF模拟效果?
  • SQLite本地数据库的简介和适用场景——集成SpringBoot的图文说明
  • 【已解决】pyinstaller打包ico图片报错:OSError: [WinError 225] 无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。
  • Vue.js 高级组件开发:抽象与高性能架构
  • 安卓 SystemServer 启动流程
  • 24. 解密犯罪时间
  • Unity3D ECS 内存分配器原理
  • 电商矩阵运营服务器怎么选
  • IP协议(网络)
  • 电子应用设计方案75:智能家庭智能锁系统设计
  • WPS中如何为指定区域的表格添加行或者列,同时不影响其它表格?
  • skywalking配置项indexReplicasNumber不生效问题
  • 规则引擎Drools
  • Spring Boot 介绍与应用
  • HTTP代理功能變數名稱解析是什麼?
  • 跨境办公网络问题及其解决思路
  • 气象数据在CASA模型中的应用及实际案例讲解(植被、陆地生态系统、植被净初级生产力NPP、光合作用和呼吸作用、气象数据、MODIS NDVI、遥感)
  • ES elasticsearch-8.17.0-windows-x86_64使用
  • 上门回收小程序如何搭建?有个小程序收破烂也要高端?
  • ChatGPT 在临床药学中的有效性以及人工智能在药物治疗管理中的作用
  • Ubuntu 中安装 RabbitMQ 教程
  • 小程序租赁系统的优势与未来发展潜力分析
  • 【mybatis】通过XML的方式拼接动态sql
  • 智能流程管理:CRM系统助力订单与回款自动化