如何自己实现一个丝滑的流程图绘制工具(一)vue如何使用

news/2024/5/19 0:49:07 标签: 流程图, vue.js, 前端

背景

项目需求突然叫我实现一个类似processOn一样的在线流程图绘制工具。
这可难倒我了,立马去做调研,在github上找了很多个开源的流程图绘制工具,
对比下来我还是选择了 bpmn-js

原因:
1、他的流程图是涉及到业务的,比如开始事件、结束事件等
2、扩展性很强(这个扩展性也太强了,很多api都是看源码找到,😭)
3、可以实现一个完整的流程事件,并进行模拟
在这里插入图片描述
接下来看看在vue项目中我们如何使用bpmn-js

第一步

引入npm 相关的包

npm install bpmn-js
npm install diagram-js

第二步

项目中使用

<template>
  <div class="containers" tabindex="0">
    <div
      id="canvas"
      ref="canvas"  
      tabindex="0"      
      @contextmenu.prevent
    ></div>
    <a ref="downloadLink" hidden></a>
  </div>
</template>
<script>
import CustomModeler from './config'
export default {
	methods:{
		init() {
		this.bpmnModeler = new CustomModeler({
          container: this.$refs.canvas,
          keyboard: {
            bindTo: this.$el
          },
          // 添加控制板
          propertiesPanel: {
            parent: '#js-properties-panel'
          },
          // 添加控制板
          overlays: {
            defaults: {
              show: { minZoom: 0.1 },
              scale: true
            }
          },
         additionalModules
        })
        this.createNewDiagram()
		},
		 /**
     * bpmn绘制操作
     */
    createNewDiagram() {
       // 将字符串转换成图显示出来
        this.bpmnModeler.importXML(this.xmlData).then(() => {
          this.bpmnModeler.get('canvas').zoom('fit-viewport', 'auto')
        })
       },
	}
}
</script>

config/index.js

import Modeler from 'bpmn-js/lib/Modeler'

import inherits from 'inherits'

import CustomModule from './custom'
import DisableModeling from './custom/disable-modeling'

export default function CustomModeler(options) {
  Modeler.call(this, options)

  this._customElements = []
}

inherits(CustomModeler, Modeler)

CustomModeler.prototype._modules = [].concat(CustomModeler.prototype._modules,
 [CustomModule, DisableModeling])

http://www.niftyadmin.cn/n/4965763.html

相关文章

港联证券|股票风险大吗?股票亏了怎么办?

在股市波动剧烈的时分&#xff0c;很多人会忧虑本身投资是否安全&#xff0c;是否能够获得理想的收益。那么股票危险大吗&#xff1f;股票亏了怎么办&#xff1f;我们准备了相关内容&#xff0c;以供参考。 股票危险大吗&#xff1f; 股票危险大不大并没有一个肯定的答案&…

学会Mybatis框架:一文掌握MyBatis与GitHub插件分页的完美结合【三.分页】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Mybatis的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.Mybatis分页 1. Mybatis自带分页 2…

笔记:transformer系列

1、和其他网络的比较 自注意力机制适合处理长文本&#xff0c;并行度好&#xff0c;在GPU上&#xff0c;CNN和Self-attention性能差不多&#xff0c;在TPU&#xff08;Tensor Processing Uni&#xff09;效果更好。 总结&#xff1a; 自注意力池化层将当做key,value,query来…

C语言学习笔记(完整版)

文章目录 算法算法的基本概念算法的特征算法的优劣 描述算法三种基本结构流程图N-S流程图伪代码 常量和变量了解数据类型常量整形常量实型常量字符型常量转义字符符号常量 变量整形变量实型变量字符型变量 表达式与运算符赋值运算符和赋值表达式变量赋初值强制类型转换 算术运算…

python 无网络安装库的方法

手动复制库文件&#xff1a; 在你的电脑上找到已安装库的文件&#xff0c;通常位于Python的Lib\site-packages目录下。将这些库文件复制到目标电脑的相同位置。请注意&#xff0c;这种方法仅适用于纯Python库&#xff0c;对于依赖于C扩展或其他系统依赖项的库可能无法正常工作。…

Fpgrowth /FP Tree算法原理总结(附测试代码)

引言 Fpgrowth算法又叫fp tree&#xff0c;通俗来讲是计算特征之间关联程度的&#xff0c;Fp树是其核心 FP树&#xff08;Frequent Pattern Tree&#xff09;是一种用于高效挖掘频繁项集的数据结构。它通过将事务数据集转换为一棵树形结构来实现&#xff0c;其中每个节点表示一…

SpringBoot 2.7 集成 Netty 4 解决粘包半包问题

文章目录 1 摘要2 核心代码2.1 Netty 服务端连接器2.2 Netty 客户端连接器2.3 Netty 服务端 Handler2.4 Netty 客户端 Handler 3 推荐参考资料4 Github 源码 1 摘要 Netty 的粘包和半包问题是由于 Netty 在接收消息时无法判断消息是否发送完毕&#xff0c;只能靠读取消息时是否…

【C语言】扫雷游戏(可展开)——超细教学

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;C语言 &#x1f525;该篇将运用数组来实现 扫雷游戏。 目录&#xff1a; &#x1f31f;思路框架测试游戏 &#x1f31f;测试部分函数实现&am…