什么是';do';在UML状态图中做什么?
我不能100%确定“做”在UML状态图中的作用 我的想法是否正确: 如果发生转换,将首先执行“entry”,然后执行“do”。 如果我们离开这个州,只会执行“退出” 这个逻辑也适用于自反性转换吗 如果一个触发器发生了,那怎么办?这不会引发一个转换?这是否只执行“do”?告诉我们: 14.2.3.4.3说明进入、退出和行动行为 一个状态也可能具有相关的doActivity行为。此行为在输入状态时开始执行(但仅在状态输入行为完成后),并与可能与状态关联的任何其他行为同时执行,直到:什么是';do';在UML状态图中做什么?,uml,state,sta,Uml,State,Sta,我不能100%确定“做”在UML状态图中的作用 我的想法是否正确: 如果发生转换,将首先执行“entry”,然后执行“do”。 如果我们离开这个州,只会执行“退出” 这个逻辑也适用于自反性转换吗 如果一个触发器发生了,那怎么办?这不会引发一个转换?这是否只执行“do”?告诉我们: 14.2.3.4.3说明进入、退出和行动行为 一个状态也可能具有相关的doActivity行为。此行为在输入状态时开始执行(但仅在状态输入行为完成后),并与可能与状态关联的任何其他行为同时执行,直到: 完成(在这种
- 完成(在这种情况下生成完成事件)或
- 状态已退出,在这种情况下,doActivity行为的执行将中止
正如上面最后一句所说,这取决于反射转换是内部的还是外部的。为了给布鲁诺的答案添加更具体的内容 如UML规范所述(bruno在其回答中引用),do活动是在系统处于特定状态时(在进入活动完成后)执行的。它在系统处于状态的整个时间内执行。do活动仅在两种情况下停止执行:
- 将您带出状态的转换被触发;在这种情况下,do活动被中断,执行退出活动(如果有),然后发生转换。转换可以是自反的(即,一旦完成,系统将返回到相同的状态),在这种情况下,将执行首次进入活动,一旦完成,do活动将再次开始
- do活动自行完成;在这种情况下,一旦do活动完成,就是离开状态的时候了。因此,执行最终退出活动并执行转换。一个有效的系统应该有一个或多个没有触发事件的转换(如果不止一个,那么它们应该具有允许唯一确定将使用哪一个的条件),一旦退出活动完成(或者如果没有退出,则执行)
- 入口:打开水阀
- do:监测水位
- 出口:关闭水阀
- do:以n速度旋转滚筒n秒
当洗衣机进入此状态时,它立即开始滚动滚筒(除非因某些异常事件而中断)在预定义的时间内一直这样做。一旦时间过去,do活动立即中断,并发生到下一个状态的转换。在这种情况下,do活动控制下一个状态转换的发生时间,至少在典型场景中是这样。@bruno不幸的是,它没有。因此,如果我们正在离开状态。在这种情况下,只会执行“退出”,对吗?如果我们处于一种状态,并且我们有一个不会触发转换的触发器,那么将执行“do”?你说的内部和外部自反转换是什么意思?@Nime自反转换可以是内部的,也可以是外部的,当你添加自反转换时,你可以ave选择它是哪一个。因此,在内部自转换的情况下,do行为不会中止。如果没有可能的转换,do行为可以(继续)不管是否被执行,UML并没有说要与任何情况兼容,因为我们不知道它是否在循环中、在计时器上执行,以及它的执行时间有多长