Skip to content

AntV X6

x6 是一个基于html的流程图编辑引擎,类似的图编辑引擎还有:GoJSD3,如果你打算开发一个流程图编辑器,基于文档更易阅读的原因,推荐使用x6

它适合用来开发DAG图、ER图、流程图、血缘图等,这些图通常由多个节点和线连接在一起,详细的功能请查看官方文档。

下面简单介绍一下这几种流程图的特点:

DAGDirected Acyclic Graph(有向无环图)

有向无环图,它有下面几个特点:

  • 两个节点的连接是有方向的,而不是连接在一起而已
  • 它是无环的,即无论子节点多深,它的子节点不会连接回到中间任何一个节点

基于这两个特点,DAG图就能很好的表示节点之间的依赖(因果)关系,无环的特性也避免了循环依赖的出现,所以常用于下面这些领域:

  1. 任务调度与依赖关系(如项目管理、工作流引擎)。
  2. 版本控制与提交历史(如 Git)。
  3. 依赖解析与包管理(如 npm、pip)。
  4. 网络与路由(如网络拓扑、分布式系统)。

通常一个标准的DAG图是支持拓扑排序的:

拓扑排序:通常用来解决DAG图中的依赖关系问题,确定节点的顺序

假设现在有一系列课程,它们存在一定的依赖关系,通过拓扑排序可以计算得出课程排课顺序。

拓扑排序可以通过这两种方法实现:

  1. Kahn 算法(基于入度)
  2. DFS 算法(基于深度优先搜索)

EREntity-Relationship Diagram(实体关系图)

ER图中指定了三要素:

  1. 实体(Entity):
  • 一个独立存在的对象如学生、课程、员工等
  • 在图中,使用矩形表示
  1. 属性(Attribute):
  • 属性是实体的特征或者描述如:学号、姓名、年龄
  • 在图中,使用椭圆形表示,与实体用线连接
  1. 关系(Relationship):
  • 用于描述实体之间的关系如学生和课程的关系是选修

  • 在图中,使用菱形表示,与实体使用线连接,在线上标明关系的类型:

    • 1:1 (两个实体之间一对一关系)
    • 1:n (两个实体之间一对多关系)
    • m:n (两个实体之间多对多关系)

ER图通常用于:

  1. 设计数据库:帮助开发者理清数据结构、明确实体、属性和关系;
  2. 沟通工具:便于开发者和业务人员之间的沟通;
  3. 文档:便于后续维护和扩展;
  4. 优化:发现设计不合理的设计

流程图

流程图和DAG图的主要区别是它是可以有环路的,它通常用来表示为了一定的目标而设计的一系列流程逻辑关系,在图中表示出具体的步骤。对图形的形状没有具体的要求。

血缘图

血缘图通常用来表示数据的来源、流转和依赖关系,其目的是提供数据的透明性和可追溯性,应用于数据治理、溯源和分析。它的表现形式和流程图差别不大。