コラボレーションの実行は、次の 2 つの実行状態 の内の 1 つになります。
コラボレーションは、実行時にこれらの 2 つの状態間を切り替えることができます。例外が発生するか raiseException() を実行すると、例外状態になります。例外分岐を使用してコラボレーション・テンプレートが例外をキャッチすると、通常状態に戻ります。アクティビティー・ダイアグラムが実行する (または実行しない) 例外処理に関係なく、コラボレーション・ランタイム環境は、例外の発生後もダイアグラムのロジックの実行を継続します。このロジックは、最終的に、終了成功ノードまたは終了障害ノードで終了します。コラボレーション・ランタイム環境では、コラボレーションの実行状態を使用して、コラボレーションが終了した際に未解決のフローを作成するかどうかを判別します。終了ノードの詳細については、実行経路の終了を参照してください。未解決のフローの詳細については、例外状態の処理を参照してください。
コラボレーション・ランタイム環境でコラボレーションが正常に実行されている間は (アクティビティー・ダイアグラムのロジックで定義されたように)、コラボレーションの実行は通常状態です。実行経路を終了するために可能な方法には、以下のものがあります。
コラボレーション・ランタイム環境は現行のダイアグラムの実行を停止して、次に高い実行レベルに制御を渡します。
コラボレーションの実行が通常状態の場合、コラボレーション・ランタイム環境では未解決のフローは作成されません。
コラボレーション・ランタイム環境はコラボレーションの実行を停止して、通常状態のコラボレーションのステップを実行します (失敗での終了を参照)。
コラボレーションの実行が例外状態になっても、コラボレーション・ランタイム環境は実行を停止しません。それに対し、通常状態での実行の場合のように、アクティビティー・ダイアグラムのロジックで定義されている実行を継続します。この実行経路を終了するために可能な方法には、以下のものがあります。
コラボレーション・ランタイム環境は現行のダイアグラムの実行を停止して、次に高い実行レベルに制御を渡します。それには以下の場合があります。
詳細については、メインダイアグラムの正常終了を参照してください。
コラボレーション・ランタイム環境でコラボレーションの実行を停止します。コラボレーションの実行が例外状態の場合、コラボレーション・ランタイム環境は次に例外を処理します。例外処理ステップについては、メインダイアグラムの正常終了を参照してください。
終了成功ノードでメインダイアグラムが終了すると、コラボレーション・ランタイム環境でコラボレーションが終了します。コラボレーションの実行が例外状態の場合、コラボレーション・ランタイム環境は次のステップを実行して例外を処理します。
コラボレーションが例外状態で実行を終了すると、未解決のフローはそのままになります。未解決のフローには以下のものが含まれています。
コラボレーション・ランタイム環境によりこの未解決のフローが InterChange Server のイベント再サブミット・キューに送信され、そこでサーバー管理者は再サブミットのためにこれを解析および評価できます。Flow Manager ツールを使用すると、管理者はイベント再サブミット・キューにアクセスできます。
管理者は、終了したコラボレーションの名前、およびエラー条件を説明するメッセージなどの、未解決のフローについての情報を調査することができます。
デフォルトでは、コラボレーション・ランタイム環境は、次の非常に単純な例外メッセージを未解決のフローに関連付けしています。
Scenario failed.
このデフォルトの例外メッセージでは、管理者が未解決のフローの原因をトラブルシューティングするのに使用できる情報はあまり提供されません。しかし、コラボレーション・テンプレートをコーディングして例外を生成すると、発生した実際のエラー状態についての詳細情報を例外メッセージに設定できます。コラボレーション・ランタイム環境で例外を処理する場合、この詳細な例外メッセージを未解決のフローと関連付けできます。詳細については、例外の発生を参照してください。
終了成功ノードでサブダイアグラム (またはイテレーター) が終了し、コラボレーションの実行が例外状態の場合、コラボレーション・ランタイム環境で次のステップが実行されます。
ダイアグラムが終了成功または終了障害のいずれかで終了するまで、コラボレーション・ランタイム環境で親ダイアグラムのロジックは継続して実行されます。コラボレーション実行が例外状態である限り、コラボレーションが終了するときにランタイム環境で例外が処理されます。各実行レベルが終了成功で終了する場合、メインダイアグラムに達するまで、次に高いレベルに制御が渡されます。メインダイアグラムで例外をキャッチしない場合、このコラボレーションは終了され、制御はコラボレーション・ランタイム環境に渡されます。