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

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

背景

项目需求突然叫我实现一个类似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"><divid="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])

相关文章:

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

背景 项目需求突然叫我实现一个类似processOn一样的在线流程图绘制工具。 这可难倒我了&#xff0c;立马去做调研&#xff0c;在github上找了很多个开源的流程图绘制工具&#xff0c; 对比下来我还是选择了 bpmn-js 原因&#xff1a; 1、他的流程图是涉及到业务的&#xff0c…...

ReoGrid.NET集成到winfrom

ReoGrid一个支持excel操作的控件,支持集成到任何winfrom项目内。 先看效果图: 如何使用&#xff1a; 使用ReoGrid自带excel模版设计工具先设计一个模版,设计器如下&#xff1a; 具体例子看官方文档 代码示例如下&#xff1a; var sheet reoGridControl1.CurrentWorksheet; …...

Elasticsearch实现增删改查

调用elasticsearch通常使用restful风格请求&#xff0c;这里记录一些常用的Java API和Postman Url Java API调用Es 1. 查询总文档数 Testvoid getAllCount() { // RestHighLevelClient clientnew RestHighLevelClient(RestClient.builder(new HttpHost("192.168…...

Rust 学习笔记(卷二)

文章目录 Rust 学习笔记&#xff08;卷二&#xff09;八、工程1. package 和 cratepackage 总览包根&#xff08;crate root&#xff09; 2. 模块初识模块单个源文件中的嵌套模块使用具有层级结构的源文件构造嵌套模块 3. 文档4. 使用第三方包5. 打包自己的包 九、标准库十、多…...

android amazon 支付接入

流程&#xff1a; 申请 Amazon 开发者帐号 ---> 在 amazon 控制台添加应用 ---> 添加应用内商品&#xff08;消费类商品&#xff0c;授权类商品&#xff0c;订阅类商品&#xff09;---> 导出 JSON 文件 --->集成 Amazon 支付 ---> 将导出的 JSON 文件 copy 到 …...

Vue2-快速搭建pc端后台管理系统

一.推荐二次开发框架 vue-element-admin Star(84k)vue-antd-admin Star(3.5k) 二.vue-element-admin 官网链接:https://panjiachen.github.io/vue-element-admin-site/zh/ 我这里搭建的是基础模版vue-admin-template(推荐) # 克隆项目 git clone https://github.com/PanJi…...

【产品文档】团队介绍PPT模板

今天和大家免费分享团队介绍的PPT模板。团队介绍是向他人展示团队的实力、专业性和能力的重要方式。通过一个有力的团队介绍&#xff0c;您可以突出团队的成员、经验、技能和取得的成就&#xff0c;从而增加信任、吸引合作伙伴、客户或投资者的兴趣 【模板预览】 动态演示效果…...

组件库的使用和自定义组件

目录 一、组件库介绍 1、什么是组件 2、组件库介绍 3、arco.design 二、组件库的使用 1、快速上手 2、主题定制 3、暗黑模式 4、语言国际化 5、业务常见问题 三、自定义组件 2、组件开发规范 3、示例实践guide-tip 4、业务组件快速托管 一、组件库介绍 1、什么是…...

网站和API支持HTTPS,最好在Nginx上配置

随着我们网站用户的增多&#xff0c;我们会逐渐意识到HTTPS加密的重要性。在不修改现有代码的情况下&#xff0c;要从HTTP升级到HTTPS&#xff0c;让Nginx支持HTTPS是个很好的选择。今天我们来讲下如何从Nginx入手&#xff0c;从HTTP升级到HTTPS&#xff0c;同时支持静态网站和…...

UnitTest笔记: 拓展库DDT的使用

DDT (Data-Drivers- Tests) 允许使用不同的测试数据运行同一个测试用例&#xff0c;展示为不同的测试用例。 第一步&#xff1a; pip安装 ddt 第二步&#xff1a; 创建test_baidu_ddt.py 1. 测试类要使用ddt 修饰 2. 不同形式的参数化&#xff1a; 列表&#xff0c;字典&a…...

裂缝检测,只依赖OPENCV,基于YOLO8S

