您可以将状态图设计成从不忽略触发式操作,以代替使用 IS_IN 宏来确定接收方所处的状态。要完成此任务,请创建由对象中的子状态组成的超状态,并在该超状态中创建具有触发器的静态反应以返回正确的值。例如,要确保始终读取传感器而不考虑对象所处的状态,请在超类中创建具有以下过渡的静态反应:
opRead/reply(getStatus())
这样,无论对象处于哪种子状态,都将始终返回正确的值。虽然处于子状态时超状态的触发器和子状态的触发器都处于活动状态,但将采用以超状态为目标的过渡的触发器,这是因为它的优先级较高。请参阅 过渡选择。