AntV X6
x6
是一个基于html
的流程图编辑引擎,类似的图编辑引擎还有:GoJS
、D3
,如果你打算开发一个流程图编辑器,基于文档更易阅读的原因,推荐使用x6
。
它适合用来开发DAG
图、ER
图、流程图、血缘图等,这些图通常由多个节点和线连接在一起,详细的功能请查看官方文档。
下面简单介绍一下这几种流程图的特点:
DAG
:Directed Acyclic Graph
(有向无环图)
有向无环图,它有下面几个特点:
- 两个节点的连接是有方向的,而不是连接在一起而已
- 它是无环的,即无论子节点多深,它的子节点不会连接回到中间任何一个节点
基于这两个特点,DAG
图就能很好的表示节点之间的依赖(因果)关系,无环的特性也避免了循环依赖的出现,所以常用于下面这些领域:
- 任务调度与依赖关系(如项目管理、工作流引擎)。
- 版本控制与提交历史(如 Git)。
- 依赖解析与包管理(如 npm、pip)。
- 网络与路由(如网络拓扑、分布式系统)。
通常一个标准的DAG
图是支持拓扑排序的:
拓扑排序:通常用来解决DAG
图中的依赖关系问题,确定节点的顺序
假设现在有一系列课程,它们存在一定的依赖关系,通过拓扑排序可以计算得出课程排课顺序。
拓扑排序可以通过这两种方法实现:
- Kahn 算法(基于入度)
- DFS 算法(基于深度优先搜索)
ER
:Entity-Relationship Diagram
(实体关系图)
ER
图中指定了三要素:
- 实体(Entity):
- 一个独立存在的对象如学生、课程、员工等
- 在图中,使用矩形表示
- 属性(Attribute):
- 属性是实体的特征或者描述如:学号、姓名、年龄
- 在图中,使用椭圆形表示,与实体用线连接
- 关系(Relationship):
用于描述实体之间的关系如学生和课程的关系是选修
在图中,使用菱形表示,与实体使用线连接,在线上标明关系的类型:
- 1:1 (两个实体之间一对一关系)
- 1:n (两个实体之间一对多关系)
- m:n (两个实体之间多对多关系)
ER
图通常用于:
- 设计数据库:帮助开发者理清数据结构、明确实体、属性和关系;
- 沟通工具:便于开发者和业务人员之间的沟通;
- 文档:便于后续维护和扩展;
- 优化:发现设计不合理的设计
流程图
流程图和DAG
图的主要区别是它是可以有环路的,它通常用来表示为了一定的目标而设计的一系列流程和逻辑关系,在图中表示出具体的步骤。对图形的形状没有具体的要求。
血缘图
血缘图通常用来表示数据的来源、流转和依赖关系,其目的是提供数据的透明性和可追溯性,应用于数据治理、溯源和分析。它的表现形式和流程图差别不大。