我正在尝试绘制一个由以下代码片段表示的(高度简化)功能的UML活动图。我的目的是检查模式参数(if-else)的行的子活动。
ErrorType DoSomething(int mode) {
if(mode==MODE1) {
...
}
else {
return MODE_NOT_AVAILABLE;
}
SomethingElse...
return NO_ERROR;
}
你可以看到,else-Block中的return-Statement导致函数 DoSomething 的终止。因此,如果它被执行,则无法执行 SomethingElse ... 。
正如我所提到的,这个其他块应该处于子活动状态。 如何可视化子活动中的操作(返回MODE_NOT_AVAILABLE )会导致其父母活动图必须处于最终状态?
在下图中,您可以看到我尝试解决它。这是一个正确的解决方案吗?
答案 0 :(得分:1)
由于您正在处理某种异常,我会使用您在此处http://www.sparxsystems.com.au/images/screenshots/uml2_tutorial/ad11.GIF看到的异常处理程序对其进行建模。即使你的具体实现使用if / else,这应该是一种方法,可以很容易地理解你想要实现的目标(防止子程序在错误的模式下执行)。
您可以在此处查看有关表示法的更多详细信息:http://edn.embarcadero.com/article/30169
这取决于您想要指示实际实施的程度。 UML本身并不知情,大多数利益相关者也是如此。