我想画一个序列图在哪里
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()
您可以在B.m2()上添加一个小条,然后放置一个自指向箭头for example。
uml规范允许以可视方式显示嵌套调用:被调用的生命线应覆盖在调用生命线上。参见例如在this example中调用DetermAvailableReport()。
当然,你的工具是否支持它是另一回事......
让我们说ObjectA有3个方法叫做MessageOne(),MessageTwo()和MessageThree()。
它们之间的关系如下所示
void ObjectA::MessageOne()
{
MessageTwo();
}
void ObjectA::MessageTwo()
{
MessageThree();
}
void ObjectA::MessageThree()
{
// TODO
}
如果选择MessageThree()调用,使用Enterprise Architect如下图所示,您将获得一个提高激活级别的选项。
一旦选择了该选项(通过单击 - >箭头),您将获得满足调用堆栈序列图的确切图表(如下所示)。