知识卡片
扩展区域对集合逐项执行
内容
当一个动作的输出会触发另一个动作被多次调用时(如”选主题”生成一批主题、每个主题都要单独”写文章”),最佳表达方式是扩展区域(expansion region):标记出活动图的一个区域,区域里的动作会对输入集合中的每个条目各执行一次,每个条目变成一个令牌流入区域;区域内各动作的产出汇集成输出集合,当所有令牌都汇入后,区域整体对外产出一个代表该集合的令牌。默认可以并行处理集合中的各个条目(用«concurrent»标记),也可以要求逐个完整处理(迭代扩展区域);若只有单个动作需要多次调用,可用速记写法简化,对应UML 1里的动态并发概念。
结构图:
flowchart TD
A[Choose Topics 生成主题列表] --> B[扩展区域: 逐主题生成令牌]
subgraph 扩展区域 concurrent
B --> C[Write Article 写文章]
C --> D[Review Article 评审文章]
end
D --> E[汇集为输出集合]
E --> F[Publish Newsletter 出版简报]
参考来源
- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》第11章《活动图》(源文件:_epub-src/EPUB/10.xhtml)
- 结论依据:原文定义"扩展区域(expansion region)标记活动图的一个区域,在该区域里动作为一个集合中的每个条目执行一次……当扩展区域中的所有令牌汇集到输出集合后,该区域为列表生成单个令牌,传送给Publish Newsletter",并说明可并行或迭代处理。
- 原始内容:扩展区域(expansion region)标记活动图的一个区域,在该区域里动作为一个集合中的每个条目执行一次……当扩展区域中的所有令牌汇集到输出集合后,该区域为列表生成单个令牌,传送给Publish Newsletter(出版简报)……所有文章并行写作或评审,用«concurrent»关键词标记。