次の方法で共有


UML アクティビティ図: ガイドライン

Visual Studio Ultimate では、アクティビティ図を描画して、ビジネス プロセスまたはソフトウェア アルゴリズムを一連のアクションを使用したワーク フローとして記述できます。ユーザー、ソフトウェア コンポーネント、またはデバイスがこれらのアクションを実行できます。ビデオ デモについては、「Capture Business Workflows by using Activity Diagrams (アクティビティ図を使用してビジネス ワークフローをキャプチャする)」を参照してください。

UML アクティビティ図を生成するには、[アーキテクチャ] メニューの [新しい図] をクリックします。

アクティビティ図は、さまざまな用途に使用できます。

アクティビティ図を描画して、プロセスの改善に役立てることができます。既存のプロセスの図が非常に複雑な場合は、プロセスを単純化する方法を検討できます。

アクティビティ図の要素に関するリファレンス情報については、「UML アクティビティ図: リファレンス」を参照してください。

このトピックの内容

他の図との関係

アクティビティ図を描画するための基本的な手順

制御フローの記述

データ フローの記述

アクションのより詳細な定義

同時実行フロー

他の図との関係

アクティビティ図を描画してビジネス プロセスを記述したりユーザーがシステムを使用する方法を記述したりする場合は、ユース ケース図を描画して、同じ情報の異なるビューを表すことができます。ユース ケース図では、アクションをユース ケースとして描画します。ユース ケースには、対応するアクションと同じ名前を付けます。ユース ケース ビューには、次のような利点があります。

  • 包含関係を使用して、大規模なアクションまたはユース ケースが小さいアクションまたはユース ケースで構成されていることを 1 つの図に示すことができます。

  • それぞれのアクションまたはユース ケースをその実行に関係するユーザーまたは外部システムに明示的に接続できます。

  • システムまたはシステムの各主要コンポーネントでサポートされているアクションまたはユース ケースの周囲に境界線を描画できます。

また、アクティビティ図を描画して、ソフトウェア操作の詳細な設計を記述することもできます。

アクティビティ図では、アクション間で受け渡されるデータのフローを表すことができます。「データ フローの記述」を参照してください。ただし、アクティビティ図には、データの構造は示されません。これを行うには、UML クラス図を使用します。詳細については、「UML クラス図: ガイドライン」を参照してください。

アクティビティ図を描画するための基本的な手順

モデル図を生成するための詳細な手順については、「方法: UML モデルおよび UML 図を編集する」を参照してください。

アクティビティ図を描画するには

  1. [アーキテクチャ] メニューの [新しいダイアグラム] をクリックします。

  2. [テンプレート][UML アクティビティ図] をクリックします。

  3. 図に名前を付けます。

  4. [モデリング プロジェクトへの追加] で、ソリューション内の既存のモデリング プロジェクトを選択するか、[新しいモデリング プロジェクトを作成します] を選択します。

アクティビティ図に要素を描画するには

  1. ツールボックスから図に要素をドラッグします。

    最初に、主要なアクティビティを図に配置し、アクティビティどうしを接続します。次に、開始ノードや終了ノードなどを設定して最終的な仕上げを行います。

    [!メモ]

    UML モデル エクスプローラーから既存の要素を図にドラッグすることはできません。

  2. 要素を接続するには、次の手順に従います。

    1. アクティビティ図ツールボックスの [コネクタ] をクリックします。

    2. 図内の接続元の要素をクリックします。

    3. 接続先の要素をクリックします。

      [!メモ]

      ツールを複数回使用するには、ツールボックス内でツールをダブルクリックします。

アクティビティを別のパッケージに移動するには

  • UML モデル エクスプローラーで、アクティビティをパッケージ内にドラッグします。

    または

  • UML モデル エクスプローラーで、アクティビティを右クリックし、[切り取り] をクリックします。次に、パッケージを右クリックし、[貼り付け] をクリックします。

    [!メモ]

    アクティビティは、図に最初の要素を追加したときにのみ UML モデル エクスプローラーに表示されます。

制御フローの記述

アクティビティ図は、ビジネス プロセスまたはソフトウェア アルゴリズムを一連のアクションとして表します。コネクタの矢印は、どのようにして制御が 1 つのアクションから次のアクションに順次渡されるかを示します。通常、アクションは、前のアクションが完了した後でのみ開始できます。

