PHP 5 で「トランザクション コーディネーター」の実装を作成するためのアイデアや資料への参照を誰かが提供してくれることを願っています。このドライバーは、マルチベンダーの単一ビジネス プロセス統合に基づいています。潜在的な障害点があるため、大量の if、スイッチ、try..catch を使用したスパゲッティ コードを避け、メソッド呼び出しをインターセプトし、後続の呼び出しへの応答を追跡し、メソッド属性に問い合わせて、どの補正関数を決定するかを決定できるコーディネーターを用意したいと考えています。トランザクションを取り消すために使用します。その意図は、「ACID」のような処理を作成することです。最後に参照できるのは、.Net の TransactionScope オブジェクトです。
サンプル シナリオ:
ServiceA
ServiceB
ServiceC
ServiceA->DoSomething() - passes
ServiceB->DoSomething() - passes
ServiceC->DoSomething() - fails
この時点で、A と B は何らかの補償戦略を採用して、データベース、サード パーティの統合、または元の状態に戻す機能を呼び出す必要があります。
私が最初に考えたのは、何らかのタイプの AOP を使用して、コンペンセータへの参照と、反転アクティビティを完了するための状態要件を保持することです。コーディネーターは、コンペンセーターの呼び出しを可能にするために、実行を追跡するだけでなく、実行の状態を返す必要があります。