IBM® Rational® Rhapsody® 无法解释执行单一动作并接着终止的简单状态图。例如,如果将一个任务表示成活动类,并且该类带有一个实际上执行单一动作并终止的简单状态图,那么您可能想绘制以下示例所示的状态图。
在此图中,doIt() 代表需要创建的动作。
此状态图有两个问题:
- Rational Rhapsody 框架不允许活动实例在初始的“运行到完成”(RTC) 步骤中终止。换而言之,startBehavior() 调用不能借助已被销毁的对象结束。
- startBehavior() 调用将对创建者线程执行初始步骤,而不是作为实例线程的组成部分来执行该步骤。实例线程在初始步骤之后处理事件。在此状态图中,将对创建者线程执行 doIt() 操作,这可能与期望不符。
变通方法是,对指向过渡的初始连接器创建一个哑动作。此动作可以对实例线程运行,因此将正常终止。
例如,以下状态图将动作的执行推迟到线程准备好对其进行处理为止。