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

bpmn+vue 中文文档

1.初始化项目

<script>
import BpmnModeler from 'bpmn-js/lib/Modeler'
import { xmlStr } from '@/mock/xmlStr'
export default {mounted () {this.init()},methods: {init () {// 获取到属性ref为“canvas”的dom节点const canvas = this.$refs.canvas// 建模const customTranslateModule = {translate: ['value', customTranslate]}this.bpmnModeler = new BpmnModeler({container: canvas,// 添加控制板propertiesPanel: {parent: '#js-properties-panel'},additionalModules: [// 左边工具栏以及节点propertiesProviderModule,customTranslateModule]})this.createNewDiagram(xmlStr)},async createNewDiagram(xmlStr) {// 将字符串转换成图显示出来await this.bpmnModeler.importXML(xmlStr, (err) => {if (err) {} else {// 这里是成功之后的回调, 可以在这里做一系列事情this.addEventBusListener();}})}}
}
</script>

2. 节点的事件或方法:

// 监听 element

const eventBus = this.bpmnModeler.get('eventBus');

//  获取流程的所有元素

const elements = this..bpmnModeler.get('elementRegistry')._elements

//  监听流程节点内容发生改变的事件

this.bpmnModeler.on('commandStack.changed', async function() {})

//  格式化保存流程图为xml文件

this..bpmnModeler.saveXML({ format: true }, async function(err, xml) {})

// 得到流程xml的name的集合
getXmlName(xmlString) {const parser = new DOMParser();const xmlDoc = parser.parseFromString(xmlString, 'text/xml')const nodes = xmlDoc.querySelectorAll('*[name]');const names = Array.from(nodes).map(node => node.getAttribute('name'))return names
}addEventBusListener() {// 监听 elementconst eventBus = this.bpmnModeler.get('eventBus');const eventTypes = ['element.click', 'element.changed', 'element.updateLabel'];let that = this;eventTypes.forEach(function(eventType) {eventBus.on(eventType, async function(e) {if (!e) return;const type = e.element.type  // 选中元素的类型that.selected = typeof e.element.parent !== 'undefined' // 判断是否选中元素if (eventType === 'element.changed') {} else if (eventType === 'element.click') {}})})// 修改节点内容事件this.bpmnModeler.on('commandStack.changed', async function() {await that.bpmnModeler.saveXML({ format: true }, async function(err, xml) {let allElementId = []for (let i in that.bpmnModeler.get('elementRegistry')._elements) {if (i === 'StartEvent_1y45yut' || i.indexOf('Task_') > -1 || i.indexOf('Activity_') > -1 || (i.indexOf('Gateway_') > -1 && i.indexOf('label') === -1)) {allElementId.push(i)}}if (that.getXmlName(xml).length < allElementId.length) {// name为空,给name赋值idlet newxml = xml.replace(('id="' + allElementId[allElementId.length - 1] + '"'), ('id="' + allElementId[allElementId.length - 1] + '" name="' + allElementId[allElementId.length - 1] + '"'))that.bpmnModeler.clear();await that.bpmnModeler.importXML(newxml);}that.camunda.process.processXml = xmlthat.updateNodes(that.bpmnModeler.get('elementRegistry')._elements, that.getXmlName(xml))})})
}

3.bpmn官网:BPMN Editor | bpmn-js modeler Demo | demo.bpmn.io

4.流程设定可参考简道云的设计,简道云的网址:简道云登录_简道云系统入口_零代码平台登录_无代码平台登录-简道云

http://www.lryc.cn/news/364085.html

相关文章:

  • React Router v5 和 v6 中,路由对象声明方式有什么区别?
  • 【全开源】知识库文档系统(ThinkPHP+FastAdmin)
  • Python赋能自然语言处理,解锁通往AI的钥匙
  • Ktor库的高级用法:代理服务器与JSON处理
  • VS2017配置OpenCV4.5.1
  • phpstudy配置的站点不能访问了
  • Java Web学习笔记2——Web开发介绍
  • 从零开始实现自己的串口调试助手(3) - 显示底部收发,优化串口打开/关闭
  • 更改Web网站设计——css和css框架
  • 持续监控和优化的简单介绍
  • 针对硅基氮化镓高电子迁移率晶体管(GaN-HEMT)的准物理等效电路模型,包含基板中射频漏电流的温度依赖性
  • 基于websocket与node搭建简易聊天室
  • DevOps全面综述:从概念到实践
  • [C++]vector的模拟实现
  • 【云原生】Kubernetes----POD控制器
  • Java环境配置(超详细)
  • 【操作系统】(详细理解进程的状态)执行状态、就绪状态、阻塞状态、挂起状态
  • C++ -- string常用接口的底层实现
  • 怎么做好企业短信服务呢?(文字短信XML接口示例)
  • 鸿蒙小案例-音乐播放器
  • 语言模型测试系列【9】
  • 优思学院|质量工程师工资不高怎么办?
  • 【面向就业的Liux基础】从入门到熟练,探索Linux的秘密(一)
  • 高效数据处理的前沿:【C++】、【Redis】、【人工智能】与【大数据】的深度整合
  • Vitis HLS 学习笔记--控制驱动与数据驱动混合编程
  • VUE3 学习笔记(12):对比Vuex与Pinia状态管理的基本理解
  • 区间预测 | Matlab实现QRCNN-BiGRU-Attention分位数回归卷积双向门控循环单元注意力机制时序区间预测
  • TypeScript算法每日一题:赎金信(383)
  • springboot 作为客户端接收服务端的 tcp 长连接数据,并实现自定义结束符,解决 粘包 半包 问题
  • kuka编程怎么加中文:解锁KUKA机器人编程中的中文支持