アクションの表記方法

<< 目次を表示 >>

ページ位置:  UMLのモデリング > UMLの要素 > 振る舞い図に関連する要素 > アクション >

アクションの表記方法

アクション要素は、とても幅広く利用されます。Enterprise Architectでは、さまざまな種類のアクション要素に対応し、それぞれの種類はオブジェクトや操作・振る舞いなどさまざまな内容に対応しています。アクションの一般的な表記方法は、角の丸い長方形です。アクションの種類とアクション名が表記されます。

 

 

ツールボックスのアクションのアイコンをダイアグラム内にドロップすると、下の図のようなメニューが表示されます。このメニューでは、よく作成する種類が表示されています。表示されない場合には、[Ctrl]キーを押しながらドロップしてください。

 

 

表示されている種類のうちの一つを選択すると、その要素が表示されます。「その他」を選択すると、下の図の新規アクションダイアログが表示されます。

 

 

このダイアログで設定することで、通常のアクション要素のほか、操作呼び出しアクションや振る舞い呼び出しアクションなどを作成することができます。「その他」を選択するとその他の種類を指定することができます。

 

作成後に変更する場合には、対象のアクション要素をダイアグラム内で右クリックし、「プロパティ」 を選択します。プロパティダイアログが表示されるので、追加属性グループの「kind」の値で希望の種類を指定します。値指定アクションの場合には、「Value」の値も設定・変更できます。

 

 

 

 

アクション要素は、下の例のようにプロパティによって表記方法を変えることができます。

種類:

イベント受信

AcceptEvent

種類:

時間イベント受信

AcceptEventTimer

種類:

振る舞い呼び出し

CallBehavior

種類:

操作呼び出し

CallOperation

種類:

シグナル送信

SendSignal

 

 

イベント受信アクション

イベント受信アクションは、出力を示すアクションピンを持ち、アクションが受信するトリガを指定できます。

イベント受信アクションのプロパティサブウィンドウには、トリガタブがあります。このタブで、このアクションが受信するトリガを指定します。

項目

説明

名前

トリガの名前です。

種類

トリガの種類です。次のいずれかになります。

  • 呼び出し - メッセージを送信し、送信先の要素の操作を呼び出すための呼び出しイベントです。振る舞いを指定します。
  • 変更 - メッセージを送信し、送信先の要素の操作を呼び出すための呼び出しイベントです。
  • シグナル - メッセージを送信し、送信先の要素の操作を呼び出すための呼び出しイベントです。シグナル要素を指定します。
  • 時間 - ある特定の時間を示す時間イベントです。

注意:

ステートマシン図からのコード生成では、変更および時間のみに対応しています。

シミュレーションでは、トリガにはシグナルが結びつく必要があります。

仕様

遷移を発生させるイベントについて記述します。

イベント受信アクションについては、 この欄にJavaScript形式で式を記述することで、シミュレーションの実行時に待機する時間を指定することができます。

 

 

シグナル送信アクションおよびシグナルのブロードキャストアクション

シグナル送信およびシグナルのブロードキャスト(BroadcastSignal)アクションでは、対象となるシグナルを指定することができます。プロパティサブウィンドウの条件タブを利用します。

 

 

SendSignalアクションは、targetとなるアクションピンと、関係するシグナルが定義されます。必要に応じて、アクションピンを追加しシグナルのパラメータに結びつけて、シグナルの入力値とすることもできます。例えば以下のような定義になります。

 

::Sender: sig.binding_To_s1: Integer

 

 

モデルのシミュレーション実行時には、SendSignalアクションは引数に指定された値を、シグナルのパラメータの値として設定し、シグナルを発効します。アクションが持つアクションピンはシグナルを送信するために利用されます。もし、シグナルのパラメータに対応するアクションピンが適切に存在しない場合には、シミュレーションは停止します。パラメータがオブジェクトの場合には、そのオブジェクトを作成し、パラメータとします。シグナルを受け取る側のピンの型も適切に設定する必要があります。

 