次の図は、アクション、コネクタ、分岐、およびループを使用した一連のアクションの例を示しています。それぞれの要素については以降のセクションで詳しく説明します。

単純アクティビティ ダイアグラム

アクティビティ図では、アクションコネクタを使用して、制御が 1 つのアクションから次のアクションに順次渡される一連のアクションとしてシステムまたはアプリケーションを記述します。

  • ユーザー、システム、またはその両者のコラボレーションによって実行される主要なタスクごとにアクション (1) を生成します。

    [!メモ]

    プロセスまたはアルゴリズムを少数のアクションで記述するようにしてください。「振る舞い呼び出しアクションを使用したサブアクティビティの記述」に説明されているように、振る舞い呼び出しアクションを使用すると、それぞれのアクションを別個の図により詳細に定義できます。

  • それぞれのアクションには、アクションによって通常達成される処理を明確に示すタイトルを付けます。

  • コネクタ (2) を使用して、アクションを順にリンクします。

  • それぞれのアクションは、制御フローにおける次のアクションが開始される前に終了します。並行して実行されるアクションを記述するには、「同時実行フロー」に説明されているように、フォーク ノードを使用します。

図には一連のアクションが記述されますが、アクションがどのように実行されるか、または制御が 1 つのアクションから次のアクションにどのように渡されるかは記述されません。図を使用してビジネス プロセスを表す場合、たとえば、あるユーザーが別のユーザーに電子メール メッセージを送信するときなどに、制御が渡されます。図を使用してソフトウェアの設計を表す場合、通常の実行のフローによって、制御が 1 つのステートメントから次のステートメントに渡されます。

Dd409465.collapse_all(ja-jp,VS.110).gif判断およびループの記述

  • デシジョン ノード (3) は、判断の結果に基づいて次の手順が決定されるポイントを示すために使用します。出力パスは必要な数だけ描画できます。

  • アクティビティ図を使用してアプリケーションの一部を定義する場合は、ガード (4) を定義して、各パスがいつ使用される必要があるかを明確にする必要があります。コネクタを右クリックし、[プロパティ] をクリックして、プロパティ ウィンドウの [ガード] フィールドに値を入力します。

  • ガードは必ずしも定義する必要はありません。たとえば、アクティビティ図を使用してビジネス プロセスまたは相互作用プロトコルを記述する場合、分岐によってユーザーまたは相互作用の対象のコンポーネントが利用できるオプションの範囲を定義します。

  • マージ ノード (5) は、デシジョン ノードで分岐した複数の代替フローを 1 つにまとめるために使用します。

    [!メモ]

    マージ ノードは、フローを 1 つのアクションにまとめるためではなく、代替フローを 1 つにまとめるために使用する必要があります。この例の場合、デシジョン ノードから直接 Choose Menu Item に戻って接続するのは適切ではありません。それは、制御のスレッドがそのすべての入力コネクタに到達しないとアクションが開始されないからです。したがって、同時実行フローのみを 1 つのアクションにまとめる必要があります。詳細については、「同時実行フロー」を参照してください。

  • 分岐は、例に示すように、ループを記述するために使用します。

    [!メモ]

    ループを入れ子にするとき、プログラム コードの場合と同様に、適切に構造化された形式にしてください。既存のビジネス プロセスを記述している場合は、これによって、ビジネス プロセスを改善するうえで解決する必要のある課題が見つかることがあります。

Dd409465.collapse_all(ja-jp,VS.110).gifアクティビティの開始

アクティビティの入場点は、2 つの方法で示すことができます。

  • 開始ノード

    アクティビティの最初のアクションを示すには、開始ノード (6) を 1 つ生成します。

    この方法は、サブアクティビティを記述している場合、またはアクティビティが開始される原因を明示的に示す必要がない場合に最も効果的です。たとえば、"料理の注文" というアクティビティは、顧客が空腹を感じたときに開始されることは明白です。

  • イベント受理ノード

    ユーザー入力などの特定のイベントに応答するスレッドの開始を示すには、「同時実行フロー」で説明されているように、イベント受理ノードを生成します。このノードには、入力フローを指定しないでください。入力フローを省略することで、イベントが発生するたびにスレッドが開始されることが指定されます。

    この方法は、特定の外部イベントに対する応答を記述するときに最も効果的です。

Dd409465.collapse_all(ja-jp,VS.110).gifアクティビティの終了

