Sequence diagram#
We will now build step by step the picture seen in home page to understand the behavior of each used command.
Definition of objects#
\begin{umlseqdiag}
\umlactor[class=A]{a}
\umldatabase[class=B]{b}
\umlmulti[class=C]{c}
\umlobject[class=D]{d}
\end{umlseqdiag}
Definition of the call opa and its components#
\begin{umlseqdiag}
\umlactor[class=A]{a}
\umldatabase[class=B]{b}
\umlmulti[class=C]{c}
\umlobject[class=D]{d}
\begin{umlcall}[op=opa(), type=synchron, return=0]{a}{b}
\begin{umlcall}[op=opb(), type=synchron, return=1]{b}{c}
\begin{umlcall}[op=opc(), type=asynchron]{c}{d}
\end{umlcall}
\begin{umlcall}[type=return]{c}{b}
\end{umlcall}
\begin{umlcall}[op=opd(), type=synchron, return=3]{c}{d}
\end{umlcall}
\end{umlcall}
\begin{umlcallself}[op=ope(), type=synchron, return=4]{b}
\begin{umlcall}[op=opf(), type=synchron, return=5]{b}{c}
\end{umlcall}
\end{umlcallself}
\end{umlcall}
\end{umlseqdiag}
Definition of the calls following the construction of E#
\begin{umlseqdiag}
\umlactor[class=A]{a}
\umldatabase[class=B]{b}
\umlmulti[class=C]{c}
\umlobject[class=D]{d}
\begin{umlcall}[op=opa(), type=synchron, return=0]{a}{b}
\begin{umlcall}[op=opb(), type=synchron, return=1]{b}{c}
\begin{umlcall}[op=opc(), type=asynchron]{c}{d}
\end{umlcall}
\begin{umlcall}[type=return]{c}{b}
\end{umlcall}
\begin{umlcall}[op=opd(), type=synchron, return=3]{c}{d}
\end{umlcall}
\end{umlcall}
\begin{umlcallself}[op=ope(), type=synchron, return=4]{b}
\begin{umlcall}[op=opf(), type=synchron, return=5]{b}{c}
\end{umlcall}
\end{umlcallself}
\end{umlcall}
\umlcreatecall[class=E, x=8]{a}{e}
\begin{umlcall}[op=opg(), name=test, type=synchron, return=6, dt=7]{a}{e}
\umlcreatecall[class=F, stereo=boundary, x=12]{e}{f}
\end{umlcall}
\begin{umlcall}[op=oph(), type=synchron, return=7]{a}{e}
\end{umlcall}
\end{umlseqdiag}
Definition of fragments
\begin{umlseqdiag}
\umlactor[class=A]{a}
\umldatabase[class=B]{b}
\umlmulti[class=C]{c}
\umlobject[class=D]{d}
\begin{umlcall}[op=opa(), type=synchron, return=0]{a}{b}
\begin{umlfragment}
\begin{umlcall}[op=opb(), type=synchron, return=1]{b}{c}
\begin{umlfragment}[type=alt, label=condition, inner xsep=8]
\begin{umlcall}[op=opc(), type=asynchron]{c}{d}
\end{umlcall}
\begin{umlcall}[type=return]{c}{b}
\end{umlcall}
\umlfpart[default]
\begin{umlcall}[op=opd(), type=synchron, return=3]{c}{d}
\end{umlcall}
\end{umlfragment}
\end{umlcall}
\end{umlfragment}
\begin{umlfragment}
\begin{umlcallself}[op=ope(), type=synchron, return=4]{b}
\begin{umlfragment}[type=assert]
\begin{umlcall}[op=opf(), type=synchron, return=5]{b}{c}
\end{umlcall}
\end{umlfragment}
\end{umlcallself}
\end{umlfragment}
\end{umlcall}
\umlcreatecall[class=E, x=8]{a}{e}
\begin{umlfragment}
\begin{umlcall}[op=opg(), name=test, type=synchron, return=6, dt=7]{a}{e}
\umlcreatecall[class=F, stereo=boundary, x=12]{e}{f}
\end{umlcall}
\begin{umlcall}[op=oph(), type=synchron, return=7]{a}{e}
\end{umlcall}
\end{umlfragment}
\end{umlseqdiag}