1 Star 0 Fork 6

xiaoti / bpmn-dataflow-diagram-editor

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

BPMN 数据流图编辑器

其它语言:English

本项目是一个集成流程编辑器的例子。它基于定制的 bpmn-js 和 Vue.js 开发。你需要知道 Vue.js 的知识来阅读和理解源代码。

功能

  • 可视化编辑:使用简单的点击、拖拽、放置编辑数据流图。 gif
  • 保存和读取 XML:保存/读取图和节点信息。 gif
  • 属性和数据转移:可扩展的节点属性编辑面板,且数据可以在节点间流动。 gif
  • 动画效果:为节点展示任意的 CSS 样式动画。 (旧版实现) gif
  • 无级缩放:流畅放大和缩小 (比原版的逐级缩放更加平滑) gif
  • 多图操作:同时打开和编辑多个图。 gif

开始

git clone https://github.com/Pingren/BPMNFlowEditor
cd BPMNFlowEditor
yarn & yarn serve

设计

项目结构

  • [components]
    • [PanelLeft]
      • [index.vue] Panel 包含 Pane
      • [PaneDatabase.vue] list style node picker
      • [PaneOperator.vue] tree style node picker
    • [PanelRight]
      • [index.vue] Panel 包含 Pane
      • [PaneNodeInfo.vue] 节点信息预览
      • [PaneProperty.vue] 可扩展的节点属性编辑面板
    • [PanelTop]
      • [index.vue] Panel 包含编辑、保存等功能的按钮
    • [DiagramEditor.vue] 包含了所有的 vue 组件,负责在其生命周期内创建 diagram 对象和 vuex 状态
    • [ZoomSlider.vue] 缩放滑块
  • [module]
    • [xxx.js...] 自定义 bpmn.js 模块,自定义的内容注释在文件中
    • [index.js] 自定义 bpmn.js 模块帮助文件,禁用了部分模块
  • [store]
    • [module.js] vuex 重用模块
    • [index.js] vuex 根状态,控制模块动态注册
  • [App.vue] app 入口,包含了 el-tabs,每个 tab 拥有一个 DiagramEditor
  • [Diagram.js] Diagram 类
  • [mock.js] 模拟后端返回的数据

解释说明

Diagram.js

Diagram 是表示数据流图的类。它在 constructor 里创建了 bpmn-js 相关对象并且将它们绑定到实例上。它提供了 importXMLexportXML 方法,以及其它图操作方法(比如 createNode)。

当一个 tab,即 DiagramEditor 组件 mounted 时,它会创建一个 diagram 对象。接着它会将其用 provided/injected API 注入到其所有子组件中。如此一来,所有的 vue 子组件都可以使用 diagram 对象来控制图。

Diagram 也有一些“私有”方法:evaluateNodeDataevaluateNodeInputevaluateNodeOutput 等等。 它们在 bpmn-js EventBus 回调中调用,不应该被外部使用。

Vuex 状态

一些流程图的状态应该是响应式的,所以需要使用 vuex。每个 diagram 对象都伴随着一个 vuex 状态 store,并使用一个 key 跟踪它。

因为可能有多个 tab 和多个图,本项目 重用了相同的 vuex 模块。当一个 tab,即 DiagramEditor 组件 created 时,vuex 模块将被注册,并在组件销毁前卸载。

vuex 模块包含了流程图的基本状态比如 currentNodeId、isRunning 等等。它也包含了三个节点数据模型对象:inputModel、transferModel、outputModel。

节点数据模型

每个节点有着它的属性,保存在 transferModel 中。用户可以在节点属性编辑面板中改变属性。

一个节点还可以有输入和输出数据,保存在 inputModel 和 outputModel 中。输入和输出数据由节点属性,图的拓扑结构以及节点的输入输出的配置共同决定:

  • 节点输入配置:决定了一个节点如何使用其所有父节点的输出(outputModel) 生成该节点的输入。

  • 节点输出配置:决定了一个节点如何使用其属性(transferModel) 生成该节点的输出。

inputModel 和 outputModel 都将自动更新。 核心逻辑在 Diagram.js 之中,使用广度优先遍历。

项目依赖

  • bpmn-js - 本项目的主要依赖。
  • bpmn-js-cli - 使开发调试更容易的帮助库。
  • vue - 一个搭建用户界面的渐进式框架。
  • element-ui - 广泛使用的 UI 库。

杂项

相关项目和产品

以下是一些使用类似数据流图编辑器的工程和项目:

旧版本

代码曾经重构并且有了很大的变化,你可以在分支 archive-codebase 上查看旧版本。请注意它的设计和结构与现在的主分支大相径庭

问题

暂时没有,欢迎问题和建议!

空文件

简介

DEMO: a dataflow diagram editor, powered by bpmn.js and vue.js 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/tangzhiming/bpmn-dataflow-diagram-editor.git
git@gitee.com:tangzhiming/bpmn-dataflow-diagram-editor.git
tangzhiming
bpmn-dataflow-diagram-editor
bpmn-dataflow-diagram-editor
master

搜索帮助