指定状态图警戒

状态图警戒是一个条件表达式,此表达式将根据对象特性和事件数据进行求值。

关于此任务

IBM® Rational® Rhapsody® 不解释警戒。它们是必须解析为可以测试的布尔值或整数值的主语言表达式,或者仅仅是代码块。否则,为警戒生成的状态图代码将无法通过编译。

以下示例说明一个过渡标签,此标签由一个警戒和一个动作组成,该动作使用 GEN 宏来生成事件:

[x > 7]/controller->GEN(A7Failures)

一个过渡只能包含一个警戒。条件(或布尔值)的从低到高过渡被视为触发事件。例如,以下警戒是有效的过渡标签:

[x > 7]

动画期间每次发生事件时,都将对所有没有触发器的警戒进行测试。以下状态图使用多个没有过渡的警戒。

使用了没有过渡的警戒的状态图

此状态图用于热警报系统的小键盘。警报系统的小键盘处于空闲状态时,您可以在离开房间前输入代码以启用警报。输入代码后,按“开”按钮以打开警报。按“开”按钮将发出 evKeyOn 事件。每次发生此事件时,状态机都将对决策节点后的两个警戒([IS_IN(correct)][IS_IN(notEntered)])进行求值并沿求值为 true 的警戒的路径前进。

通过使用动画时序图,您可以确定警戒何时被测试。如果您希望更频繁或者比事件发生更有规律的频率测试某个条件,那么可以创建轮询机制。要完成此任务,请创建一个从该状态到其自身的短超时过渡,以便至少在这些情况下对该警戒进行求值。另外,还可以使用另一个对象进行轮询并将当前状态图中的警戒替换为从轮询对象发出的事件。

注: 使用有副作用的警戒并不具有代表性,这是因为,它可能会在应用程序中引起问题。

反馈