我在UML活动图中建模循环。它适用于简单的条件节点(图1),但我正在寻找一种更强的表达方式来强调循环语义。 所以我来到了显示here和there的“地区”或“可中断地区”,但我找不到很多令人满意的例子。
我的示例是处理给定列表的消息的函数。一旦找到第一个有效消息,循环就会中止,然后处理消息并且函数返回true。否则,它返回false(请不要对意义或废话进行评论,这只是为了样本)。
图1:使用一个好的旧活动图条件节点。无可否认,按照箭头控制流程更容易,但没有“循环”,只有“如果”。
图2:
两个图表的功能应该是等效的:
编辑:另一个实现Steph建议的图表:
答案 0 :(得分:10)
在UML中,活动最终节点表示完成,因此在使用它时它在循环区域中是正确的,它是循环内容的正常完成(这反过来导致下一次迭代)。作为旁注,我建议您在循环开始时使用初始节点。
还有流最终节点,代表退出,而不是完成。因此,您可以使用它来表示“break”语句,而不是您使用的中断边缘。在这种情况下,您必须在“是”分支中,在此最终节点之前集成“进一步的消息处理节点”。
中断边缘是来自当前处理之外的中断。该区域是可中断的,并且一些事件(通常用接收节点标记)可以完全中断它,无论区域内容的进展如何。事实并非如此。
关于迭代字符,遗憾的是没有什么是非常直观的。我倾向于在区域顶部使用一个对象节点,就在初始节点旁边。