我想存储文档,然后决定应用于文档的工作流程。 该工作流将请求用户对文档执行操作,并捕获执行的实际操作。 e.g
DocId=2
Flow = 1.[Mr.X - Authenticate] 2.[Mr.Y - Verify/Reject] 3.[Mr.Z Accept/Reject]
哪种数据库架构将支持这些任务?
答案 0 :(得分:1)
工作流程架构受工作流程是否具有分支的影响很大。如果所有工作流都是线性的而没有分支,则问题要简单得多,因为工作流配置的定义只需要列出工作流中的步骤,文档工作流实例只需要记录当前步骤。如果涉及条件分支或并行步骤,则需要对步骤使用某种分层模型(例如,每个工作流配置步骤可以具有指向父项的指针和指向子项的指针)。这些通常以XML格式存储。
没有分支的简单情况可能如下所示:
table:workflow_config(每个工作流一行)
table:workflow_config_step(每个工作流程步骤一行)
table:document_workflow(每个文档一行)
table:document_workflow_step(对文档采取的每个操作占一行)
请注意,分支工作流程需要从一个阶段到另一个阶段传递更多信息。实际上,“参数”属性可能需要在单独的交联表中。我只是在这里称它为一个字段,因为如果需要的数据很少,你可以使用分隔符或XML表示法。
答案 1 :(得分:0)
以下是支持您的应用程序的潜在架构的框架。它包含表的定义和表中的列,以及每个表的一些示例数据。允许的事务有两个目的:为特定状态的特定文档生成请求的操作;并在将数据应用到数据库时验证操作。
State
Value (PK)
Example Data
Initial
Authenticated
Verified
Rejected
Accepted
Flow
Flow ID (PK)
Description
Example Data
27,Authenticate and validate general document
Permitted Transition
Current State (PK)(FK)
Action Type (PK)(FK)
Result State (PK)(FK)
Flow ID (FK)
Example Data
Initial,Authenticate,Authenticated
Action Requested
User (PK)(FK)
Document (PK)(FK)
Action Type (PK)(FK)
Example Data
Mr.X,2,Authenticate
Document
Document ID
Current State (FK)
Example Data
2,Initial
Document Flow
Document (FK)
Flow (FK)
Example Date
2,27
User
Name
Example Data
Mr.X
Mr.Y
Mr.Z
Action Type
Value (PK)
Example Data
Authenticate
Verify
Reject
Accept
Action
Action Type (PK)(FK)
User (PK)(FK)
Document (PK)(FK)
Example Data
Authenticate,Mr.X,2