用于流程跟踪的架构设计

时间:2018-08-05 15:31:51

标签: database postgresql database-design schema

我正在尝试设计一个数据库来维护进程的状态。按过程,我指的是一系列步骤。

一个过程可以是:A-> B-> C-> D

另一个可以是:A1-> B1-> C1(一个步骤可以有多个前任)。

基本上,我想保持其每个步骤的状态(成功/失败)。

每个工作流程将具有一些固定属性,例如时间戳,id,总体成功/失败等。但是,每个工作流程可以具有可变数量的步骤。

类似地,步骤将具有一些固定字段,例如id,名称,时间戳等。此外,步骤应能够包含用户定义的属性。

我当前的模式:

表1:工作流程 属性:id,名称,时间戳,状态

表2:工作流程步骤 属性:wf_id(工作流程中ID的外键),wf_timestamp,wf_step_id,wf_step_predecessor,wf_step_status。

表2允许我在工作流中的每个步骤及其状态和前身有1行。因此对于第一个过程,我将在此表中有4行。

表3:步骤 属性:id,名称,状态,时间戳

表4:Step_fields 属性:step_id(表3中ID的外键),field_name(允许用户定义属性),field_value,field_datatype。

重点主要是存储状态,有时还检索各个步骤的状态。

我希望获得其他可能的替代方案的帮助,以及该设计的任何陷阱。我遇到了一些替代方案,例如存储json(在postgres中存储hstore)或使用完整的EAV模型,但是,我现在正在考虑上述混合动力。

0 个答案:

没有答案