知识卡片
多进入流语义的版本变化
内容
同一个动作有多个进入流时,UML 1和UML 2的隐含语义完全不同:UML 1里是隐式合并——任何一条流触发动作就执行;UML 2里改成隐式结合——必须所有流都到达,动作才执行。这个语义在版本间发生静默反转,同一张图在不同版本读者眼里可能读出相反行为。为避免混淆,作者建议画图时只给每个动作用单个进入和输出流,需要合并或同步的地方一律显式画出合并或结合节点,不依赖任何隐式语义。
参考来源
- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》第11章《活动图》(源文件:_epub-src/EPUB/10.xhtml)
- 结论依据:原文说明"在UML 1中,多个进入流有一个隐式的合并。即任何流触发,你的动作都会执行。在UML 2中有了变化,用一个隐式的结合代替;这样,只有在所有流触发时动作才执行。由于这个变化,我推荐你只对动作使用单个进入和输出流"。
- 原始内容:在我的图中,每一个动作都有单个进入流和单个输出流。在UML 1中,多个进入流有一个隐式的合并。即任何流触发,你的动作都会执行。在UML 2中有了变化,用一个隐式的结合代替……我推荐你只对动作使用单个进入和输出流,并显式地展示所有结合和合并。