Bpel-using-fault-handling

提供:Dev Guides
移動先:案内検索

BPEL-障害処理の使用

フォルト処理の使用方法を理解するには、Oracle SOA SuiteのService Compositeの基本アーキテクチャを学習する必要があります。

  • サービスコンポーネント-BPELプロセス、ビジネスルール、ヒューマンタスク、メディエーター。 これらは、SOA複合アプリケーションを構築するために使用されます。
  • コンポーネントのバインド-SOAコンポジットと外部の世界との接続を確立します。
  • サービス-SOA複合アプリケーションへのエントリポイントを提供します。
  • Binding -SOAP/HTTP、JCAアダプタなどのサービスと通信するプロトコルを定義します。
  • WSDL -Webサービスのサービス定義を定義します。
  • 参照-SOA複合アプリケーションがメッセージを外部サービスに送信できるようにします
  • ワイヤー-サービスコンポーネント間の接続を有効にします。

障害の種類

さまざまな種類の障害を見てみましょう。

ビジネスの欠陥

アプリケーションがTHROWアクティビティを実行するか、INVOKEが応答として障害を受信すると発生します。 障害名はBPELプロセスサービスコンポーネントによって指定されます。 障害名と障害変数を使用する障害ハンドラーは、この障害をキャッチします。

ランタイム障害

これはシステムによってスローされます。 これらの障害は、 RunTimeFaultMessage に関連付けられており、

  • http://schemas.oracle.com/bpel/extensionnamespace*。

障害処理の方法

このセクションでは、障害処理のさまざまな方法について学習します。

アクティビティを投げる

Throwアクティビティは明示的に障害をスローします。 catchブロックはこの障害をキャッチし、対応するアクションが実行されます。

  • throwアクティビティを使用すると、ビジネスフォールトをスローできます。作成されたスコープ内で、このフォールトをキャッチし、呼び出し元(コンシューマー)にリダイレクトしてアクションを実行できます。
  • 上記のアプローチの代わりに、作成されたスコープのcatchアクティビティでキャッチされた同じ障害をスローします。 メインスコープでは、catchallアクティビティを使用してこの障害をキャッチできます。

エラーハンドラフレームワーク(EHF)

EHFで使用される2つの主なファイルは-

  • Fault-Policy.xml
  • Fault-Bindings.xml

BPELプロセスがエラーをスローするたびに、EHFはエラーがFault-Bindings.xmlファイルに存在するかどうかを確認します。 その場合、Fault-Policy.xmlファイルのアクションが実行されます。 アクションが見つからない場合、フォールトがスローされ、catchブロックで処理されます。

障害管理フレームワーク(Fault-Policy.xmlおよびFault-Bindings.xml)はSOAコンポジット内に保持されます。

catchやcatchallなどのフォールトハンドラーはすべてのフォールトをキャッチするためにBPEL内にありますが、* faultポリシーはinvokeアクティビティが失敗したときにのみ実行されます。*