以下は、アプリケーションをサポートする潜在的なアーキテクチャのスケルトンです。このテーブルには、テーブルの定義と各テーブルのカラムと、各テーブルのデータ例が含まれています。許可されたトランザクションには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
お返事ありがとうございます。もし私がXMLなしで分岐を使用したいのであれば、構造体は何でなければなりません。すべてのワークフローをXMLではなくデータベースに保存するだけで済みます。 – vikas27
さて、データベースフィールドはXMLを保持できるので、相互に排他的ではありません。単純な並列処理(複数のステップが同時に実行されている)が必要な場合は、一意でないステップ番号を使用して、同時に同じ手順で各ワークフロープロセスを起動させ、次の現在のステップのすべてのプロセスが終了するまでステップ番号を入力します。条件付き分岐が必要な場合は、条件の複雑さと、すべての条件がバイナリまたはトライナまたはポリであるかどうかによって異なります。 –
私の議論と私の理解によると、私は4つのテーブルを作っています。 DocumentTable [DocId] [DocName] [DocType] [DocLocation] [UploadedBy] [DocStatus] PermissionTable [PerId] [DocId] [ユーザーID] [シーケンス番号] SubSequenceNo] CurrentStatusTable [StatusId] [SequenceNo] [DocId] And DocHistoryTable [DocHisId] [DocId] [ユーザーID] [操作] [コメント]。これらは私が使っているテーブルです。私の構造に何らかの瑕疵があるかどうか教えてください。操作は、コメントを受け入れるか拒否するかだけです。 – vikas27