アクティビティの終了を示すには、アクティビティ終了ノード (7) を使用します。

  • 制御のスレッドがアクティビティ終了ノードに到達すると、アクティビティのすべての同時実行アクションおよびサブアクティビティが終了します。

  • 複数のアクティビティ終了ノードを使用することで、コネクタの追加によって図が煩雑になるのを抑えることができます。

Dd409465.collapse_all(ja-jp,VS.110).gifアクティビティの中断

アクティビティの通常のフローをどのように中断できるかを示すには (ユーザーがプロセスを取り消すことを決定した場合など)、そのイベントを待機するイベント受理ノードを生成します。詳細については、「同時実行フロー」を参照してください。イベント受理ノードからアクティビティ終了ノード (7) に到達する制御フローを生成します。

Dd409465.collapse_all(ja-jp,VS.110).gifスイムレーン

アクティビティのアクションを、そのアクションを実行する複数の異なるオブジェクトまたはビジネス ロールに対応する領域に分けて整理すると便利な場合があります。通常、これらの領域は列で区切られ、"スイムレーン" と呼ばれます。

  • スイムレーンまたはその他の領域を描画するには、ツールボックスの [単純なシェイプ] セクションに用意されている線または四角形を使用します。

  • それぞれのスイムレーンにラベルを付けるには、コメントを生成し、Transparent プロパティを True に設定します。

単純なシェイプは UML モデルの一部ではないため、UML モデル エクスプローラーに表示されません。

データ フローの記述

アクティビティ間で受け渡されるデータは、次の 2 つの方法のどちらかを使用して記述できます。

  • オブジェクト ノードを使用する方法。これは、アクティビティ間で受け渡される情報を記述する最も単純な方法です。オブジェクト ノードは、プログラムにおける変数に似ています。オブジェクト ノードは、あるアクションから別のアクションに渡される 1 つ以上の値を格納するものを表します。

  • 出力ピン入力ピンを使用する方法。この方法では、あるアクションからの出力と別のアクションへの入力を別個に記述できます。ピンは、プログラムにおけるパラメーターに似ています。ピンは、オブジェクトがアクションに入ったりアクションから離れたりできるポートを表します。

    [!メモ]

    このセクションで使用されている要素の概要については、「UML アクティビティ図: リファレンス」を参照してください。

Dd409465.collapse_all(ja-jp,VS.110).gifオブジェクト ノードを使用したデータの記述

ほとんどの制御フローはデータの伝送を伴います。たとえば、"Customer provides details" アクションからの出力フローは、配達先住所への参照の伝送を伴います。

図にこのデータを記述する場合は、次の図に示すように、1 つのコネクタを 1 つのオブジェクト ノードと 2 つのコネクタに置き換えます。

オブジェクト ノードはアクション間で渡されるデータを表示できる

角の丸い四角形 (たとえば、"Dispatch Goods") は、処理が発生するアクションを表します。角が直角の四角形 (たとえば、"Shipment Address") は、あるアクションから別のアクションへのオブジェクトのフローを表します。

オブジェクト ノードには、アクション間で受け渡されるオブジェクトの経路またはバッファーとしてのノードのロールを反映する名前を付けます。

オブジェクト ノードのは、プロパティ ウィンドウで設定できます。型には、整数型のような基本型か、またはクラス図で定義したクラス、インターフェイス、または列挙型を使用できます。たとえば、Street Address や City などの属性を持つ Shipment Address クラスを生成し、Customer という名前の別のクラスに関連付けることができます。詳細については、「UML クラス図: ガイドライン」を参照してください。

[!メモ]

定義されていない型の名前を入力した場合、UML モデル エクスプローラーの [未指定の型] の下に項目が追加されます。後でクラス図でこの名前の型を定義する場合は、新しい型を反映するようにオブジェクト ノードの型を再設定する必要があります。

Dd409465.collapse_all(ja-jp,VS.110).gifオブジェクト ノードでのデータのバッファリング

オブジェクト ノードは、複数のオブジェクトのバッファーとして機能できます。次の図の制御フローは、ユーザーが [choose more] ループ (1) を何度も繰り返すことができ、それと同時に、Chosen Menu Items オブジェクト ノード (2) にはユーザーによって選択された内容が蓄積されていることを示しています。最後に、ユーザーが選択を終了すると、Chosen Menu Items バッファーから選択項目の完全なリストを受け取る Confirm Order アクション (3) に制御が渡されます。

