知识卡片

转换的三段式标签语法

结构图卡 · 1949.i

内容

转换(transition)表示从一个状态到另一个状态的转移,它的标签由三部分组成:trigger-signature[guard]/activity(触发器-签名[警戒条件]/活动),三部分都是可选的。trigger-signature通常是触发状态潜在改变的事件(可含参数);guard是转换要执行时必须为真的布尔条件;activity是转换期间执行的行为。三部分各自缺省有明确含义:没有活动部分表示转换期间不做任何事;没有警戒条件表示事件发生时总会执行该转换;没有触发器部分则表示要立即执行该转换(多用于活动状态场景),这种情况很少见。

结构图:

flowchart LR
    A["trigger-signature<br/>(触发事件, 可选)"] --> D["转换标签"]
    B["[guard]<br/>(警戒条件, 可选)"] --> D
    C["/activity<br/>(执行的行为, 可选)"] --> D
    D --> E["缺trigger: 立即执行(罕见)"]
    D --> F["缺guard: 事件发生必执行"]
    D --> G["缺activity: 转换期间不做事"]

参考来源

- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》第10章《状态机图》(源文件:_epub-src/EPUB/9.xhtml) - 结论依据:原文定义"每个转换都有一个标签,标签有3个部分:trigger-signature [guard]/activity……所有部分都是可选的",并逐条说明"如果没有活动部分,说明在转换期间你不做任何事情。如果没有警戒条件部分,说明事件发生时你总是执行该转换。没有触发器-签名部分的情况很少……说明你要立即执行该转换"。 - 原始内容:每个转换都有一个标签,标签有3个部分:trigger-signature [guard]/activity(触发器-签名[警戒条件]/活动)。所有部分都是可选的……如果没有活动部分,说明在转换期间你不做任何事情。如果没有警戒条件部分,说明事件发生时你总是执行该转换。