简化UML活动图

简化UML活动图,uml,activity-diagram,Uml,Activity Diagram,我将为一个旧程序制作一个UML活动图,其中充满了goto。 我将要建模的程序的构造如示例所示。首先,它制作一些东西,然后检查错误标志。如果设置了错误标志,它会将错误代码写入日志,并可能转到程序中的其他位置 // When error, the program generate a Trap and then go to 1000 err = Foo(A,B,C) if (err != 0) { CTrap(2000,err,A,B,C) goto(1000) } // When

我将为一个旧程序制作一个UML活动图,其中充满了
goto
。 我将要建模的程序的构造如示例所示。首先,它制作一些东西,然后检查错误标志。如果设置了错误标志,它会将错误代码写入日志,并可能转到程序中的其他位置

// When error, the program generate a Trap and then go to 1000
err = Foo(A,B,C)
if (err != 0) 
{
   CTrap(2000,err,A,B,C)
   goto(1000)
}

// When error, the program generate a trap and continue
err = Foo2(A,B,C)
if (err != 0)
{
   CTrap(2000,err,A,B,C)
}
CTrap
将错误代码写入日志,我希望活动图显示每个活动可以生成的错误代码以及何时生成

现在,我尝试用无数的决策和合并对其进行建模,并为写入日志的每个错误代码添加一个操作。但当时几乎不可能遵循该计划。我可以删除错误代码的操作,但随后会丢失重要信息。然后它仍然是无数的决定和合并。我想知道是否有任何符号可以用来简化它。因此,它显示了可以生成的错误代码,以及何时生成的错误代码,而不必在图表中充斥决策和合并。我是否可以以任何方式在错误标志上使用post contion,或者您是否可以在条件为on的情况下从活动中获得多个输出

编辑

我做了一些试验,在注释中放置了有关错误代码(陷阱)的信息。我不知道是否有可能像我所做的那样写作? 我可以从我在某些地方做的活动中获得不同的输出吗? 然后我想知道我使用的“Write变量”是否正确? 这只是一个实验,而不是一个完整的图表

以BFX为前缀的函数是系统函数,以BX2为前缀的函数是与此程序相关联的函数。 所有合并都是转到目的地。例如,名为8100的合并是处理错误情况的程序的一部分,您可以使用
GOTO 8100


您可以使用多个活动图来完成此操作。从代码中,您不希望在顶层图表上显示可能的错误,但在显示
CTrap
的图表上,您可以显示可能的错误代码及其作用

如果您想在一个图表中显示所有信息,那么您无能为力——图表将变得非常混乱


编辑(添加图表后):您可以连接链接中的防护装置,这样就可以得到一个链接,而不是从连接处传出4个链接。不要认为你还可以做其他任何事情。

你将什么建模为动作?每个函数?在本例中,它是对Foo1和Foo2的调用。但它也可以是对函数的多次调用和其他操作。但是如果设置了错误,程序总是检查每一个这样的“操作”,如果设置了错误,则会生成TrapSorry,但我仍然无法理解您试图做什么。很抱歉,我不清楚。谢谢你试着帮助我:-)我对这个问题稍加修改,以澄清一下这个问题。我希望这能让事情更清楚。否则,请随时向阿加因汉克斯询问您的答复。我想很不幸,你是对的。但我还是犯了错误​​无论如何,还是要努力做一些简化。请参阅我的问题编辑。也许我完全错了,但无论如何,这是一次尝试。CTrap是一个系统调用,所以很遗憾,我不会为它绘制任何图表。你能发布一个示例图表吗?否则,图表是否正确?有可能像我做的那样做吗?我自己认为我在UML标准上做了一些扩展。看起来还可以。UML“标准”是为了拉伸:-)。在我看来,检查图表有效性的最好方法是将它传递给你的同事,如果他们理解它,那就好了。非常感谢你的帮助。我不认为UML是如此灵活。然后我可以继续尝试以这种方式完成意大利面条代码的文档。