ページの先頭行へ戻る
SystemwalkerRunbook Automation V14g BPM Studio利用ガイド

12.1.8 エラー処理の例

以下の例では、エラーアクションと補償アクションを持つ通常のJava Actionが実行されます。

エラーアクションの使用

この例では、エラーアクションが指定された通常のJava Actionの使用方法を示します。

以下の開始アクションを実行するとします。

  1. メールの送信

  2. FTPによるリモートへのファイル転送

  3. 外部データベースへの行の挿入

    これらの開始アクションに対して、Activityノードで以下のエラーアクションを作成します。

    開始アクション(PA)

    エラーアクション(EA)と設定

    メール送信(PA1)

    無処理Java Action(EA1):

    [エラー後の動作]設定:[プロセス続行]

    [対象とするException]設定:[以下で指定したExceptionをcatchする]

    FTPによるリモートへのファイル転送(PA2)

    通知アクション -> メール送信(EA2):

    [エラー後の動作]設定:[エラー状態へ遷移]

    [対象とするException]設定:[以下で指定したExceptionをcatchする]

    外部データベースへの行の挿入(PA3)

    接続エラー用のエラーアクション(ログファイルの記述など)(EA3.1):

    [エラー後の動作]設定:[エラー状態へ遷移]

    [対象とするException]設定:[以下で指定したExceptionをcatchする]

    重複エラー時(データベースエントリがすでに使用されていた場合)のエラーアクション(通知メールの送信など)(EA3.2)

    [エラー後の動作]設定:[プロセス続行]

    [対象とするException]設定:[以下で指定したExceptionをcatchする]

実行中、Java Actionは例外をスローする場合としない場合があります。例外がスローされた場合は、以下のアクションが実行されます。

注意

PA1、PA2、またはPA3が、エラーアクションの[対象とするException]設定で定義されていない例外をスローした場合は、エラーアクションは実行されず、すべての内部プロセスがロールバックされ、プロセスインスタンスはエラー状態になります。

以下の図は、通常のJava Actionとエラーアクションが実行される様子を示しています。

図12.8 Java Actionとエラーアクションの実行

補償アクションの使用

この例では、通常のJava Actionで補償アクションがどのように機能するかを示します。

補償アクションは、通常の実行パスでは実行されません。補償アクションは、トランザクションがロールバックされた場合に、それ以前の成功したアクション群に対して実行されます。補償アクションは、別のトランザクションで、逆の順序で実行されます。

アクションセット内の各Java Actionに対して、複数の補償アクションを定義できます。

注意

補償アクションを別の補償アクションに対して定義することはできません。補償アクションが例外をスローした場合、プロセスインスタンスは直ちにエラー状態になり、残りの補償アクションの実行は中止されます。

以下の例では、前の例で説明した開始アクションに2つのJava Actionを追加して実行します。

  1. メールメッセージの送信

  2. 他のアクション

  3. FTPによるリモートへのファイル転送

  4. 他のアクション

  5. 外部データベースへの行の挿入

一部の開始アクションに対して補償アクションを作成したとします。補償アクションをいつ実行するかは、アクションリストのどこに配置するかで正確に指定できます。以下の表は、開始アクションに対して指定されている補償アクションを示しています。

開始アクション(PA)

補償アクション(CA)

メールの送信(PA1)

別のメールメッセージの送信(元のメール変更に関するお詫びなど)(CA1)

他のアクション(PA2)

補償アクションは未定義(CA2)

FTPによるリモートへのファイル転送(PA3)

FTPサーバからのファイルの削除(CA3)

他のアクション(PA4)

補償アクションは未定義(CA4)

外部データベースへの行の挿入(PA5)

外部データベースからの行の削除(CA5)

実行中、Java Actionは例外をスローする場合としない場合があります。実行時には、以下のアクションが実行されます。

注意

成功したアクションだけを補償できます。たとえば、PA5が失敗した場合は、CA3およびCA1だけが実行されます。

以下の図は、通常のJava Actionと補償アクションの実行を示しています。

図12.9 通常のJava Actionと補償アクションの実行

エラーアクションと補償アクションの使用

この例では、Java Actionが例外をスローした場合に、エラーアクションおよび補償アクションがどのように実行されるかを示します。

以下の例では、2つのJava ActionからなるJava Actionセット(開始アクションセットなど)を作成しています。

実行時には、以下のアクションが実行される可能性があります。