最好用的流程编辑器bpmn-js系列之基本使用

BPMN(Business Process Modeling Notation)是由业务流程管理倡议组织BPMI(The Business Process Management Initiative)开发的一套标准的业务流程建模符号规范。其目的是为用户提供一套容易理解的标准符号,这些符号作为BPMN的基础元素,将业务流程建模简单化、图形化,将复杂的建模过程视觉化,让业务建模者、业务实施人员、管理监督人员对BPMN描述的业务流程都有一个更加清晰明了的了解。

BPMN的主要意义在于其作为一个标准,业务相关者都按照这个标准来绘制业务流程图,能够减少各方对于流程图的理解歧义,从而达到高效协作的目的

BPMN包含以下四类基本元素

  • 流对象(Flow Objects):包括事件、活动、网关,是BPMN中的核心元素
  • 连接对象(Connecting Objects):包括顺序流、消息流、关联
  • 泳道(Swimlanes):包括池和道两种类型
  • 人工信息(Artifacts):包括数据对象、组、注释

bpmn-js就是基于BPMN标准实现的一套渲染工具包和web建模器,以下系列文章将会介绍我的使用过程

基本使用

bpmn-js的使用非常简单,我们可以在VUE项目中使用,或者是直接在HTML文件中引入JS/CSS资源文件,就像下边这样

<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  <title>运维咖啡吧 - BPMNJS</title>

  <!-- 引入BPMN-JS的CSS文件 -->
  <link rel="stylesheet" href="https://unpkg.com/bpmn-js@7.3.0/dist/assets/diagram-js.css" />
  <link rel="stylesheet" href="https://unpkg.com/bpmn-js@7.3.0/dist/assets/bpmn-font/css/bpmn.css" />
</head>

<body>
  <div id="canvas" style="height:80vh;"></div>

  <!-- 引入BPMN-JS的JS文件 -->
  <script src="https://unpkg.com/bpmn-js@7.3.0/dist/bpmn-modeler.development.js"></script>
  <script>
    var diagramXML = `<?xml version="1.0" encoding="UTF-8"?>
<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" 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="Process_1" isExecutable="false">
  <bpmn2:startEvent id="StartEvent_1" />
</bpmn2:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
  <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
    <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
      <dc:Bounds x="192" y="82" width="36" height="36" />
    </bpmndi:BPMNShape>
  </bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn2:definitions>`

    var bpmnModeler = new BpmnJS({
      container: '#canvas'
    });

    bpmnModeler.importXML(diagramXML, function(err) {
      if (err) {
        return console.error('failed to load diagram', err);
      }
    });
  </script>
</body>

</html>

浏览器访问会出现如下一个流程编辑器,可以在这里进行流程的编辑

bpmn-js有两种模式:Modeler模式和Viewer模式,在Modeler模式下可以对流程图进行编辑,而Viewer模式则不能,仅作为展示用

viewer模式相对简单,无需引入CSS文件,只需引入一个JS即可

<script src="https://unpkg.com/bpmn-js@7.3.0/dist/bpmn-viewer.development.js"></script>

通常在流程执行阶段的展示用Viewer模式,配合节点颜色设置让用户清晰的看到当前流程的执行过程和状态

VUE中使用

更多的时候我们可能会在VUE项目中使用,为了展示清晰,这里先通过vue-cli脚手架创建一个vue项目

vue create ops-coffee-bpmn
cd ops-coffee-bpmn

原始的目录结构大概是这个样子的

安装bpmn-js

npm install bpmn-js --save

安装完成后就可以开始使用bpmn-js了,首先要引入bpmn-js的CSS,修改src/main.js文件

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";

Vue.config.productionTip = false;

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";

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app");

然后编写bpmn-modeler.vue文件,文件位于src/views/bpmn-modeler.vue

<template>
  <div class="containers">
    <div class="canvas" ref="canvas"></div>
  </div>
</template>

<script>
import BpmnModeler from "bpmn-js/lib/Modeler";
import { xmlStr } from "../mock/xmlStr";

export default {
  name: "ops-coffee",
  mounted() {
    this.init();
  },
  data() {
    return {
      bpmnModeler: null,
      container: null,
      canvas: null
    };
  },
  methods: {
    init() {
      const canvas = this.$refs.canvas;
      this.bpmnModeler = new BpmnModeler({
        container: canvas
      });

      this.createNewDiagram();
    },
    createNewDiagram() {
      try {
        const result = this.bpmnModeler.importXML(xmlStr);
        const { warnings } = result;
        console.log(warnings);
      } catch (err) {
        console.log(err.message, err.warnings);
      }
    }
  }
};
</script>

<style scoped>
.containers {
  width: 100%;
  height: calc(100vh - 82px);
}
.canvas {
  width: 100%;
  height: 100%;
}
</style>

这里引入了一个外部变量xmlStr,这个变量主要用来存放BPMN的XML数据,这里创建对应的src/mock/xmlStr.js文件

export var xmlStr = `<?xml version="1.0" encoding="UTF-8"?>
<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" 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="Process_1" isExecutable="false">
  <bpmn2:startEvent id="StartEvent_1" />
</bpmn2:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
  <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
    <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
      <dc:Bounds x="192" y="82" width="36" height="36" />
    </bpmndi:BPMNShape>
  </bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn2:definitions>`;

