1

メーカーがレコードを作成し、チェッカーによってレビューされるメーカーチェッカー機能を作成しています。チェッカーが承認するまで、レコードの作成は行われません。チェッカーがそれを拒否した場合は、ロールバックする必要があります。

私が知っているアイデアは、チェッカーが承認するまで作成されるレコードを保持するレコードの一時テーブルを作成することです。ただし、この方法では、すべての機能をカバーするために作成するテーブルの数が 2 倍になります。

これを達成するためのベストプラクティスは何ですか? Windowsワークフローでできることですか?(WWF)

4

2 に答える 2

2

データベースにさらにいくつかの列を追加するだけです。

  • ステータス : レコードの現在のステータス (承認待ち、承認済み、却下など)
  • メーカー : ユーザー名またはID
  • Checker : ユーザー名または ID
  • チェッカーの承認/却下時間

または、このようなテーブルが多数ある場合は、作成者/チェッカー ワークフローに必要であり、別のテーブルを追加して、他のすべてのレコードをこのテーブルに参照することができます。

Windowsワークフロー基盤もあなたのために働くかもしれませんが、個人的には使いにくいと感じています

recored のリビジョンが必要な場合は、さらに列が必要です。リビジョン番号や IsLastRevision など。

データベースへのアクセスとレコードの変更に何を使用しているのかわかりません。OR/M を使用している場合は、Update をオーバーライドして、すべての保存でリビジョンを実行できます。例えば

void Update(Entity e )
{
 Entity n = new Entity();
  // Create a copy of e ( With AutoMapper for example or manually )
 e.Current = true;
 e.RevisionNumber += 1;
 Update(e);
 Insert(n);

}
于 2012-06-20T11:13:28.070 に答える
1

この場合、次の 2 つのオプションがあります。

2 つの同一のテーブルを作成し、1 つのテーブルを承認済みデータ用に使用し、もう 1 つを要求データ用に使用します。

また

TypeID(requested/approved) を持つユーザーに対して 2 つの行を作成できます。この場合、ユーザーは typeID = requested でリクエストを作成します。承認者がそのリクエストを承認したときに、現在の承認済みレコードを新しいレコードで上書きするだけです。それ以外の場合は、リクエストされた行を拒否ステータスでマークします。

于 2012-06-20T11:18:27.893 に答える