裂缝检测&#xff0c;只依赖OPENCV&#xff0c;YOLOV8S 现在YOLOV8S训练目标非常方便&#xff0c;可以直接转换成ONNX让OPENCV调用&#xff0c;支持C/PYTHON&#xff0c;原理很简单&#xff0c;自己找博客&#xff0c;有兴趣相互交流...

python编程环境使用技巧3-程序打包pyinstaller

前言 在Python中&#xff0c;打包指的是将Python代码和相关资源&#xff08;如配置文件、图像等&#xff09;整合到一个可执行的文件或安装包中&#xff0c;以便于在其他环境中使用。 下面是使用pyinstaller进行打包的简要步骤&#xff1a; 1-安装pyinstaller&#xff1a;在命…...

Go 自学:defer关键字

我们可以使用defer关键字延迟代码的执行&#xff0c;相当于我们把代码放入一个stack中&#xff0c;遵循last in first out的原则输出代码。 package mainimport ("fmt" )func myDefer() {for i : 0; i < 5; i {defer fmt.Print(i)} }func main() {defer fmt.Prin…...

【云计算】Docker特别版——前端一篇学会

docker学习 文章目录 一、下载安装docker&#xff08;一&#xff09;Windows桌面应用安装&#xff08;二&#xff09;Linux命令安装 二、windows注册登录docker三、Docker的常规操作(一)、基本的 Docker 命令(二)、镜像操作(三)、容器的配置(四)、登录远程仓库 四、镜像管理(一…...

.net使用RabbitMQ小记

使用RabbitMQ的优点 1.性能全面&#xff0c;rabbitmq性能比较全面&#xff0c;是消息中间件的首选 2.高并发&#xff0c;rabbitmq实现语言是天生就具备高并发高可用的erlang语言 3.任务异步处理&#xff0c;将不需要同步处理的并且耗时长的操作由消息队列通知消息接受方进行异步…...

layUI 中 穿梭框无法获取值的细节问题

初始化的时候一定要指定id&#xff0c;不然就会出现无法调用 获得右侧数据和实例重载的方法...

Kaggle回归问题Mercedes——Benz Greener Manufacturing

目录 前言1 题目介绍2 数据清洗3 数据可视化分析4 模型训练5 源码 前言 这是我在大三选修课的课程设计&#xff0c;内容参考了Kaggle上高赞的代码&#xff0c;有详细批注&#xff0c;整体比较基础&#xff0c;结构相对完整&#xff0c;便于初学者学习。这个是一个回归问题&…...

天润融通「微藤大语言模型平台2.0」以知识驱动企业高速增长

8月23日&#xff0c;天润融通&#xff08;又称“天润云”,2167.HK&#xff09;&#xff0c;正式发布「微藤大语言模型平台2.0」。 “大模型企业知识企业知识工程”。 “不能有效记录和管理知识的企业是不能持续进步的。在企业的生产流程中&#xff0c;相比于其他场景&#xff0…...

【BUG】解决安装oracle11g或12C中无法访问临时位置的问题

项目场景&#xff1a; 安装oracle时&#xff0c;到第二步出现oracle11g或12C中无法访问临时位置的问题。 解决方案&#xff1a; 针对客户端安装&#xff0c;在cmd中执行命令&#xff1a;前面加实际路径setup.exe -ignorePrereq -J"-Doracle.install.client.validate.cli…...

2. 使用IDEA创建Spring Boot Hello项目并管理依赖——Maven入门指南

前言&#xff1a;本文将介绍如何使用IDEA创建一个Spring Boot Hello项目&#xff0c;并通过Maven来管理项目的依赖。我们从项目的创建到代码的编写&#xff0c;再到项目的构建和运行&#xff0c;一步步演示了整个过程。 &#x1f680; 作者简介&#xff1a;作为某云服务提供商的…...

电动汽车车队虚拟发电厂的强化学习控制策略探索

电动汽车车队虚拟发电厂的强化学习控制策略 本论文基于 RL 代理的开发&#xff0c;该代理通过家庭环境中的电动汽车充电站管理 VPP。 VPP 的主要优化目标是&#xff1a;填谷、削峰和随时间推移实现零负荷&#xff08;供需负荷平衡&#xff09;。 为实现目标而采取的主要行动是&…...

AI_NovelGenerator:如何在7天内完成传统写作需要3个月的长篇小说创作

