我在UML Activity 图中建模一个循环。它适用于简单的条件节点(图1),但是我正在寻找一种更具表现力的方式来强调循环语义。
所以我来到显示为here和there的“区域”或“可中断区域”,但是我找不到很多真正令人满意的示例。
我的示例是处理给定列表消息的函数。一旦找到第一个有效消息,循环就会中止,然后对该消息进行处理,并且函数返回true。否则,它返回false(请仅对示例进行说明,请不要对有理或废话发表评论)。
图1:使用良好的旧 Activity 图条件节点。顺便说一句,顺着箭头遵循控制流比较容易,但是没有“LOOP”,只有一个“if”。
图2:
这两个图的功能应等效:
编辑:另一个图,它实现了Steph的建议:
最佳答案
在UML中, Activity 最终节点表示完成,因此在您使用它的循环区域中它是正确的,它是循环内容的正常完成(这又导致下一次迭代)。作为附带说明,我建议您也将初始节点用于循环的开始。
还有一个流最终节点,它表示退出而不是完成。因此,您可以使用它来表示“break”语句,而不是使用中断边缘。在这种情况下,您必须在此流程最终节点之前的"is"分支中集成“其他消息处理节点”。
中断边缘实际上是来自当前处理外部的中断。该区域是可中断的,并且无论区域内容的进度如何,某些事件(通常会在接收节点中指出)可能会完全中断该区域。事实并非如此。
关于迭代字符,不幸的是,没有什么视觉效果。我倾向于在该区域的顶部,初始节点旁边使用对象节点。
关于loops - 使用区域在UML Activity 图中循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15792687/