Marcin Godlewski godlewski.marcin@op.pl
Add Wiki plugin to display metamodels (UML class diagrams) from XMI code OR create wiki plugin to display them from UMLGraph notation. Input:
Output:
Projekt stanowią dwa pluginy do Dokuwiki: Umlclass Plugin generujący diagramy klas oraz Umlsequence Plugin generujący diagramy sekwencji, zgodne z UML. Pluginy mogą być używane niezależnie, jednak do działania wymagają częściowo tego samego oprogramowania. Mogą być więc traktowane jako jedna całość.
1. Umlclass Plugin - aby stworzyć na stronie diagram klas należy umieścić w wiki opis klas przy użyciu składni Javy i znaczników javadoc pomiedzy znacznikami <uml class> i </uml class>. Na stronie wynikowej opis tekstowy zostanie zastąpiony plikiem png.
2. Umlsequence Plugin - aby stworzyć na stronie diagram sekwencji należy umieścić w wiki opis diagramów sekwencji (opis składni http://www.umlgraph.org/doc/index.html) pomiędzy znacznikami <uml seq> i </uml seq> (w opisie diagramu nie należy umieszczać wierszy '.PS', 'copy „sequence.pic”;' i '.PE' - są one dodawane automatycznie). Na stronie wynikowej opis tekstowy zostanie zastąpiony plikiem png.
Pluginy można instalować za pomocą Plugin Managera (http://www.dokuwiki.org/plugin:plugin) lub ręcznie w sposób opisany poniżej.
1. Umlclass Plugin - do tworzenia grafiki png używa pakietu UMLGraph, który z kolei wykorzystuje program Graphviz, sam natomiast jest napisany w Javie. Aby zainstalować plugin należy umieścić syntax.php w katalogu dokuwiki/lib/plugins/umlclass/ . Zainstalowane muszą być JDK (może być to OpenJDK), Graphviz i UMLGraph (instrukcja na stronie UMLGraph). UMLGraph musi znajdować się w ścieżce przeszukiwania. Częstym problemem po instalacji UMLGrapha jest niespełnienie wymogu aby tools.jar (składnik JDK) i UmlGrpah.jar znajdowały się w tym samym katalogu. Jest to konieczne aby UMLGraph działał poprawnie.
2. Umlsequence Plugin - do tworzenia grafiki używa programu pic2plot z pakietu GNUPlotutils oraz UMLGraph'a. Aby zainstalować plugin należy umieścić syntax.php w katalogu dokuwiki/lib/plugins/umlsequence/ . Dodatkowo zainstalowany musi być program pic2plot z pakietu GNUPlotutils. Plik sequence.pic będący częścią UMLGraph'a musi znajdować się w katalogu dokuwiki/lib/plugins/umlsequence/ .
Poniżej widoczne są przykładowe efekty działania pluginów:
składnia (przykład ze strony http://www.umlgraph.org):
<uml seq> boxwid = 1.3; # Define the objects object(B,":Web Browser"); object(W,":Workstation Kernel"); object(S,":Server Kernel"); object(D,":DNS Server"); step(); # Message sequences active(B); active(D); active(W); active(S); message(D,S,"select"); inactive(D); message(B,W,"socket"); message(B,W,"connect"); message(B,W,"sendto"); message(W,W,"send packet"); message(W,S,"DNS A query"); message(B,W,"recvfrom"); inactive(B); message(S,S,"receive packet"); rmessage(S,D,"select returns"); active(D); message(D,S,"recvfrom"); message(D,S,"sendto"); message(S,S,"send packet"); message(S,W,"DNS A reply"); message(W,W,"receive packet"); rmessage(W,B,"recvfrom returns"); active(B); message(B,W,"close"); complete(B); complete(W); complete(S); complete(D); </uml seq>
efekt wygenerowany przez plugin:
składnia (przykład ze strony http://www.umlgraph.org):
<uml class> /* * Advanced relationships * UML User Guide p. 137 */ /** * @opt attributes * @opt operations * @hidden */ class UMLOptions {} class Controller {} class EmbeddedAgent {} class PowerManager {} /** * @extends Controller * @extends EmbeddedAgent * @navassoc - - - PowerManager */ class SetTopController implements URLStreamHandler { int authorizationLevel; void startUp() {} void shutDown() {} void connect() {} } /** @depend - <friend> - SetTopController */ class ChannelIterator {} interface URLStreamHandler { void OpenConnection(); void parseURL(); void setURL(); void toExternalForm(); } </uml class>
efekt wygenerowany przez plugin:
Diagramy klas: umlclass.zip
Diagramy sekwencji: umlsequence.zip