如何在 TikZ-UML 中向生命线添加注释

如何在 TikZ-UML 中向生命线添加注释

有一个注释与参与者相连me,我想在查找钥匙操作后将节点连接到生命线。这可能吗?

(我尝试使用name但总是出现错误。)

\documentclass{article}
\usepackage{tikz-uml}
\begin{document}

  \begin{tikzpicture}[auto]
    \begin{umlseqdiag}

      \umlactor[x=0, class=Person]{me}
      \umlboundary[x=6, class=Door]{door}
      \umlcontrol[x=12, class=Bed]{bed}

      \begin{umlcallself}[op={find keys}]{me}
      \end{umlcallself}
      \begin{umlcall}[op={open door}, return={door opened}]{me}{door}
      \end{umlcall}

      \umlnote[x=5,y=-5]{me}{This note should be connected to my lifeline instead of the actor, e.g. after find keys.}

    \end{umlseqdiag}
  \end{tikzpicture}

\end{document

在生命线中添加注释。

答案1

关于 tikz-uml 的文档没有提到这一点,但这是可能的。事实上,当你定义一个 umlcall(或 umlcallself)时,你会绘制两个活动矩形。在这些矩形的顶部和底部,节点用特殊名称定义。

以下是示例的代码:

\begin{tikzpicture}
\begin{umlseqdiag}
\umlactor[x=0, class=Person]{me}
\umlboundary[x=6, class=Door]{door}
\umlcontrol[x=12, class=Bed]{bed}
\begin{umlcallself}[op={find keys}, name=callfk]{me}
\end{umlcallself}
\begin{umlcall}[op={open door}, return={door opened}]{me}{door}
\end{umlcall}
\umlnote[x=5,y=-5]{sb-callfk}{This note should be connected to my lifeline instead of the actor, e.g. after find keys.}
\end{umlseqdiag}
\end{tikzpicture}

通过给自己调用的“find keys”命名,就可以猜出这些节点的名字。

对于发送方,其活动矩形顶部有一个名为 (st-callfk) 的节点,st 代表“起始-顶部”,底部有一个名为 (sb-callfk) 的节点,sb 代表“起始-底部”。对于接收方,其活动矩形顶部有一个名为 (et-callfk) 的节点,et 代表“结束-顶部”,底部有一个名为 (eb-callfk) 的节点,eb 代表“结束-底部”。

我没想到有人可能需要在生命线上定义注释,所以当前的节点名称可能值得改进。也许使用发送方/接收方而不是开始/结束会更好。由于我很快就会发布 tikz-uml 的新版本,我将更新这些节点名称。

相关内容