状态机:与转换关联的行为期间的异常

时间:2017-03-28 16:34:08

标签: uml

行为可能与转换相关联,这就是效果。我记得读过一个效果和一个后卫应该没有副作用而且没有任何重复。

但是阅读标准的2.5版本,我再也找不到了。

我错了吗?如果不是,如果在效果期间发生异常会发生什么?

解决方案可能是根据效果的结果来定义防护,但是可能吗?事实上我从来没有这样做过。

1 个答案:

答案 0 :(得分:1)

页。 358:

  

♦guard:Constraint [0..1] {subsets Namespace :: ownedRule}(与A_guard_transition :: transition相反)   守卫是一种约束,可以对过渡的射击提供细粒度的控制。在StateMachine调度Event事件时评估防护。如果此时保护为真,则可以启用转换,否则禁用转换。卫兵应该是没有副作用的纯粹表达。带有副作用的警卫表达形成不良。

页。 375:

  

由于在向目标节点提供令牌时使用了转换或选择行为,因此在目标节点接受令牌之前,它可能会在同一令牌上运行多次。这意味着行为不会产生副作用。它不应修改对象,但转换可以是,例如,从一个对象导航到另一个对象,从对象获取属性值,或用另一个对象替换数据值。

您应该阅读14.2.3.9.1 The run-to-completion paradigm部分,其中详细说明了转换是如何发生的。在(非常)短路中,如果在转换的行为执行期间发生异常,则不进行此转换。