6

たとえば、私はビジネスプロセス管理アプリケーションを構築しています。次のエンティティがあります。多くのタスクに対する1つの問題として相互に関連する問題とタスク。タスクと問題の両方に独自の状態があり、一方の状態がもう一方の状態に影響を与える可能性があります。

たとえば、どちらも「キャンセル済み」と「完了」の状態になっています。問題の状態を「キャンセル済み」に変更すると、すべてのタスクが「キャンセル済み」になります。すべてのタスクの状態を「完了」に変更すると、問題は自動的に「完了」になります。

両方のエンティティにかなりの数の状態があり、ある状態から別の状態への遷移のロジックが変化し、状態の依存関係が変わる可能性があると仮定すると、その状況を処理するためのデザインパターンやベストプラクティスはありますか?

4

2 に答える 2

2

思い浮かぶデザインパターンは「ルール」です;-)

または、必要に応じて、コマンド パターン

つまり、このような状況では、状態と許容可能な遷移をリストしたデータベース テーブルを作成し、(リフレクションを使用して) 各遷移にアクションを関連付けます。

これは、ステータスを更新して一致させるだけではなく、遷移アクションがより複雑なケースを処理するのに役立つことがわかりました。

たとえば、あるシステムでは、リクエスト ドキュメントが複数の委員会のレビュー ステーションを通過する必要があるワークフローがありました。各委員会のレビュー ステーションは、ドキュメントを却下するか、次のステージに渡すことができ、カスタムの副作用処理もありました。委員会の組織、処理構造、および処理アクションは、開発中に3 回、展開の最初の年にさらに 5 回大幅に変更されました。

于 2009-06-09T04:55:19.507 に答える
2

私はこの種のオブザーバー パターンを好みます: http://en.wikipedia.org/wiki/Observer_patternあなたが示した例では、タスクに問題を監視させ、問題にタスクを監視させます。課題がキャンセル済みとしてマークされると、タスクが表示され、それ自体がキャンセル済みとしてマークされます。タスクが完了とマークされると、課題はそれを認識し、他のタスクが完了しているかどうかを確認します。

于 2009-06-09T04:56:45.933 に答える