• Stars
    star
    1,635
  • Rank 28,601 (Top 0.6 %)
  • Language
    TypeScript
  • License
    Apache License 2.0
  • Created almost 4 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

bpmn-js 工具库

logo

Bpmn Process Designer

GitHub stars GitHub forks star fork

GitHub license GitHub issues GitHub pull requests

💻在线演示 · 🐛报告 Bug

项目简介

一个基于 bpmn.jsVue 2.xElementUI 开发的 BPMN 2.0 流程设计器(网页版),您可以使用它在浏览器上查看和编辑符合 BPMN 2.0 规范的流程文件。

项目内置 activiti、flowable、camunda 三种流程引擎支持文件,并提供了常见功能自定义方法与演示代码。

但由于 bpmn.js 与实际业务的特殊性,本项目暂不支持直接使用与发布 NPM 依赖,建议根据实际需求参照 App.vue 进行使用和二次开发。

TypeScript 支持

bpmn.js 的核心依赖 —— diagram.js,其核心模块已经支持 TypeScript,但是 bpmn.jstds 仍然处于积压状态。所以在此情况下我编写了 bpmn.js 常用插件部分的 ts 声明,声明地址:vite-vue-bpmn-process/types/declares

为支撑 Vue3vite 开发模式,提供了该项目的 Vue3 + tsx 实现:vite-vue-bpmn-process

安装和使用

# 克隆仓库
git clone https://github.com/miyuesc/bpmn-process-designer.git -b v2

# 安装依赖
npm install

# 启动项目
npm demo

开发指南

bpmn.js核心原理与常规改造 可以参见我的文章:Bpmn.js 进阶指南之原理分析与模块改造

常用模块的开发及自定义,参见 Bpmn.js 全面进阶指南

功能说明

当前项目内主要包含五个组件:

  • Designer:bpmn.js 的画布部分,所有组件的基础依赖组件
  • Toolbar:顶部工具栏,依赖 Designer 组件实现 xml 文件的导入导出和预览,支持对齐、缩放、撤销恢复及其他第三方扩展模块开关
  • Panel:自定义属性面板,包括基础属性、扩展属性、监听器、注释文档等配置;支持使用原生属性面板
  • ContextMenu:自定义右键菜单,用于添加和更改节点类型
  • Settings:全局偏好设置组件,主要用于控制演示项目的配置,实际项目中建议取消

另外包含一些 bpmn.js 的扩展:

  • additional-components:扩展组件,可能依赖 bpmn.js 或者 vue 组件的一些原生 js 控制方法
  • additional-modules:基于 bpmn.js 的原生模块进行扩展/重写的功能模块,只有 bpmn.js 关联。目前包含 palettecontextMenurenderer 等部分,也是扩展大家进行二次开发的核心参考代码
  • bo-utils:与元素 businessObject 相关的公共方法,主要涉及属性读取和更新;与后端使用的流程引擎绑定
  • bpmn-utilsbpmn.js 相关的一些公共方法
  • moddle-extensionsBPMN 2.0 规范格式的 JSON Schema 文档,包含基础的 bpmn.json,三大流程引擎文档与自定义元素文档

整个项目包含了 storeEventBus 两种消息传递方式:

  • store 中主要存放当前 Modeler 实例与节点实例,以及项目配置项,在二次开发过程中可以采用别的数据共享方式取代
  • EventBus 事件总线是该项目的 核心消息传递方式:因为 节点实例不能被 Vue 进行响应式处理,影响性能且容易产生属性读取更新错误,并且 表单需要实时监听节点变化,所以通过消息总线共享事件和数据是比较好的处理方式。

可用功能

1. 工具栏

  • 导入文件
  • 导出文件(xml, bpmn, svg)
  • 预览文件字符串(xml, json)
  • 元素对其(垂直上中下、水平左中右)
  • 缩放
  • 撤销恢复与重做
  • 扩展功能(流程模拟,小地图,快捷键提示,bpmn 事件查询)

2. 编辑器

  • 自定义流程id与名称
  • 可选流程引擎(camunda,activiti,flowable)
  • 动态背景设置
  • 自定义 PaletteProvider
  • 自定义 Renderer
  • 自定义 ContentPadProvider
  • 自定义 Rules
  • 自定义 ElementFactory
  • 扩展右键菜单
  • 自定义 Overlays
  • 扩展 Tooltip
  • 部分元素高亮

