<< 目次を表示 >> ページ位置: シミュレーション > 振る舞いモデルのシミュレーション > JavaScriptを利用した自動実行 > ガード・アクション |
フローや遷移のガードとアクションは、処理の流れを制御したり、シミュレーション中に追加の処理を行う場合に利用できます。
項目 |
参照 |
ガード |
ガードでは、シミュレーション実行中に次の遷移先を決める為の条件式を指定します。一般的にはガードでは次のような特徴があります。
|
ガードの定義 |
ガードの内容を定義するには、コントロールフローや遷移(以下、まとめて「パス」と記述します)のプロパティダイアログを利用します。 ガードには、JavaScriptの文法で、trueあるいはfalseのどちらかの結果になるような条件式を記入します。下の画像の例では、シミュレーション変数Balanceの内容を参照し、0以上であればこのパスが実行できる条件を満たすことになります。なお、thisの接頭辞は、シミュレーション変数である事を示します。
|
評価式 |
シミュレーションの実行中には、次の遷移先を決める前に、遷移可能性のあるすべてのパスについて、それぞれのパスのガード条件を評価します。この評価の結果、以下のような処理が行われます。
|
アクション |
アクションとして処理を記述することで、以下の場合に内部の処理を行うことができます。
アクションの内容は、Javascript文法で記述できますし、他の振る舞いを呼び出せます。 |
Javascriptで記述する効果 |
Javascriptで効果を記述する場合には、以下のようになります。この例では、シミュレーション変数Balanceの変数の値を1減らしています。
|
振る舞い呼び出しのアクション |
下の例では、アクションの内容として別の振る舞い要素を指定しています。 この例では、"Decrement Balance"という名前のアクションを指定しています。シミュレーションの処理は指定された要素に移り、処理が完了するとアクションが指定されたパスの位置に戻ります。
|
アクションの実行順序 |
状態が入れ子になっているようなモデルのシミュレーションを実行する場合には、アクションの実行順序に注意する必要があります。シミュレーション機能では、以下の順序で処理が実行されます。
つまり、exitアクション・遷移のアクション・entryアクションという順序で実行されます。なお、遷移先の判定は、これらのアクションの実施前に行われる点にも注意が必要です。 |
Javascript変数についての注意 |
Javascriptの変数は、シミュレーション実行中に参照・利用できます。以下のいずれかの接頭辞が必要です。
これらの接頭辞により、シミュレーションのJavascriptエンジンでシミュレーション変数を確実に参照するようになります。なお、名前は、次の例のように、.(ピリオド)を複数利用して指定できます。
例. this.customer.name |
参照: