Uml 具有相同触发器/事件但不同保护的多个转换的状态机

Uml 具有相同触发器/事件但不同保护的多个转换的状态机,uml,state-machine,statechart,Uml,State Machine,Statechart,如果我有一个状态S1,有两个转换,都是由事件“a”触发的,但其中一个作为保护x=0而另一个没有。当guard有效(x==1)时,预期的行为是什么 难以捉摸 采取带警卫的过渡 采取无防护过渡 我不记得读过关于不能对同一事件进行两次转换的文章 如果x!=0,例如,x==1,则不启用与x==0的转换,另一个未防护的转换被禁用。另一个被解雇了 如果x==0,则两个转换都将启用。这就是所谓的“冲突转换”(见UML,第575页)的情况。冲突解决通常相当复杂,请参见UML规范。在您的特定情况下,如果两个转换保

如果我有一个状态S1,有两个转换,都是由事件“a”触发的,但其中一个作为保护
x=0
而另一个没有。当guard有效(
x==1
)时,预期的行为是什么

  • 难以捉摸
  • 采取带警卫的过渡
  • 采取无防护过渡

  • 我不记得读过关于不能对同一事件进行两次转换的文章

    如果
    x!=0
    ,例如,
    x==1
    ,则不启用与
    x==0
    的转换,另一个未防护的转换被禁用。另一个被解雇了


    如果
    x==0
    ,则两个转换都将启用。这就是所谓的“冲突转换”(见UML,第575页)的情况。冲突解决通常相当复杂,请参见UML规范。在您的特定情况下,如果两个转换保持相同的状态,则结果是不确定的:如果
    x!=0
    ,例如,
    x==1
    ,则不启用与
    x==0
    的转换,另一个未防护的转换被禁用。另一个被解雇了


    如果
    x==0
    ,则两个转换都将启用。这就是所谓的“冲突转换”(见UML,第575页)的情况。冲突解决通常相当复杂,请参见UML规范。在您的特定情况下,如果两个转换都保持相同的状态,则结果是不确定的:任何一个转换都可能被执行

    我刚刚意识到我的guard解释是错误的,但您答案的第二部分对此进行了解释。我刚意识到我的卫兵解释是错误的,但你回答的第二部分解释了这一点。你应该再检查一遍。