3. 属性面板

  • 基础信息(id, name, version, executable ...)
  • 附件文档(documentation)
  • 执行作业
  • 异步配置
  • 流程启动项
  • 扩展属性
  • 执行监听器
  • 流转条件
  • 任务监听器
  • 任务多实例(会签、或签)

贡献

在这里列出如何为项目做出贡献,例如:

  1. Fork 本仓库
  2. 创建分支 (git checkout -b feature/your-feature)
  3. 提交更改 (git commit -am 'Add some feature')
  4. 推送到分支 (git push origin feature/your-feature)
  5. 创建一个新的 Pull Request

界面预览

img.png

img_1.png

img_2.png

img_3.png

img_4.png

img_5.png

img_6.png

作者简介

MiyueFE(白小米),也可以叫我小白或者小米,常驻 掘金社区,也可以通过一下方式联系我:

赞助

如果该项目对您有帮助,您可以请我喝杯咖啡~

如果有其他开发支持,请联系微信或者掘金(复杂问题可能需要收费)

微信 支付宝

友情链接

  1. MiyueFE:Bpmn.js 全面进阶指南
  2. Yiuman:低代码平台 citrus ,已集成 activiti7 工作流引擎后端部分
  3. 霖呆呆:《全网最详bpmn.js教材目录》关于bpmn.js交流群的说明
  4. PL-FE:Bpmn Document
  5. 芋道源码: ruoyi-vue-pro ,一套全部开源的企业级的快速开发平台,毫无保留给个人及企业免费使用。
  6. dialYun:React Bpmn Designer - github, gitee

开源许可

Apache License © 2023 miyuesc

More Repositories

1

documents

程序开发相关的书籍与文档,多为 PDF 文件。
256
star
2

vue-data-visualization

基于Vue3.0的“数据可视化大屏”设计与编辑器
TypeScript
194
star
3

blog

一个前端菜鸟的学习记录博客
JavaScript
53
star
4

diagram-js-grid-bg

A visual grid backgroud for diagram-js, base on diagram-js-grid. 基于 diagram-js-grid 的 SVG 网格背景,可用于diagram-js的相关项目,例如 bpmn-js、dmn-js 等。
TypeScript
21
star
5

bpmn-js-i18n-zh

Chinese internationalization resources for bpmn-js
JavaScript
10
star
6

miyuesc

A vue blog theme
CSS
9
star
7

monorepo-micro-apps

小米的百宝袋~~~基于monorepo与MicroApp的微前端项目管理方案, 以及钉钉流程等复杂组件与工具函数
TypeScript
9
star
8

diagram-js-context-pad

An element context menu component for diagram-js/bpmn-js use, base on diagram-js/lib/features/context-pad. 一个提供给 diagram-js/bpmn-js 使用的元素上下文菜单组件,基于 `diagram-js/lib/features/context-pad`。
TypeScript
8
star
9

some-useful-packages

一些比较有用的函数、组件等
Vue
7
star
10

bpmn-js-questions

bpmn-js 常见使用问题
JavaScript
7
star
11

miyuesc.github.io

HTML
5
star
12

some-tool-functions

一些工具函数
TypeScript
4
star
13

bpmn-js-external-label-modeling

A bpmn-js plugin used to render Label tags outside of nodes. 一个用来将Label标签渲染在节点外部的bpmn-js插件。
TypeScript
4
star
14

diagram-js-accordion-palette

A palette that supports folding and unfolding, provided for diagram-js use。Base on diagram-js/palette 一个支持折叠展开的调色板,提供给 diagram-js 使用。基于 diagram-js 本身的 Palette。
TypeScript
4
star
15

simple-data-visualization

“数据可视化大屏”设计与编辑器
Vue
3
star
16

useful-code

一些有用的代码和资源
Vue
3
star
17

daily-juejin-tea-extension

每日掘金辅助插件
Vue
3
star
18

FrontendAskMeAnything

Welcome to the Frontend Ask Me Anything (AMA) repository!
JavaScript
2
star
19

my-navigation

一个简单的收藏导航栏
Vue
1
star
20

native-juejin-app

掘金非官方创作者中心
JavaScript
1
star