2011-09-12 96 views
0

我想存储一个文档,然后决定应用于文档的工作流程。 该工作流将要求用户对文档执行操作,并捕获执行的实际操作。 e.g文档管理系统的数据库结构是什么?

DocId=2  
Flow = 1.[Mr.X - Authenticate] 2.[Mr.Y - Verify/Reject] 3.[Mr.Z Accept/Reject] 

什么数据库架构将支持这些任务?

回答

0

工作流模式受工作流是否有分支影响很大。如果所有工作流都是线性的,没有分支,那么问题就简单多了,因为工作流配置的定义只需要列出工作流中的步骤,而文档工作流实例只需要记录当前步骤。如果涉及条件分支或并行步骤,则需要为步骤使用某种分层模型(例如,每个工作流配置步骤可以有一个指向父母的指针和指向儿童的指针)。这些通常以XML格式存储。

简单的情况下,没有分支可能是这样的:

表:workflow_config(每工作流程一行)

  • workflow_config_id
  • 描述

表:workflow_config_step(每个工作流步骤一行)

  • workflow_config_id
  • step_id的数据类型
  • 名称
  • 描述
  • 的action_id
  • 参数(或上下文,或需要被传递到操作启动器的任何信息)

表:document_workflow(每个文档一行)

  • DOCUMENT_ID
  • workflow_id
  • current_step_id
  • 参数(或上下文,或需要从一个步骤到下一个传送的任何信息)

表:document_workflow_step(每一行对应一个对该文件采取的行动)

  • document_id
  • step_id的数据类型
  • 状态
  • 时间戳

注意分支的工作流程需要从舞台携带更多的信息的阶段。事实上,“参数”属性可能需要在单独的交叉表中。我只把它称为一个字段,因为如果只需要很少的数据,你可以使用分隔符或XML表示。

+0

感谢您的回复。如果我想在不使用XML的情况下使用分支,那么结构必须是什么。我们只需要将所有工作流程保存在数据库中而不是XML中。 – vikas27

+0

好吧,数据库字段可以保存XML,所以它们不是相互排斥的。如果您需要简单的并行性(同时运行多个步骤),则可以使用非唯一步骤编号,并让工作流程同时在同一步骤启动每个工作流程流程,而不是继续下一步步骤编号,直到当前步骤中的所有进程都已完成。如果你需要条件分支,这一切都取决于条件有多复杂,以及所有条件是二元还是三元还是多元。 –

+0

根据我们的讨论和我的理解,我制作了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

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 
+0

感谢您的回复克里斯。 – vikas27