WF4 について懸念を表明したいと思います。鳥の観点からワークフローを説明しているように思えます。ワークフローは、情報 (フォーム) が、それぞれ異なる責任を持つ複数の関係者によって承認される必要があるというものです。
MVC の見込み客から問題を見ると、次のことがわかります。
- 役割ベースの認証を使用した ASP.NET フォーム認証があります。
- 複数のモデルがあります - 情報 (あなたがそれを呼んだフォーム) だけでなく、
project manager
、team leader
、 などの他の複数のモデルがありdirector
ます。さらに、ドメイン モデル (Entity Framework 4/LINQ2SQL/NHibernate) 内の他の多数のジョイナー テーブル/エンティティ...
- そのデータを操作するためには、権限に基づいて、各ユーザーがアクセスできるビューのセットが異なる必要があります。
- 各ビューの背後には、データ ソースへの読み取り/書き込みの単調な作業やその他のロジックを処理するコントローラーもあります。
アプリで何らかのロジックを実現するためにワークフローを作成することは確かにできますが、最終的にそれらのワークフローはコントローラーから呼び出されます。さらに、各当事者からの承認プロセスが「承認」ボタンまたはその他の UI インタラクションをクリックすることである場合、これを実現するために WF4 を使用する意味はないと思います。
私の意見では、WF4 は UI インタラクションにはあまり適していません。大量のデータを操作したり、複雑なロジックを調整して何らかのタスクを達成したりするバックエンド コードを作成する場合に、これは非常に優れています。ただし、あなたが説明したシナリオでは、実際にはそのような用途はありません。
承認プロセスは、多くても FormID、ApproverID、DateApproved、ApproverType、およびその他の情報を含むデータベースに「承認済み」レコードを設定する必要があります。(承認者 ID は、承認を行うユーザーの Guid/一意の識別子です)。
チーム リーダーとディレクターの両方の「承認待ち」フォームを表示するビューは、承認テーブルの結合が null レコードを生成するフォーム テーブルをクエリする必要があります (別名... 承認レコードは存在しません)。ドメインモデルとデータがどのように構造化されているかを考えると、探しているものを達成するためにコントローラー以上のものは必要ありません。