オブジェクト ノードでのデータのバッファリング

バッファー内の項目を格納する方法を指定するには、オブジェクト ノードのプロパティを設定します。

  • Ordering プロパティを設定します。

    • [順序なし]: ランダムな順序です。つまり、順序を指定しません (既定)。

    • [順序あり]: 特定のキーに従って順序を指定します。

    • [FIFO]: 先入れ先出し方式の順序を指定します。

    • [LIFO]: 後入れ先出し方式の順序を指定します。

  • Upper Bound プロパティを設定して、バッファーに格納できるオブジェクトの最大数を指定します。既定値は * です。この値は、無制限を示します。

Dd409465.collapse_all(ja-jp,VS.110).gif入力ピンおよび出力ピンを使用したデータ フローの記述

出力ピン入力ピンを使用すると、あるアクションからの出力と別のアクションへの入力を別個に記述できます。

入力ピンと出力ピンがアクション パラメーターになっている

ピンを生成するには、ツールボックスの [入力ピン] または [出力ピン] をクリックし、アクションをクリックします。次に、アクションの境界線上にピンを移動し、その名前を変更します。入力ピンおよび出力ピンは、振る舞い呼び出しアクション操作呼び出しアクションシグナル送信アクション、およびイベント受理アクションを含むあらゆる種類のアクションに生成できます。

2 つのピンを接続するコネクタは、オブジェクト ノードに出入りするフローとまったく同様に、オブジェクト フローを表します。

それぞれのピンには、それが生成するオブジェクトまたは受け入れるオブジェクトのロールを示す名前 (パラメーター名など) を付けます。

Type プロパティを使用して、転送されるオブジェクトの型を設定できます。これは、UML クラス図で生成した型である必要があります。

接続されているピンの間で転送されるオブジェクトには、何らかの互換性があることが必要です。これは、出力ピンによって生成されたオブジェクトは入力ピンの型の派生型に属するからです。

または、出力ピンの型と入力ピンの型の間におけるデータ変換がオブジェクト フローに含まれるように指定できます。この種の変換の最も一般的なものは、単に大きな型から適切な部分を抽出する変換です。図の例では、Order Detail から Shipping Address を抽出する変換が存在することが暗黙的に示されています。

アクションのより詳細な定義

アクションによって通常実現される結果が明確にわかる名前をアクションに付けるだけでなく、次の方法を使用して、アクションに詳細情報を追加することができます。

  • Body プロパティにより詳細な説明を記述します。たとえば、プログラム コードまたは擬似コードのフラグメントの説明や、アクションによって実現される結果の完全な説明を記述できます。

  • アクションを振る舞い呼び出しアクションに置き換え、その詳細な振る舞いを別のアクティビティ図で記述します。「振る舞い呼び出しアクションを使用したサブアクティビティの記述」を参照してください。

  • アクションの Local Postconditions プロパティと Local Preconditions プロパティを使用して、その結果をより詳細に記述します。詳細については、「事後条件および事前条件の定義」を参照してください。

Dd409465.collapse_all(ja-jp,VS.110).gif振る舞い呼び出しアクションを使用したサブアクティビティの記述

別のアクティビティ図を使用して、アクションの詳細な振る舞いを記述できます。呼び出し先振る舞いは、メインのアクティビティ図上で振る舞い呼び出しアクションによって示されるアクティビティ図です。また、振る舞い呼び出しアクションを使用して、複数の異なるアクティビティの間で共有される振る舞いを記述できるため、サブアクティビティを複数回描画する必要はありません。

次の図では、Diagram 1 は振る舞い呼び出しアクションを持つアクティビティを示し、Diagram 2 は呼び出し先振る舞いを示すサブアクティビティ図を示しています。

別のアクティビティ ダイアグラムが詳細なアクションを示している