BroadcastSignalアクションはSendSignalアクションとほぼ同じですが、ターゲットとなるアクションピンを持ちません。シグナルは、シミュレーション全体に向けて発行されます。

 

要素のプロパティダイアログのシグナルグループでは、関係するシグナルの詳細を定義できます。

項目

説明

シグナル

「シグナル」の欄の隣にある「選択」ボタンを押し、シグナルの選択ダイアログを表示します。このダイアログでシグナル要素を指定します。

属性

「属性」の欄では、ドロップダウンリストから属性を選択できます。

「値」の欄では、属性に対応する値を入力します。

追加

属性に対応するアクションピンを指定します。追加ボタンを押すと、ピンを指定できます。

注意:

複数のピンを割り当てる場合には、[Ctrl] キーを押しながら選択して下さい。

保存

変更を保存します。

 

 

振る舞い呼び出し

CallBehaviorアクションは、アクション要素などの振る舞い要素を呼び出します。アクションピンには、その振る舞いから戻り値が格納されます。もしアクションに関連する振る舞いが定義されていない場合には、シミュレーションは停止します。また、アクションピンを引数として追加することで、その振る舞いに値を渡すこともできます。

 

 

オブジェクト送信

SendObjectアクションはrequestのアクションピンからtargetのアクションピンへ、オブジェクトを渡します。ピンが不足している場合、シミュレーションは停止します。

 

 

構造特性を持つアクション

Enterprise Architectでは、次の種類の構造特性アクションが利用できます。:

 

アクション

説明

AddStructuralFeatureValue

ReadStructuralFeatureアクションには、対象のオブジェクトを指定するための、入力を指定するobjectアクションピンと、読み込んだ内容を出力するためのresultアクションピンがあります。実行時にオブジェクトのポートに適切な入力値が渡されない場合には、シミュレーションはこのアクション要素で停止します。

シミュレーションモデルを構築する際には、入力のobjectピンは、オブジェクトが格納されている他のピンか、アクティビティ要素のオブジェクトノードと接続する必要があります。また、入力となる値が適切に設定されている必要があります。

出力となる、resultアクションピンは、他のポートの入力として利用することができます。例えば、次に説明するWriteStructuralFeatureアクションの入力値として利用できます。

ClearStructuralFeature

ClearStructuralFeatureアクションは、入力として受け取ったオブジェクトの単一の属性の値をクリア(値をnullに設定)します。

ReadStructuralFeature

AddStructuralFeatureValueと似ていますが、ポートの値は必須ではありません。

シミュレーションでは、実行時にポートの値が空の場合には、シミュレーションはその時点で停止します。

RemoveStructuralFeatureValue

RemoveStructuralFeatureValueアクションはClearStructuralFeatureアクションと似ていますが、入力としてのvalueアクションピンを持ちます。このvalueの値が対象の項目の値と一致する場合には、その値をクリアします。一致しない場合には、何も処理しません。

WriteStructuralFeature

AddStructuralFeatureValueと同一です。シミュレーションでは、入力値を取得するために値Portを設定する必要があります。

 

アクション要素の種類によっては、ターゲットの構造特性として、ポート・パート・属性を持つことができます。

 

手順:  

#

操作方法

1

ダイアグラム内のアクション要素を選択します。

2

構造特性の欄の右端にある参照[...]ボタンを押します。プロパティの指定ダイアログが表示されます。

(このダイアログは要素の選択ダイアログと同じです。)

3

対象の構造特性要素を選択してください。選択した要素が「構造特性の欄に表示されます。

 

 

ReadSelf

ReadSelfアクションは、自分自身の名前を取得し、resultポートに出力します。出力結果となるアクションピンを保持する必要があります。

 

このアクションはクラス内に保持され、そのクラスが実行時にインスタンス化されている必要があります。シミュレーションの実行時には、クラスのインスタンスの名前を出力ポートに渡します。

 

ReadSelfはCreateObjectやDestroyObject.と合わせて利用します。

 

 

参照: