サブダイアグラム

アクティビティー・ダイアグラムのロジックが複雑になった場合、ロジックを区分し、ロジックの個別単位を サブダイアグラム として使用する方が役に立つことがあります。各サブダイアグラムは、特定のメインダイアグラムに関連付けられます。

図 43 に、アクティビティー・メインダイアグラムに Retrieve サブダイアグラムと Delete サブダイアグラムという 2 つのサブダイアグラムへの参照が含まれるシナリオを示します。

図 43. 2 つのサブダイアグラムがあるシナリオ


注:
イテレーターは、サブダイアグラムの特殊な形式です。サブダイアグラムに関するすべての基本情報は、イテレーターに適用されます。特にイテレーターに関する詳細については、"イテレーター"を参照してください。

シナリオ内のアクティビティー・ダイアグラムは、階層的に配置されています。

シナリオ内のすべてのサブダイアグラムとイテレーターは、シナリオのアクティビティー・メインダイアグラムより下位にあります。図 44 にこの関係を示します。

サブダイアグラム・シンボルが表示されるアクティビティー・ダイアグラムは、サブダイアグラムの親ダイアグラム と呼ばれます。

図 44. メインダイアグラムとサブダイアグラムの関係


サブダイアグラムは、すべてのコラボレーション・テンプレート・プロパティーおよびすべてのシナリオ変数にアクセスできます。表 39 に、サブダイアグラムとメインダイアグラムの相違点を要約します。

表 39. メインダイアグラムとサブダイアグラムの比較
相違点 メインダイアグラム サブダイアグラム
設計時の作成方法 シナリオの作成時に自動的に作成されます。 親ダイアグラムでサブダイアグラム・シンボルによって制御されます。
実行時の実行要因 コラボレーション・ランタイム環境によってトリガー・イベントが渡されるときに実行が開始されます。 親ダイアグラムの実行経路がこのサブダイアグラムに到達すると実行が開始されます。つまり、トリガー・イベントはありません。
未処理例外または発生した例外の処理方法 コラボレーション・ランタイム環境に渡します。 親ダイアグラムに渡します。
実行時の完了方法 コラボレーション・ランタイム環境に戻されます。 親ダイアグラムに戻されます。

サブダイアグラムの作成

サブダイアグラムをアクティビティー・ダイアグラムに追加する手順は、以下のとおりです。

  1. シンボル・ツールバーの「サブダイアグラム」ボタンをクリックします。
  2. アクティブなアクティビティー・ダイアグラム内でサブダイアグラム・シンボルを配置する位置をクリックします。

    サブダイアグラムの固有 ID が表示され、シナリオ・ツリーの階層内で親ダイアグラムの下に配置されます。

    シナリオ・ツリーでは、名前が以下のフォーマットで表示されます。

    (UID)
     

    サブダイアグラムにラベルを使用する場合、シナリオ・ツリーでは、名前が以下のフォーマットで表示されます。

    label (UID)
     

    UID は、シナリオ・ツリー内のサブダイアグラム・オブジェクトの名前でもある固有 ID です。

    その他のシンボルの UID のように、サブダイアグラムの UID を表示するかどうかを選択できます。UID の表示のオン/オフを切り替えるには、テンプレート・ツリーのシナリオ・ノードのコンテキスト・メニューを使用します。

  3. シナリオ・ツリー内のサブダイアグラム名をダブルクリックするか、ダイアグラム・エディター・ウィンドウ内のノードを右マウス・ボタンでクリックし、「サブダイアグラムを開く」を選択します。

    新しいアクティビティー・ダイアグラムを定義するための新しいウィンドウが作業域に表示されます。

アクティビティー・メインダイアグラムの場合と同じように、サブダイアグラムも開始シンボルから始まって終了成功シンボル (および必要に応じて 1 つ以上の終了障害シンボル) で終わります。サブダイアグラムには、すべてのダイアグラミング・コンポーネント (サブダイアグラムおよびイテレーターを含む) を入れることができます。

