0

いくつかのエンティティを持つツリー状の構造があります。プロセスはステップで構成され、ステップにはサブプロセスがある場合があります。中止とやり直しという 2 つの失敗モードがあるとします。失敗信号をツリーの上下にカスケードするツリー トラバーサル ロジックを実装しました。中止の場合はすべて順調です。abort は正しく上下にカスケードし、その親と子に通知します。やり直しの場合、失敗したプロセスを置き換えるために新しいプロセスが作成されることを除いて、同じことが起こります。私は DataMapper パターンを使用しているため、新しいオブジェクトはそれ自体を保存することはできず、エンティティが永続性や一般的なサービスの知識を持っていないことを考えると、永続性のために新しいオブジェクトを EntityManager に渡す方法もありません。

では、EntityManager をドメイン レイヤーに渡さない場合、新しいオブジェクトの作成をスコープ外になる前にどのように検出できるでしょうか?

これは、JMSAopBundle などの AOP を実装するのに適したケースでしょうか? これは私が読んだことですが、有効なユースケースを実際に見つけていません。

4

2 に答える 2

0

私があなたの問題を正しく理解していれば (あなたの説明は少し急いで書かれているようです)、私は次のことを行います:

  • 失敗したノードと新しいノードに何らかのフラグ (つまりダーティ フラグ) を付けます。
  • 失敗したノードと新しいノードの数をツリー イテレータにカウントさせる
  • 処理が必要な失敗したノードまたは新しいノードがなくなるまで、ツリーの反復/再実行プロセスを必要なだけ繰り返します。
于 2013-10-05T17:19:39.587 に答える