トリガーされた操作の呼び出しの確認

受信側のオブジェクトがトリガーされた操作に反応できる状態ではない場合、トリガーされた操作からの応答に問題が生じることがあります。予期しないときにトリガーされた操作が呼び出された場合、間違った戻り値が返されることがあります。

IS_IN マクロを使用して受信側の状態を判断する代わりに、トリガーされた操作が決して無視されないようなステートチャートを設計できます。このためには、サブ状態を包囲するスーパー状態をオブジェクト内に作成し、適正値を戻すトリガー付きの静的反応をスーパー状態内に作成します。例えば、オブジェクトがどのような状態かに関係なく、必ずセンサーが読み取られるようにするには、以下の遷移を持つスーパー状態内に静的反応を作成します。

opRead/reply(getStatus())

この方法をとれば、オブジェクトはどのサブ状態にあるかに関係なく、適正値が返されます。スーパー状態へのトリガーとサブ状態へのトリガーは両方ともサブ状態内ではアクティブですが、スーパー状態への遷移のトリガーの方が優先度が高いため、優先されます。遷移選択を参照してください。


フィードバック