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

bpmn.js显示流程图

目标:vue2 + 接口返回xml - 弹窗显示流程图 - 根据需求高亮节点

一、安装依赖   

   npm i bpmn-js         添加上的版本是 "bpmn-js": "^11.5.0"

二、只读显示流程图
<div ref="canvas" style="width:100%;height: calc(100vh - 85px);"></div>
import BpmnViewer from "bpmn-js/lib/Viewer";
  data() {
    return {
      bpmnViewer: null,
      loading: false,
    };
  },
  methods: {
    // el-dialog的@open方法 调用接口获取xml - 成功返回则初始化流程图
    handleOpen() {
      this.loading = true;
      processXML(this.bizKey)
        .then(({ code, message, result }) => {
          if (code == 200) {
            if (result.bpmnXml) {
              this.init(result.bpmnXml);
            } else {
              return Promise.reject(new Error("未获取到流程图实例"));
            }
          } else {
            return Promise.reject(new Error(message));
          }
        })
        .catch((error) => {
          this.$message.error(error.message);
          this.loading = false;
        });
    },
    // 初始化流程图实例
    async init(bpmn20Xml) {
      this.bpmnViewer = new BpmnViewer({ container: this.$refs.canvas });
      try {
        const result = await this.bpmnViewer.importXML(bpmn20Xml);
        let canvas = this.bpmnViewer.get("canvas");
        canvas.zoom("fit-viewport");
        /** 高亮节点写在这里 */
        // const { warnings } = result;  console.log(warnings);
      } catch (err) {
        this.$message.error(err.message, err.warnings);
        console.log(err.message, err.warnings);
      } finally {
        this.loading = false;
      }
    },
    // el-dialog的@close方法 销毁流程图实例
    handleClose() {
      this.$emit("handleClose");
      if (this.bpmnViewer) {
        this.bpmnViewer.destroy();
        this.bpmnViewer = null;
      }
    },
  },
三、高亮节点
   const elementRegister = this.bpmnViewer.get("elementRegistry");
   const point = elementRegister.get(this.nodeId); // 根据节点id获取
   canvas.addMarker(point, "highlight"); // 给节点标记样式
  // 如果有scoped,就要加上层级选择器 才能添加上自定义样式
  .highlight .djs-visual > :nth-child(1) {
    stroke: green !important;
    stroke-width: 2.5px !important;
    fill: rgba(0, 80, 0, 0.4) !important;
  }

 

四、删除水印

找到node_modules/bpmn-js/lib/BaseViewer.js文件,将linkMarkup的样式改为visibility:'hidden'

不同版本文件可能写法不同,但方法相同:通过样式修改linkMarkup使其不可见。


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

相关文章:

  • Kafka Offset 自动提交和手动提交 - 漏消费与重复消费
  • 深入解析生成对抗网络(GAN)
  • el-progress进度条框开着时,要实时刷新显示进度条
  • 99.【C语言】数据结构之二叉树的基本知识
  • 基于SpringBoot的“网上书城管理系统”的设计与实现(源码+数据库+文档+PPT)
  • AI Prompt Engineering
  • 重载函数的应用
  • MySQL数据库运维及集群搭建
  • 【10分钟学习Vue自定义指令开发】元素变化指令
  • 【PGCCC】Postgresql 缓存替换算法
  • Python Turtle召唤童年:喜羊羊与灰太狼之灰太狼绘画
  • PHPstudy 全局安装composer +topthink5.1
  • 学习GENTOO系统中的emerge -uDNavg @world命令
  • 解析后端框架学习:从单体应用到微服务架构的进阶之路
  • 网络无人值守批量装机-cobbler
  • 我用豆包MarsCode IDE 做了一个 CSS 权重小组件
  • 力扣 LeetCode 654. 最大二叉树(Day9:二叉树)
  • React第六节 组件属性prop的propTypes类型使用介绍
  • 二进制与网络安全的关系
  • 数据集-目标检测系列- 装甲车 检测数据集 armored_vehicles >> DataBall
  • 【数据分析实战】(一)—— JOJO战力图
  • Logrus IT亮相G-STAR 2024
  • 小白系统安装工具,U盘,在线,备份三合一
  • Dockerhub镜像加速
  • python读取Oracle库并生成API返回Json格式
  • 基于SpringBoot+RabbitMQ完成应⽤通信