最后修改src/router/index.js文件添加路由

const routes = [
  {
    path: "/",
    name: "编辑模式",
    component: () => import("../views/bpmn-modeler.vue")
  },
];

然后访问页面,就可看到流程编辑器,进行流程编辑等操作

以上为Modeler模式,如果想用Viewer模式的话,也非常简单,仅需将引入的Modeler改为Viewer即可

import BpmnViewer from "bpmn-js/lib/Viewer";

概念名词

在使用bpmn-js的过程中,经常会出现一些名词,了解他们有利于我们后续的使用和开发

画布中的元素叫element,element包含连线connection和形状shape,流程图是由shape和connection组成的,可以通过拖动左侧工具栏Palette来创建元素,点击元素会出现ContextPad工具箱,不同的元素会出现不同的ContextPad,可以通过ContextPad工具创建shape或connection,也可以修改元素type,添加注解,以及删除元素等操作

写在最后

接触bpmn-js不久,边学边写,文章难免出错,各位多多包含。想要打造一个好用的适合自己的流程编辑器,需要了解的内容比较多,bpmn-js会分多篇文章来介绍,这是本系列的第一篇,下一篇介绍bpmn-js的数据保存等内容,欢迎关注

bpmn.js插件源码: GitHub - bpmn-io/bpmn-js: A BPMN 2.0 rendering toolkit and web modeler.

Demo源码地址:https://github.com/Mrs-Bean/bpmn-src.git

  • 45
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Activiti7是一个开源业务流程管理工具,其中一个重要的功能是可以实现对BPMN(Business Process Model and Notation)规范的支持。而BPMN-JS则是一个专门用于处理BPMN图形的JavaScript库。Activiti7整合BPMN-JS可以帮助开发人员更加方便地实现业务流程管理,下面简单说明一下其基本原理和实现过程。 首先需要了解一下BPMN-JS的核心功能,它可以通过JavaScript代码生成BPMN图形,并提供丰富的图形元素和样式,同时可以进行流程建模、流程执行和流程监控等操作。在Activiti7中,利用BPMN-JS可以轻松地生成各个节点和连线,实现业务流程的可视化管理。为此,需要在Activiti7中安装BPMN-JS库,并在代码中调用相应的方法生成BPMN的XML文件。 在实现过程中,需要注意几点。首先是整合的接口问题,Activiti7与BPMN-JS并不是完全兼容的工具,因此需要进行一些适配性开发。其次是对图形的显示和编辑操作,代码需要能够实现对BPMN-JS图形的捕获和修改,同时需要考虑协同编辑和用户权限等问题。此外,还需要与后台进行接口对接,实现BPMN图形的保存和查询等功能。 总的来说,Activiti7整合BPMN-JS可以带来很大的效益,帮助企业和开发者更加便捷地管理和执行业务流程,提高工作效率。同时需要注意安全和合法性问题,确保业务流程管理的有效性和合规性。 ### 回答2: Activiti7是一个流程引擎,可以帮助企业自动化业务流程BPMN-JS是一个流程编辑器,可以让用户创建和编辑BPMN流程图。 Activiti7整合BPMN-JS可以为用户提供更好的流程设计和管理体验。用户可以使用BPMN-JS创建新的流程或编辑已有的流程,然后将它们导入到Activiti中执行。将这两个工具整合在一起,能够实现以下几个方面的优势: 1. 更好的用户体验:BPMN-JS编辑器可以让用户更加直观地创建、编辑流程图,而且可以通过实时预览功能来快速调整流程细节。 2. 提高效率:将Activiti7和BPMN-JS整合在一起可以减少在不同工具之间移动的时间、减少学习和熟悉新工具的时间,提高工作效率。 3. 更直观的流程设计:用户可以使用BPMN-JS在一个视图中直观地看到整个流程的执行情况,更好地理解流程的执行逻辑,加快流程设计速度。 4. 更好的流程管理:整合BPMN-JS可以允许用户使用Activiti7来跟踪流程的执行情况,从而更好地管理流程。 总之,Activiti7和BPMN-JS的整合可以为企业自动化流程提供更好的用户体验和更高效的工作方式,帮助企业提高业务流程自动化效率和流程管理。 ### 回答3: Activiti7是一个流程引擎,可以帮助企业实现业务流程的自动化管理。而BPMN-js是一个用于绘制BPMN图形的开源工具。通过将BPMN-js与Activiti7进行整合,可以实现业务流程的可视化管理。 具体来说,Activiti7可以通过引用BPMN-js库,将BPMN图形集成到Activiti7的设计器中,让用户可以使用图形化界面来创建和编辑业务流程。在流程图形设计完成后,可以将其导出为BPMN 2.0格式,以便用于其他系统中。 此外,BPMN-js还可以通过Activiti7的REST API来加载和保存流程信息,并实现与Activiti7的集成。这使得BPMN-js和Activiti7可以互相补充,共同支持企业流程管理的各个方面。 总之,通过Activiti7和BPMN-js的整合,可以使企业流程管理更加高效、直观、可视化和嵌入式化。企业可以根据自身需求选择适合自己的流程工具,以便更好地管理业务流程

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LiuPing_Xie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值