例外の処理方法

コラボレーションの実行は、次の 2 つの実行状態 の内の 1 つになります。

コラボレーションは、実行時にこれらの 2 つの状態間を切り替えることができます。例外が発生するか raiseException() を実行すると、例外状態になります。例外分岐を使用してコラボレーション・テンプレートが例外をキャッチすると、通常状態に戻ります。アクティビティー・ダイアグラムが実行する (または実行しない) 例外処理に関係なく、コラボレーション・ランタイム環境は、例外の発生後もダイアグラムのロジックの実行を継続します。このロジックは、最終的に、終了成功ノードまたは終了障害ノードで終了します。コラボレーション・ランタイム環境では、コラボレーションの実行状態を使用して、コラボレーションが終了した際に未解決のフローを作成するかどうかを判別します。終了ノードの詳細については、実行経路の終了を参照してください。未解決のフローの詳細については、例外状態の処理を参照してください。

通常状態の処理

コラボレーション・ランタイム環境でコラボレーションが正常に実行されている間は (アクティビティー・ダイアグラムのロジックで定義されたように)、コラボレーションの実行は通常状態です。実行経路を終了するために可能な方法には、以下のものがあります。

例外状態の処理

コラボレーションの実行が例外状態になっても、コラボレーション・ランタイム環境は実行を停止しません。それに対し、通常状態での実行の場合のように、アクティビティー・ダイアグラムのロジックで定義されている実行を継続します。この実行経路を終了するために可能な方法には、以下のものがあります。

メインダイアグラムの正常終了

終了成功ノードでメインダイアグラムが終了すると、コラボレーション・ランタイム環境でコラボレーションが終了します。コラボレーションの実行が例外状態の場合、コラボレーション・ランタイム環境は次のステップを実行して例外を処理します。

  1. エラーをコラボレーションのログ宛先に記録します。ログ宛先は、標準出力 (STDOUT) またはログ・ファイルにすることができ、InterChange Server Express のログ宛先の構成方法によって異なります。
  2. 不成功のコラボレーションのために未解決のフロー を作成します。

    コラボレーションが例外状態で実行を終了すると、未解決のフローはそのままになります。未解決のフローには以下のものが含まれています。

    コラボレーション・ランタイム環境によりこの未解決のフローが InterChange Server のイベント再サブミット・キューに送信され、そこでサーバー管理者は再サブミットのためにこれを解析および評価できます。Flow Manager ツールを使用すると、管理者はイベント再サブミット・キューにアクセスできます。

    管理者は、終了したコラボレーションの名前、およびエラー条件を説明するメッセージなどの、未解決のフローについての情報を調査することができます。

    注:
    Flow Manager の使用法の詳細については、「システム管理ガイド」を参照してください。

デフォルトでは、コラボレーション・ランタイム環境は、次の非常に単純な例外メッセージを未解決のフローに関連付けしています。

Scenario failed.
 

このデフォルトの例外メッセージでは、管理者が未解決のフローの原因をトラブルシューティングするのに使用できる情報はあまり提供されません。しかし、コラボレーション・テンプレートをコーディングして例外を生成すると、発生した実際のエラー状態についての詳細情報を例外メッセージに設定できます。コラボレーション・ランタイム環境で例外を処理する場合、この詳細な例外メッセージを未解決のフローと関連付けできます。詳細については、例外の発生を参照してください。

サブダイアグラムまたはイテレーターの正常終了

終了成功ノードでサブダイアグラム (またはイテレーター) が終了し、コラボレーションの実行が例外状態の場合、コラボレーション・ランタイム環境で次のステップが実行されます。

  1. 制御を親ダイアグラムに渡します。親ダイアグラムとは、サブダイアグラム (またはイテレーター) ノードを含むダイアグラムです。
  2. サブダイアグラム (またはイテレーター) を例外処理ノードと接続する親ダイアグラムの決定ノードですべての例外分岐を検査します。以下のいずれかのアクションを実行します。

ダイアグラムが終了成功または終了障害のいずれかで終了するまで、コラボレーション・ランタイム環境で親ダイアグラムのロジックは継続して実行されます。コラボレーション実行が例外状態である限り、コラボレーションが終了するときにランタイム環境で例外が処理されます。各実行レベルが終了成功で終了する場合、メインダイアグラムに達するまで、次に高いレベルに制御が渡されます。メインダイアグラムで例外をキャッチしない場合、このコラボレーションは終了され、制御はコラボレーション・ランタイム環境に渡されます。

Copyright IBM Corp. 2004