文档管理系统的数据库结构是什么?

时间:2011-09-12 13:32:55

标签: mysql database database-design

我想存储文档,然后决定应用于文档的工作流程。 该工作流将请求用户对文档执行操作,并捕获执行的实际操作。 e.g

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

哪种数据库架构将支持这些任务?

2 个答案:

答案 0 :(得分:1)

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

没有分支的简单情况可能如下所示:

table:workflow_config(每个工作流一行)

  • workflow_config_id
  • 名称
  • 描述

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

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

table:document_workflow(每个文档一行)

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

table:document_workflow_step(对文档采取的每个操作占一行)

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

请注意,分支工作流程需要从一个阶段到另一个阶段传递更多信息。实际上,“参数”属性可能需要在单独的交联表中。我只是在这里称它为一个字段,因为如果需要的数据很少,你可以使用分隔符或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