サブダイアグラムの定義

サブダイアグラムがアクティビティー・ダイアグラムに表示されたら、「Subdiagram Properties」ダイアログでそのプロパティーを定義できます。

サブダイアグラムのプロパティーは、そのラベルおよび説明です。

これらのプロパティーを使用するかどうかは任意です。

サブダイアグラム・プロパティーを定義する手順は、以下のとおりです。

  1. 「Subdiagram Properties」ダイアログを表示します。

    このダイアログは、以下のいずれかの方法で表示できます。

  2. オプションで、このサブダイアグラムにラベルおよび説明を指定します。

    UID より詳しいテキストを使用してサブダイアグラムにラベルを付けることにより、アクティビティー・ダイアグラムがよりわかりやすくなります。

    「説明」フィールドは、サブダイアグラムの目的を示すコメント用フィールドです。

  3. 「適用」をクリックしてサブダイアグラム・プロパティーを保管します。プロパティーを消去する場合は、「破棄」をクリックします。サブダイアグラム定義を取り消す場合は、「閉じる」をクリックします。

サブダイアグラムの削除

サブダイアグラムを削除するには、親ダイアグラムまたはサブダイアグラムを表示し、以下の手順を実行します。

  1. 削除するサブダイアグラムのシンボルを選択します。
  2. 「編集」メニューから「削除」オプションを選択します。または、DEL (Delete) キーをクリックします。

シナリオ・ツリーで親ダイアグラムを展開すると、サブダイアグラムが削除されている場合はサブダイアグラム名が表示されません。

サブダイアグラムの完了状況の処理

親ダイアグラムの実行は、サブダイアグラムの実行状況に対応しています。

サブダイアグラムの例外時の振る舞いと完了状況を決定するのは、サブダイアグラムの開発者です。コラボレーションは以下のいずれかの手順でサブダイアグラムを意図的に終了できます。

サブダイアグラムの正常な実行の処理

終了成功の終了ノードは、実行が正常に終了していることを示します。サブダイアグラムの終端に終了成功ノードが配置されている場合には、コラボレーション・ランタイム環境によりサブダイアグラムが終了され、制御が親ダイアグラムに渡されます。

親ダイアグラムのフローは、サブダイアグラム・ノードの次のノードに進みます。一般にこの次のノードは、サブダイアグラムの状況を調べる決定ノードです。この決定ノードには、サブダイアグラムの実行状況を評価する以下の分岐を設定できます。

サブダイアグラムが正常終了する場合、以下のいずれかの方法で終了します。

注:
開発者は、例外が検出された場合でも、例外が処理される限り、成功で終了するサブダイアグラムを使用できます。正常終了とは、サブダイアグラムの実行が終了成功シンボルに到達し、発生したあらゆる例外をそのコードが処理できた状態だけを意味します。

決定ノードの作成方法の詳細については、決定ノードを参照してください。例外処理の実装方法の詳細については、例外処理を参照してください。

サブダイアグラムの実行不成功の処理

終了障害の終了ノードは、実行が正常に終了していない ことを示します。サブダイアグラムの終端に終了障害ノードが配置されている場合には、コラボレーション・ランタイム環境によりこのサブダイアグラムとコラボレーション全体が終了されます。

制御がコラボレーション・ランタイム環境に渡されます。これにより、コラボレーションのログ記録先にエントリーが記述され、未解決のフローが作成されます。

サブダイアグラムを失敗で終了する場合、以下のいずれかの方法で終了します。

サブダイアグラムが終了障害ノードで終わっている場合には、コラボレーション・ランタイム環境によりコラボレーション全体 が終了されます。サブダイアグラムで検出された例外を処理する方法については、サブダイアグラムまたはイテレーターの正常終了を参照してください。コラボレーション・ランタイム環境による未解決のフローの作成方法については、メインダイアグラムの正常終了を参照してください。

Copyright IBM Corp. 2004