%\lstinputlisting[name=wd2pn,numberstyle=\tiny,numbers=left,numberblanklines=true,frame=tb,firstnumber=1,firstline=89,lastline=118,caption=TODO,label=code:wd2pn,captionpos=b]{code/simplepdltopetrinet/SimplePDLToPetriNet.t}%style=codesource,
%
\begin{tomcode3}[caption=\texttt{WD2PN :} Code de la définition \emph{WorkDefinitionToPetriNet},label=code:wd2pn]
definition WD2PN traversal `TopDown(WD2PN(tom__linkClass,pn)) {
  wd@WorkDefinition[name=name] -> {
    Place WDp_ready  = `Place(name+"_ready", pn, 1);
    %tracelink(WDp_started:Place, `Place(name+"_started", pn, 0));
    Place WDp_running  = `Place(name+"_running", pn, 0);
    %tracelink(WDp_finished:Place, `Place(name+"_finished", pn, 0));
    %tracelink(WDt_start:Transition, `Transition(name+"_start", pn, 1, 1));
    %tracelink(WDt_finish:Transition, `Transition(name+"_finish", pn, 1, 1));

    `Arc(WDt_start, WDp_ready, pn, ArcKindnormal(), 1);
    `Arc(WDp_started, WDt_start, pn, ArcKindnormal(), 1);
    `Arc(WDp_running, WDt_start, pn, ArcKindnormal(), 1);
    `Arc(WDt_finish, WDp_running, pn, ArcKindnormal(), 1);
    `Arc(WDp_finished, WDt_finish, pn, ArcKindnormal(), 1);

    SimplePDLSemantics.DDMMSimplePDL.Process parent = `wd.getParent();
    /* Pt_start et Pt_finish : transitions de l'image d'un processus, par 
    exemple P#\colcode{black}{$_{root}$}# dans la figure#\colcode{black}{~\ref{fig:petrinetusecase}}# */
    Transition source = %resolve(parent:Process, Pt_start:Transition);
    source.setNet(pn);
    Arc tmpDistribute = `Arc(WDp_ready, source, pn, ArcKindnormal(), 1);

    Transition target = %resolve(parent:Process, Pt_finish:Transition);
    target.setNet(pn);
    Arc tmpRejoin = `Arc(target, WDp_finished, pn, ArcKindread_arc(), 1);
  }
}
\end{tomcode3}
