我想存储一个文档,然后决定应用于文档的工作流程。 该工作流将要求用户对文档执行操作,并捕获执行的实际操作。 e.g文档管理系统的数据库结构是什么?
DocId=2
Flow = 1.[Mr.X - Authenticate] 2.[Mr.Y - Verify/Reject] 3.[Mr.Z Accept/Reject]
什么数据库架构将支持这些任务?
我想存储一个文档,然后决定应用于文档的工作流程。 该工作流将要求用户对文档执行操作,并捕获执行的实际操作。 e.g文档管理系统的数据库结构是什么?
DocId=2
Flow = 1.[Mr.X - Authenticate] 2.[Mr.Y - Verify/Reject] 3.[Mr.Z Accept/Reject]
什么数据库架构将支持这些任务?
工作流模式受工作流是否有分支影响很大。如果所有工作流都是线性的,没有分支,那么问题就简单多了,因为工作流配置的定义只需要列出工作流中的步骤,而文档工作流实例只需要记录当前步骤。如果涉及条件分支或并行步骤,则需要为步骤使用某种分层模型(例如,每个工作流配置步骤可以有一个指向父母的指针和指向儿童的指针)。这些通常以XML格式存储。
简单的情况下,没有分支可能是这样的:
表:workflow_config(每工作流程一行)
表:workflow_config_step(每个工作流步骤一行)
表:document_workflow(每个文档一行)
表:document_workflow_step(每一行对应一个对该文件采取的行动)
注意分支的工作流程需要从舞台携带更多的信息的阶段。事实上,“参数”属性可能需要在单独的交叉表中。我只把它称为一个字段,因为如果只需要很少的数据,你可以使用分隔符或XML表示。
以下是支持您的应用程序的潜在体系结构的骨架。它包含表格的定义和表格中的列,以及每个表格的一些示例数据。允许的交易有两个目的:为特定国家的特定文件生成请求的行为;并在他们被应用到数据库时验证动作。
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
感谢您的回复克里斯。 – vikas27
感谢您的回复。如果我想在不使用XML的情况下使用分支,那么结构必须是什么。我们只需要将所有工作流程保存在数据库中而不是XML中。 – vikas27
好吧,数据库字段可以保存XML,所以它们不是相互排斥的。如果您需要简单的并行性(同时运行多个步骤),则可以使用非唯一步骤编号,并让工作流程同时在同一步骤启动每个工作流程流程,而不是继续下一步步骤编号,直到当前步骤中的所有进程都已完成。如果你需要条件分支,这一切都取决于条件有多复杂,以及所有条件是二元还是三元还是多元。 –
根据我们的讨论和我的理解,我制作了4张桌子。它们是:DocumentTable [DocId] [DocName] [DocType] [DocLocation] [UploadedBy] [DocStatus] PermissionTable [PerId] [DocId] [UserId] [SequenceNo] SubSequenceNo] CurrentStatusTable [] [StatusId] [SequenceNo] [DocId] And DocHistoryTable [DocHisId] [DocId] [UserId] [Operation] [Comment]。这些是我正在使用的表格。那么你能告诉我,我的结构是否有任何缺陷。该操作只是接受或拒绝与评论。 – vikas27