AI_NovelGenerator&#xff1a;如何在7天内完成传统写作需要3个月的长篇小说创作 【免费下载链接】AI_NovelGenerator 使用ai生成多章节的长篇小说&#xff0c;自动衔接上下文、伏笔 项目地址: https://gitcode.com/GitHub_Trending/ai/AI_NovelGenerator 问题诊断&…...

别再纠结Seurat版本了!手把手教你用CCA和Harmony搞定单细胞数据整合(附避坑指南)

单细胞数据整合实战&#xff1a;从CCA到Harmony的精准选择与避坑指南 单细胞RNA测序技术正在重塑我们对复杂生物系统的认知边界。当实验室积累了大量单细胞数据集后&#xff0c;如何将这些分散的数据整合成一个连贯的整体&#xff0c;成为每个研究者必须面对的挑战。我曾见证过…...

Vivado项目文件太多分不清?这份FPGA开发必备的“文件后缀速查手册”请收好

Vivado项目文件管理实战指南&#xff1a;从混乱到有序的FPGA开发进阶 每次打开Vivado项目文件夹&#xff0c;看到满屏的.bat、.dcp、.xci文件是不是感觉像走进了一个迷宫&#xff1f;作为FPGA开发者&#xff0c;我们经常需要在这些看似杂乱的文件海洋中寻找特定的配置或输出结果…...

踩过PCB缺陷检测长尾分布的坑后,我用DR Loss把YOLOv8尾部类别召回率从58%干到92%

本文基于我7年工业视觉、PCB缺陷检测项目的一线落地经验,针对工业场景最头疼的数据长尾分布痛点——头部常见缺陷样本极多、尾部稀有缺陷样本极少,导致原生YOLOv8尾部类别漏检严重、泛化能力差的问题,完整拆解DR Loss(Distribution Ranking Loss)分布排名损失的核心原理,…...

告别文件传输烦恼:用aliyunpan快传链接实现秒级大文件分享

告别文件传输烦恼&#xff1a;用aliyunpan快传链接实现秒级大文件分享 【免费下载链接】aliyunpan 阿里云盘命令行客户端&#xff0c;支持JavaScript插件&#xff0c;支持同步备份功能。 项目地址: https://gitcode.com/GitHub_Trending/ali/aliyunpan 你是否也曾经历过…...

Canvas Quest商业人像生成应用:电商模特图低成本自动化生产方案

Canvas Quest商业人像生成应用&#xff1a;电商模特图低成本自动化生产方案 1. 电商模特图的痛点与机遇 电商行业有个公开的秘密&#xff1a;商品展示图的拍摄成本往往比商品本身还高。特别是服装、配饰和美妆类目&#xff0c;每季新品需要拍摄上百套模特图&#xff0c;传统方…...

热量表(热能表)完整指南:原理、公式推导、STM32 嵌入式软件全实现

目录 一、热量表工作原理 1. 核心物理原理 2. 系统组成 3. 工作流程 二、热量计算公式&#xff08;国标 / 欧标 EN1434&#xff09;完整推导 1. 基础定义 2. 最终标准热量公式&#xff08;工业直接用&#xff09; 瞬时热量&#xff1a; 累积热量&#xff1a; 3. 公式…...

MiniCPM-V-2_6赋能Python爬虫:智能数据采集与清洗

MiniCPM-V-2_6赋能Python爬虫&#xff1a;智能数据采集与清洗 还在为反爬机制头疼&#xff1f;试试让AI来帮你搞定数据采集的那些麻烦事 咱们做数据采集的&#xff0c;最怕遇到什么&#xff1f;页面结构一变&#xff0c;爬虫就失效&#xff1b;验证码弹出来&#xff0c;手动识别…...

计算机毕设 java 基于 Java+Spring 的疫苗接种管理系统的设计与实现 智能疫苗接种预约系统 疫苗接种全流程管理平台

计算机毕设 java 基于 JavaSpring 的疫苗接种管理系统的设计与实现 69geq9&#xff08;配套有源码 程序 mysql 数据库 论文&#xff09;本套源码可以先看具体功能演示视频领取&#xff0c;文末有联 xi 可分享在社会对公共卫生安全愈发重视的背景下&#xff0c;疫苗接种作为重要…...