我在建模的UML活动图的循环。 它以简单的条件节点(图1)效果很好,但是我正在寻找一个更有表现力的方式来强调循环语义 。 于是,我来到了“区域”或显示“可中断的区域” 在这里和那里 ,但我无法找到许多真正令人满意的例子。
我的例子是处理一个给定列表的消息的功能。 环路中止尽快找到的第一个有效的消息,则处理该消息和函数返回true。 否则,它将返回false(请在感觉或无义没有意见,这只是一个样品的缘故)。
图1:使用好老活动图条件节点。 这是比较容易沿着沿箭头,无可否认的控制流,但没有“循环”,也仅仅是一个“如果”。
图2:
- 是(正)退出条件正确,使用中断边缘? 真实的,它可以是环的与所述迭代器沿[测试]部分的一部分。
- BTW:怎么是一个for循环中最好的UML表示的迭代人物?
- 在循环体里面正确的活动最终节点(即当条件“的消息是否有效?”收益率“不”)? 它在某种程度上感觉错在这里使用最后一个节点,但我还能怎么表达一个循环的控制流程?
两个图表的功能应该是等价的:
编辑:它实现了从斯蒂芬建议的另一个图:
- 循环体内部的初始和最终节点
- “进一步处理”是现在的循环体内部。 嗯... OK这里,但有可能是其他地方的循环,我宁愿把它外面。 然后,我可能会改变反正设计...
- “下一个消息”也可以被看作是迭代器对象本身代替的作用 “(提供)下一个消息”从原始图。
- 这两个对象流箭头可能是有点矫枉过正,但我认为他们是正确的。