如果条件在输入时为真或稍后变为真,则状态转换

问题描述 投票:0回答:1

我正在 MagicDraw 中开发状态机模型。几乎我所有的状态转换都是双倍的,因为这就是我在移交期间被告知要做的事情。

即,在两个状态之间,我将同时拥有 [MyInteger >= 50] 当(MyInteger >= 50)

如果进入该状态时条件为真,则第一个操作;如果在状态已处于活动状态时条件为真,则第二个操作。

这似乎是必要的,因为“当”仅在从假到真的转换时触发,并且普通防护似乎仅在进入状态时才会被评估。

有什么方法可以将它们组合成图中的单个箭头吗?我的东西可以用,但看起来不整洁。

language-lawyer uml state-machine sysml
1个回答
0
投票

这并不完全正确。第一个称为“完成转换”。当原始状态完成其行为时,它就会触发。这里的行为是指子状态以及入口和执行行为。因此,当您想在“完成事件”和“更改事件”上保留状态时,您需要两次转换,这是正确的。我自己没有遇到过这样的情况。 也许状态机不是解决您问题的正确方法。我不知道你想达到什么目的。 一次转换可以有多个触发器。但是,不能与完成转换结合使用,因为 UML 通过缺乏触发器来识别此类转换。

© www.soinside.com 2019 - 2024. All rights reserved.