振る舞い呼び出しアクションを使用してサブアクティビティを記述するには

  1. サブアクティビティの図を生成するには、ソリューション エクスプローラーでモデリング プロジェクトを右クリックして、[追加] をポイントし、[新しい項目] をクリックします。

  2. [新しい項目の追加] ダイアログ ボックスの [テンプレート] で、[アクティビティ図] をクリックし、[名前] ボックスに振る舞い呼び出しアクションに付ける名前を入力します。

  3. サブアクティビティの詳細なワーク フローを描画します。これが、呼び出し先振る舞いとなります。

    • 呼び出し先サブアクティビティ図において、開始ノードは、呼び出し先振る舞いが呼び出されたときに制御が開始される場所を示します。アクティビティ終了ノードは、制御が親アクティビティに返される場所を示します。
  4. 振る舞い呼び出しアクションBehavior プロパティを、呼び出し先振る舞い図を参照するように設定します。

    [!メモ]

    サブアクティビティ図には、いくつかの要素が含まれている必要があります。要素が含まれていなければ、Behavior プロパティのドロップダウン リストにその図が表示されません。さらに、Behavior プロパティを設定するまで、振る舞い呼び出しアクション シェイプに三分岐のアイコンは表示されません。

  5. アクションの Is Synchronous プロパティを設定して、アクティビティが呼び出し先アクティビティの完了まで待機するかどうかを示します。

    • Is Synchronous を false に設定した場合、フローは呼び出し先アクティビティが完了する前に次のアクションに進むことができます。出力ピンまたはアクションから出力データ フローは定義しないでください。

Dd409465.collapse_all(ja-jp,VS.110).gifサブアクティビティに出入りするデータ フローの記述

ソフトウェアでパラメーターを使用するのと同様に、サブアクティビティに出入りするデータのフローを記述できます。

  • 呼び出し先振る舞いアクションに、アクションに出入りするデータごとに入力ピンおよび出力ピン (1) を生成します。それぞれのピンに適切な名前を付けます。

  • サブアクティビティ図で、呼び出し元アクションの入力ピンおよび出力ピンごとにアクティビティ パラメーター ノード (2) を生成します。それぞれのノードには、対応するピンと同じ名前を付けます。

    [!メモ]

    アクティビティ パラメーター ノードは、オブジェクト ノードに似ています。操作対象のノードの型を調べるには、ノードを右クリックし、[プロパティ] をクリックします。ノードの型がプロパティ ウィンドウのヘッダーに表示されます。

  • サブアクティビティ図で、それぞれのアクティビティ パラメーター ノードに出入りするオブジェクトのフローを示すコネクタを描画します。

アクティビティ パラメーターへの振る舞い呼び出しマップのピン

Dd409465.collapse_all(ja-jp,VS.110).gif事後条件および事前条件の定義

Local Postconditions プロパティと Local Preconditions プロパティを使用して、アクションの結果を詳細に指定できます。これらのプロパティには、アクションの効果を記述します。その効果がどのように実現されるかは記述しません。

これらのプロパティを設定するには、アクションを右クリックし、[プロパティ] をクリックします。プロパティ ウィンドウで、プロパティの値を入力します。

Dd409465.collapse_all(ja-jp,VS.110).gifLocal Postconditions

事後条件とは、アクションを完成したと見なすうえで満たされている必要がある条件です。次に Confirm Order アクションの事後条件の例を示します。

クレジット カードの処理に必要なすべての有効な詳細情報を顧客が提供した。

事後条件では、アクションが発生する前の状態と発生した後の状態の関係を表すことができます。次に例を示します。

金利が以前の倍である。

アクションで処理されるデータの固有の属性を指定して、事後条件をより形式的なスタイルで記述することもできます。次に例を示します。

InvoiceTotal == Sum(OrderItem.MenuItem.Price)

Dd409465.collapse_all(ja-jp,VS.110).gifLocal Preconditions

事前条件とは、アクションを開始する準備が整った時点で満たされている必要がある条件です。次に Confirm Order アクションの事前条件の例を示します。

顧客がメニューから 1 つ以上の品目を選択した。

Dd409465.collapse_all(ja-jp,VS.110).gif操作の呼び出しの記述

一般に、アクションは、ユーザー、ソフトウェア、およびコンピューターのあらゆる組み合わせによって実行される作業を表します。ただし、操作呼び出しアクションを使用すると、特定のソフトウェア メソッドまたは関数の呼び出しを記述できます。

  • 操作呼び出しアクションには、呼び出される操作および対象のオブジェクトまたはコンポーネントを示す名前を付けます。

  • パラメーターおよび戻り値を記述するには、操作呼び出しアクションに入力ピンおよび出力ピンを追加します。

  • アクションの Is Synchronous プロパティを設定して、アクティビティが操作の完了まで待機するかどうかを示すことができます。

    • Is Synchronous を false に設定した場合、フローは呼び出し先操作が完了する前に次のアクションに進むことができます。出力ピンまたはアクションから出力データ フローは定義しないでください。

