次の状況を想像してみてください。Windowsサービスは、データベーステーブルのデータを随時チェックします。新しいデータが表示されると、新しい各行の処理が開始されます。
処理はいくつかの論理的な段階で構成されています。
- Webサービスからいくつかの追加データを取得します。
- ステージ1のデータを使用して、Webサービスを介してexistinsオブジェクトを検索するか、新しいオブジェクトを作成します。
- 実行されたアクションを関係者に通知します(ステージ2で検出/作成されたオブジェクトに関する詳細を含む)。
- 他のsmthを行います。
今のところ、例外が発生した場合、サービスはDB行を更新し、間違いが発生したことを示すフラグを設定します。しばらくして、サービスは行をもう一度処理しようとします...そしてここに問題があります。
処理は最初からステージ1から開始されます。この場合、ステージ4で例外が発生し、それが何度も発生する場合は、ステージ3の関係者に何度も通知されます...
例外が発生した場合に行処理を完全に停止することは不可能であり、私の状況では望ましくありません。前回失敗した段階から処理を開始する方法があればいいのにと思います。
今、私はこれらすべてをどのように扱うことができるかについてあなたのアドバイスが必要です。実際、処理にはいくつかのパターンがあり、ステージの数も異なるため、すべてがさらに複雑になります。
前もって感謝します。
アップデート
はい、データ行にStateパラメータがあります:)今のところ使用されていません。そして、例外処理は私にとって新しいことではありません。
問題は、状態の切り替えを処理するための最良の方法は何ですか?言い換えれば、ステージ番号と処理方法の間に明確な論理リンクを作成するには?実行のフローは非常に異なる可能性があり、さまざまな行のさまざまな数のステージとメソッドが含まれます。
新しいsutiationごとに無限のswitch/caseブロックを作成するよりも、もっと楽しい方法があるといいのですが。