私はビジネスプロセス管理アプリケーションを構築しています。それには次のようなエンティティがあります。課題とタスクは、互いに1つの問題として多くのタスクに関連しています。タスクと問題の両方は、独自の状態を持ち、状態の1つが別の状態に影響する可能性があります。2つの状態マシンを同期させる
たとえば、両方に「キャンセル」と「完了」の状態があります。問題の状態を「キャンセル」に変更すると、そのタスクはすべて「キャンセル」されます。すべてのタスクの状態を「完了」に変更すると、問題は自動的に「完了」になります。
両方のエンティティのステートがかなりあり、あるステートから別のステートへの遷移のロジックがあり、ステートの依存性が変わる場合、その状況を処理するためのデザインパターンやベストプラクティスはありますか?心に飛躍
これは、問題に応じてアクションを実行するサービスです。これはワークフローを管理するうえで最適なパターンですが、2つのステートマシンをきれいな透過的で保守可能な方法で同期させるのに役立つわけではありません。 – artemb
は、 "同じステータスを作る"と同等のアクションがトリックをしないでしょうか? –
私は本当にそのような行動を想像することはできません。たとえば、問題の状態を「キャンセル」に更新するCancelIssueActionがあります。その問題のタスクをすべてキャンセルしたい場合は、それをCancelIssueActionにコーディングする必要があります。これはあまり透明ではありません。 – artemb