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アクティビティが失敗したときにのみ実行されます。*