To jest stara wersja strony!
~~SLIDY_SLIDESHOW~~
Zrealizował: Marcin Godlewski
Cel projektu
Celem projektu było stworzenie pluginu do DokuWiki pozwalającego na tworzenie na stronach wiki diagramów UML.
Realizacja
W ramach projektu stworzono dwa niezależne pluginy do generowania diagramów klas oraz diagramów sekwencji.
Działanie pluginów opiera się o wykorzystanie programów UMLGraph, Graphviz oraz GNUPlotutils.
Pluginy pozwalają na generowanie i umieszczanie na stronie plików png zawierających diagramy.
Działanie
Aby stworzyć diagram klas należy umieścić pomiędzy znacznikami <uml class> i </uml class> definicję klas przy użyciu składni Javy i znaczników javadoc.
Diagram sekwencji definiujemy pomiędzy znacznikami <uml seq> i </uml seq> przy użyciu składni UMLGraph'a.
Przykład
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:
Przykład 2
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:
Instalacja
Najprostszym sposobem na zainstalowanie pluginów jest użycie Plugin Managera.
Można również „ręcznie” umieścić rozpakowane archiwa umlclass.zip, umlsequence.zip w katalogu dokuwiki/lib/plugins/ .