同時実行フロー

フォーク ノードジョイン ノードを使用すると、同時に実行できるアクティビティの複数のスレッドを記述できます。

分岐ノードと結合ノードが同時フローを示している

フォーク ノード (1) は、制御のスレッドを複数のスレッドに分割します。前のアクションが終了すると、フォークの出力側のすべてのアクションが開始可能になります。

ジョイン ノード (2) は、複数の同時実行スレッドを 1 つにまとめます。ジョイン ノード以降のアクションは、ジョイン ノードに渡されるすべてのアクションが完了した後で開始可能になります。

Dd409465.collapse_all(ja-jp,VS.110).gifシグナルおよびイベントの記述

シグナルを送信するプロセス内のステップは、シグナル送信アクションとしてアクティビティ内に表示できます。続行される前に特定のシグナルまたはイベントを待機するステップは、イベント受理アクションとして表示できます。

たとえば、注文を送信するステップと、その注文を処理する前に注文を受け取る必要のある別のステップを表示できます。

Dd409465.collapse_all(ja-jp,VS.110).gifシグナルの送信

シグナルまたはメッセージが他のアクティビティまたはプロセスに送信されることを示すには、シグナル送信アクション (3) を使用します。このアクションには、送信するメッセージの種類を示す名前を付けます。

  • 制御は、制御フローの次のアクションに即座に渡されます (存在する場合)。

  • シグナル送信アクションを使用して、返された情報に対するプロセスの応答を記述することはできません。これを行うには、別のイベント受理アクションを使用します。

  • シグナル送信アクションが受信するデータ フローを描画して、送信メッセージで送信できるデータを示すことができます。詳細については、「データ フローの記述」を参照してください。

Dd409465.collapse_all(ja-jp,VS.110).gifシグナルまたはイベントの待機

このアクティビティが外部イベントまたは受信メッセージを待機することを示すには、イベント受理アクション (4) を使用します。このアクションには、待機するイベントの種類を示す名前を付けます。

  • アクティビティがそのフローの特定のポイントで外部イベントまたはメッセージを待機することを示すには、入力フローを持つイベント受理アクションをアクティビティの適切な場所に描画します。

  • アクティビティがいつでも外部イベントまたはメッセージに応答できることを示すには、入力フローを持たないイベント受理アクションを描画します。名前付きの外部イベントが発生すると、イベント受理アクションから始まる新しいスレッドがアクティビティ内で開始されます。

  • イベント受理アクションを使用して、シグナルの送信側に返される値を記述することはできません。これを行うには、別のシグナル送信アクションを使用します。

  • アクションからの出力データ フローを描画して、シグナルで受信されたデータがアクティビティでどのように処理されるかを示すことができます。複数の出力フローを示すには、イベント受理アクションの IsUnmarshall プロパティを設定します。これは、アクションが入力シグナルを別個のコンポーネントに解析することを示します。詳細については、「データ フローの記述」を参照してください。

Dd409465.collapse_all(ja-jp,VS.110).gif複数のデータ フローの記述

アクションから出る複数の制御フローまたはオブジェクト フローを描画して、アクションが終了したときに発生する複数のスレッドを示すことができます。この効果はフォークの効果に似ていますが、制御フローとオブジェクト フローの組み合わせを使用できる点が異なります。

次の例は、アクションに出入りする複数のフローを示しています。

並列オブジェクト フロー

"Customer provides details" アクションが完了すると、"Shipment address" および "Credit card details" という 2 つのオブジェクトが生成されます。これらの 2 つのオブジェクトは、異なるアクションによって処理されるために先に進みます。

アクションは、すべての入力が利用できなければ開始できないため、最後のアクションは、それに到達するすべてのアクションが完了するまで開始されません。

Dd409465.collapse_all(ja-jp,VS.110).gifストリーム

アクティビティ図を使用すると、パイプライン (同時に実行され、連続的にデータが受け渡される一連のアクション) を記述できます。

次の例は、各アクションがオブジェクトを生成し、処理を継続できることを示しています。制御フローがないため、各アクションは最初のオブジェクトを受け取ったらすぐに開始可能になります。

