+
95
-

mysql如何设计一个流程引擎表?

现在工作流很多,请问mysql如何设计一个流程引擎表?

网友回复

+
15
-

1. 工作流的定义

工作流是由不同的人做出的一系列决策,根据定义和可重复的过程,确定其中一个人所做出的特定请求会发生什么。那么涉及到的表设计比较多,有流程表、用户表、状态表、转换表、动作表、转换动作表、活动表、请求表、请求动作表,下面我们来一一解释表的设计结构和用处。

2. 工作流过程(Process)的配置和用户

在我们可以在此工作流引擎数据库中设计任何其他内容之前,我们首先需要定义确切构成流程的内容,以及我们的用户是谁以及哪些人可以修改流程本身。

Process (流程表) 设计

可能包含的字段:

名称 描述 类型
id id integer
name 流程标识 string

该表虽然非常简单,但却是其余设计的中心参考点; 此数据库中的大多数表(例如,状态(State),转换(Transition),请求(Request)等)都需要直接或间接地与此表相关联。

User (用户) 设计

在不同系统中设计可不一样

3. 工作流状态(State)和转换(Transition)的设计

在一次工作流程中会设计到不同的状态(state), 状态之间的流转需要不同的程序, 我们将之命名为转换(transition)

状态(State)的设计

工作流中的不同状态各有不同的属性类型, 在此总结出几种常见的状态类型枚举:

  • 开始(start):每个进程只应该一个。此状态是创建新请求时所处的状态。
  • 正常(normal):没有特殊名称的常规状态。
  • 完成(complete):表示此状态下的任何请求已正常完成的状态。
  • 拒绝(denied):表示此状态下的任何请求已被拒绝的状态(例如,从未开始且不会被处理)。
  • 已取消(cancelled):表示此状态下的任何请求已被取消的状态(例如,工作已开始但尚未完成)。

一个状态在一次流程中是唯一的,每个状态都有名称,描述和类型。

名称 描述 类型
id id integer
process_id 所属流程的id integer
name 状态名称 string
state_type 状态类型 string
description 状态描述 string

转换(Transition)的设

流程中不同的状态之间存在状态的转换(Transition) 转换在进程下也是唯一的,标记着从一个状态到另一个状态的过程, 因此转换由主键,进程ID,当前状态和下一个状态组成:

名称 描述 类型
id id integer
process_id 所属流程的id integer
current_state_id 当前状态id integer
next_state_id 下一状态id integer
4. 工作流操作动作(Action)和后续事件(Activity)的设计

状态(State)之间的流转我们称之为转换(Transition), 那么促成这个转换发生的动作和转换发生后的后续影响事件.我们成为:

  • 动作(Action): 用户在某个状态节点可操作的行为
  • 活动(Activity): 转换到状态节点后产生的事件
动作(Action)的设计

同样的不同的动作也各有不同的属性类型, 在此总结出几种常见的动作类型枚举:

  • 批准(approve):操作人将请求应移至下一个状态。
  • 拒绝(deny):操作人将请求应移至上一个状态。
  • 取消(cancel):操作人将请求应在此过程中移...

点击查看剩余70%

我知道答案,我要回答