【问题标题】:One transition with multiple events in UML State diagramUML 状态图中具有多个事件的一次转换
【发布时间】:2017-03-12 16:35:50
【问题描述】:

我们在学校学习行为状态图的转换有语法:

事件列表[保护条件]/动作列表

但我在 Internet 上找不到任何使用带有多个事件的转换的示例。真的有可能吗?如果是,它的行为如何?这是否意味着当其中一个事件发生时(当然条件满足),交易就实现了?

【问题讨论】:

    标签: uml diagram transitions state-diagram


    【解决方案1】:

    是的,转换可以由列表中的许多事件之一触发。您可以使用这样的结构来避免状态之间出现多条线,从而制作出更整洁的图表。

    这是 2.5 规范所说的:

    14.2.3.9.2 启用过渡

    当且仅当以下情况启用转换:

    • [ . . . ]

    • Transition 的至少一个触发器具有与所调度的事件发生的事件类型相匹配的事件。

    这些逻辑 OR 的转换以文本形式指定为转换上的逗号分隔列表,如 §14.2.4.9 中所述:

    [<trigger> [‘,’ <trigger>]* [‘[‘ <guard>’]’] [‘/’ <behavior-expression>]]
    

    【讨论】:

    • 该死,为什么你总能找到樱桃 ;-)
    • 谢谢你的回答:)
    【解决方案2】:

    不幸的是,UML 规范在这方面并不具体(我认为,但 Jim 有正确的答案)。无论如何:

    14.2.4.9 过渡

    Transition 的默认文本符号由以下 BNF 表达式定义:

    [<trigger> [‘,’ <trigger>]* [‘[‘ <guard>’]’] [‘/’ <behavior-expression>]]
    

    触发器的标准符号在哪里(参见子条款 13.3.4),是一个用于保护的布尔表达式,可选是一个表达式,用于指定以某些供应商特定或标准文本表面语言编写的效果行为(参见子条款 16.1)。触发器可以是任何标准触发器类型。 SignalEvent 触发器和 CallEvent 触发器不能通过语法区分,必须通过它们在其他地方的声明来区分。

    在规范中的其他地方,这一段以类似的方式出现,但没有解释如何处理多个触发器。我假设这是一个OR-条件。但这只是一个假设。唉,既然你没有看到例子(我也没有),这可能是一个未知的事实。只是不要使用它 - 这确实是可能的 ;-) 如果你碰巧找到一个例子,只要问作者他的意思。 UML 是关于相互交谈的。

    【讨论】:

    • 感谢您的详细回答:)
    • 对于多个触发器,这就是 PSSM(状态机的精确语义)是你的朋友,即使它还不是一个正式的规范:“一个转换可能拥有一组触发器,每个触发器都指定一个事件的发生,在调度时,可能会触发转换的遍历。"
    • 我很高兴知道其他人都知道 PSSM!
    猜你喜欢
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多