この例のコネクタはすべて、アクティビティ パラメーター ノード、オブジェクト ノード、入力ピン、または出力ピンの少なくとも 1 つに接続されているため、オブジェクト フローです。

データ フロー

1.この例には、入力および出力を表すアクティビティ パラメーター ノードが 3 つあります。

2.オブジェクト ノード、入力ピン、および出力ピンは、バッファーを表すことができます。オブジェクト ノードの Upper Bound プロパティを使用して、1 つのバッファーに同時に格納できるオブジェクトの数を設定できます。

3.デシジョン ノードを使用すると、ストリームが分割されて複数の異なるオブジェクトが複数の異なる分岐に送信されることを示すことができます。コメントまたはノードのタイトルを使用して、分割の基準を説明できます。

4.フォーク ノードを使用すると、オブジェクトのコピーが複数作成され、同時実行処理に送信されることを示すことができます。

5.ジョイン ノードを使用すると、処理の 2 つのストリームが再び 1 つにマージされることを示すことができます。

Dd409465.collapse_all(ja-jp,VS.110).gif選択と変換

オブジェクト フロー内のオブジェクトが選択、変換、または選択されて変換されるように指定できます。オブジェクト フローとは、ピンまたはオブジェクト ノードに出入りするフローです。

  • 変換は、フローに含められるオブジェクトがどのように別の型に変換されるかを記述します。

  • 選択は、フローに含められるオブジェクトの一部のみがどのように受信側アクションに転送されるかを記述します。

この例は、変換を示しています。Diagram 1 の最初のアクションは、出力ピンで郵便番号を生成します。この出力ピンは、2 番目のアクションの入力ピンに接続されています。ただし、2 番目のアクションは、完全な住所を必要とします。別の型への変換は、2 番目のアクティビティである Address Lookup で指定されています。これは、オブジェクト フローの Transformation プロパティから参照されます。Address Lookup アクティビティには、入力される郵便番号のための 1 つのアクティビティ パラメーター ノードと、出力される完全な住所のための別のアクティビティ パラメーター ノードが含まれています。

別のダイアグラムに定義されたオブジェクト変換

変換または選択は、次の 2 つの方法で指定できます。

  • 入力ピンまたは出力ピンにコメントを追加します。

    • この説明を一般的なコメントと区別するには、コメントを <<変換>> または <<選択>> で開始します。
  • 変換または選択を独立したアクティビティ図で詳細に指定します。

    • この方法を使用する場合は、変換が定義されていることを明確にするためにコメントも追加してください。

変換または選択を独立したアクティビティ図で指定するには

  1. 変換フローまたは選択フローを記述する新しいアクティビティ図を生成します。

    • ソリューション エクスプローラーで、プロジェクトを右クリックし、[追加] をポイントして、[新しい項目] をクリックします。次に、[アクティビティ図] をクリックします。変換フローまたは選択フローを示す適切な名前を図に付けます。[追加] をクリックします。
  2. 新しい図で、次の操作を行います。

    1. 入力フロー用と出力フロー用の 2 つのアクティビティ パラメーター ノードを生成します。

    2. オブジェクト フローで相互接続されたアクションを生成します。これは、変換または選択の処理の内容を示します。

  3. 変換または選択を使用する任意の図で、次の操作を行います。

    1. オブジェクト フロー、つまり入力ピン、出力ピン、オブジェクト ノード、またはアクティビティ パラメーター ノードに出入りするコネクタを生成します。

    2. オブジェクト フローを右クリックし、[プロパティ] をクリックします。

    3. Transformation プロパティまたは Selection プロパティで、変換フローまたは選択フローを指定した図を選択します。

オブジェクト ノードに対して、および個々の入力ピンと出力ピンにおいて選択を定義することもできます。選択アクティビティを前の手順と同様に定義し、オブジェクト ノードまたは入力ピンと出力ピンの Selection プロパティを設定します。

参照

関連項目

UML シーケンス図: リファレンス

概念

方法: UML モデルおよび UML 図を編集する

UML コンポーネント図: リファレンス

UML ユース ケース図: リファレンス

UML クラス図: リファレンス

UML コンポーネント図: リファレンス

その他の技術情報

Video: Capture Business Workflows by using Activity Diagrams (ビデオ: アクティビティ図を使用してビジネス ワークフローをキャプチャする)