グローバル例外ハンドラーのオーケストレーションへの追加

実行時にオーケストレーションのアクティビティーのいずれかが例外をスローする場合、グローバル例外ハンドラーが有効になっていれば、グローバル CatchAll ブランチが実行されます。

このタスクについて

オーケストレーションの例を以下の図に示します。

オーケストレーションの例

この例では、「データベースへの挿入 (Database Get Inserted)」アクティビティーまたは「データベース行の挿入 (Database Insert Rows)」アクティビティーが失敗して例外をスローすると、CatchAll ブランチの「If..Then」アクティビティーが実行されます。

手順

  1. オーケストレーションの「開始」アイコン 「開始」アイコン を右クリックして、メニューから「catchAll ブランチの追加」オプションを選択します。オーケストレーションに CatchAll ブランチが追加され、以下の変数が自動的に作成されます。
    • faultName - 実行時に、オーケストレーションのアクティビティーからスローされた例外の名前が faultName 変数に含まれます。
    • faultData - 実行時に、例外に関連するエラー・メッセージが faultData 変数に含まれます。この追加情報が返されるのは、現時点では Web サービス・アクティビティーの場合に限られます。 Web サービス・アクティビティーでは、faultData 変数に障害が含まれます。
    • faultInfo - 実行時に、以下のノードが faultInfo 変数から返されます。
      • name - 実行時に、オーケストレーションのアクティビティーからスローされた例外の名前が faultInfo/name ノードに含まれます。 faultInfo/name ノードは、xsd:QName 型です。
      • message - 実行時に、例外に関連するエラー・メッセージが faultInfo/message ノードに含まれます。faultInfo/message ノードは、xsd:string 型です。
      • activityId - 実行時に、例外が発生したアクティビティーを一意的に識別するアクティビティー ID が faultInfo/activityId ノードに含まれます。faultInfo/activityId ノードは、xsd:int 型です。
      • activityName - 実行時に、例外が発生したアクティビティーの名前が faultInfo/activityName ノードに含まれます。faultInfo/activityName ノードは、xsd:string 型です。
      • faultTime - 実行時に、エラーが発生した時刻が faultInfo/faultTime ノードに含まれます。faultInfo/faultTime ノードは、xsd:dateTime 型です。
      注: アクティビティーから faultName 変数と faultInfo/name ノードに返される例外名は、今後のリリースで変更される可能性があります。
  2. 前の図で示すように、「アクティビティー」タブから CatchAll ブランチにアクティビティーをドラッグ・アンド・ドロップして、CatchAll ブランチを構成します。

タスクの結果

注: faultNamefaultDatafaultInfo の各変数のスコープは、CatchAll ブランチに限定されています。 このスコープ制限からすると、これらの変数の値が有効であることが保証されているのは、CatchAll ブランチの中に限られます。 例えば、faultName 変数をテストする「If...Then」アクティビティーを追加する場合は、前の図にあるように、その「If...Then」アクティビティーを CatchAll ブランチの中に配置する必要があります。