2011-09-12 19 views
0

文書を保存してから、その文書に適用するワークフローを決めたいとします。 このワークフローでは、ユーザーに対してドキュメントに対するアクションの実行を要求し、実行された実際のアクションを取得します。 例えば文書管理システムのデータベース構造は何ですか?

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

何データベースアーキテクチャは、これらの作業をサポートしますか?

答えて

0

ワークフローのスキーマは、ワークフローが分岐しているかどうかによって大きく異なります。すべてのワークフローが分岐なしで線形である場合、ワークフロー構成の定義ではワークフロー内のステップのみをリストするだけで、ドキュメントワークフローインスタンスでは現在のステップのみを記録する必要があるため、問題はずっと簡単です。条件付き分岐または並列ステップが含まれている場合は、ステップのために何らかの種類の階層モデルを使用する必要があります(たとえば、各ワークフロー構成ステップに、親へのポインタと子へのポインタがあります)。これらはしばしばXMLに格納されます。

このように見ることができない分岐を持つ単純な場合:

表:

  • 説明
  • テーブルをworkflow_config_id

    • workflow_config(ワークフローごとに1行) :workflow_config_step(ワークフローステップごとに1行)

      • をworkflow_config_id
      • 説明
      • パラメータ(またはコンテキスト、またはアクションランチャーに渡される必要がある何らかの情報)

      テーブルをaction_id STEP_ID :document_workflow(ドキュメントごとに1行)

      • をDOCUMENT_ID
      • をworkflow_id
      • パラメータ(またはコンテキスト、または次の1つのステップから渡される必要がある何らかの情報)

      テーブルcurrent_step_id:それぞれについてdocument_workflow_step(一列に文書上で取られた措置)

      • document_id
      • は分岐ワークフローがステージに段階からより多くの情報を運ぶために必要があること
      • 状態
      • タイムスタンプ

      注意をSTEP_ID。実際には、 "parameters"属性は別のクロスリンクされたテーブルにある必要があります。私はそれをフィールドと呼んでいます。なぜなら、データがほんの僅かであれば、区切り文字やXML表現を使用できるからです。

    +0

    お返事ありがとうございます。もし私がXMLなしで分岐を使用したいのであれば、構造体は何でなければなりません。すべてのワークフローをXMLではなくデータベースに保存するだけで済みます。 – vikas27

    +0

    さて、データベースフィールドはXMLを保持できるので、相互に排他的ではありません。単純な並列処理(複数のステップが同時に実行されている)が必要な場合は、一意でないステップ番号を使用して、同時に同じ手順で各ワークフロープロセスを起動させ、次の現在のステップのすべてのプロセスが終了するまでステップ番号を入力します。条件付き分岐が必要な場合は、条件の複雑さと、すべての条件がバイナリまたはトライナまたはポリであるかどうかによって異なります。 –

    +0

    私の議論と私の理解によると、私は4つのテーブルを作っています。 DocumentTable [DocId] [DocName] [DocType] [DocLocation] [UploadedBy] [DocStatus] PermissionTable [PerId] [DocId] [ユーザーID] [シーケンス番号] SubSequenceNo] CurrentStatusTable [StatusId] [SequenceNo] [DocId] And DocHistoryTable [DocHisId] [DocId] [ユーザーID] [操作] [コメント]。これらは私が使っているテーブルです。私の構造に何らかの瑕疵があるかどうか教えてください。操作は、コメントを受け入れるか拒否するかだけです。 – vikas27

    0

    以下は、アプリケーションをサポートする潜在的なアーキテクチャのスケルトンです。このテーブルには、テーブルの定義と各テーブルのカラムと、各テーブルのデータ例が含まれています。許可されたトランザクションには2つの目的があります。特定の状態の特定のドキュメントに対して要求されたアクションを生成すること。それらがデータベースに適用されたときのアクションを検証することができます。

    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

    関連する問題