使用序列图绘制调用流程会导致模糊

时间:2010-09-21 11:26:17

标签: uml sequence-diagram

我想画一个序列图在哪里

A -> B.run()
B.run() -> B.m1()
B.m1() -> B.m2()

到目前为止,我已经想出了这些。

http://i51.tinypic.com/eja5bl.jpg http://i52.tinypic.com/1449s3.jpg

但在这里我不能清楚地提到B.m2()被B.m1()调用 相反,它看起来像B.run()串行调用B.m1()和B.m2()。

-------------编辑----------------

这是我目前所绘制的http://i55.tinypic.com/21276kk.jpg

http://i55.tinypic.com/21276kk.jpg 那么我当前的图表好吗? 我想要的是这个。 (呼叫流程)

SpiritAdapter -> SpiritEngine::run(spirit:string, method:string, args[])
SpiritEngine::run(spirit:string, method:string, args[]) -> SpiritEngine::executeLogic(spirit:string, method:string, args[])
SpiritEngine::executeLogic(spirit:string, method:string, args[]) -> SpiritEngine::spirit(spirit:string, method:string, args[])
SpiritEngine::spirit(spirit:string, method:string, args[]) -> new SpiritAbstractor
SpiritEngine::executeLogic(spirit:string, method:string, args[]) -> SpiritAbstractor::method(args)
SpiritEngine::run(spirit:string, method:string, args[]) -> SpiritEngine::storeXDO()

3 个答案:

答案 0 :(得分:6)

您可以在B.m2()上添加一个小条,然后放置一个自我指向箭头for example

alt text

Self message vs recursive call

alt text

答案 1 :(得分:1)

uml规范允许以可视方式显示嵌套调用:被调用的生命线应覆盖在调用生命线上。参见例如在this example中调用confirmAvailableReport()。

你的工具是否支持它当然是另一回事......

答案 2 :(得分:0)

让我们说ObjectA有3种方法,分别称为MessageOne(),MessageTwo()和MessageThree()。​​

它们之间的关系如下所示

void ObjectA::MessageOne()
{
    MessageTwo();
}

void ObjectA::MessageTwo()
{
   MessageThree();
}

void ObjectA::MessageThree()
{
   // TODO
}

使用下图所示的Enterprise Architect,如果您选择MessageThree()调用,您将获得提高激活级别的选项。

enter image description here

一旦选择了该选项(通过单击-> 箭头),您将获得满足调用堆栈序列图的精确图(如下所示)。

enter image description here