|
|
pl:miw:2009:miw09_metamodelwikiplugin [2009/07/08 10:36] jsi08 |
pl:miw:2009:miw09_metamodelwikiplugin [2019/06/27 15:50] |
====== Opis ====== | |
Marcin Godlewski <godlewski.marcin@op.pl> | |
==== MetamodelWikiPlugin ==== | |
Add Wiki plugin to display metamodels (UML class diagrams) from XMI code OR create wiki plugin to display them from UMLGraph notation. | |
Input: | |
* [[http://carlosmanzanares.com/blog/?p=23|Wiki UML tool]] | |
* [[http://www.twiki.org/|TWiki]] | |
* [[http://www.umlgraph.org/|UMLGraph]] | |
Output: | |
* Wiki with plugin | |
| |
====== Prezentacja ====== | |
[[https://ai.ia.agh.edu.pl/wiki/pl:miw:2009:miw09_metamodelwikiplugin:prezentacja|Prezentacja projektu]]. | |
| |
====== Projekt ====== | |
| |
Projekt stanowią dwa pluginy do Dokuwiki: Umlclass Plugin generujący diagramy klas oraz Umlsequence Plugin generujący diagramy sekwencji, zgodne z UML. Diagramy mogą być używane niezależnie, jednak do działania wymagają częściowo tego samego oprogramowania. Mogą być więc traktowane jako całość. | |
| |
====== Sprawozdanie ====== | |
| |
===== Używanie pluginów ===== | |
| |
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. | |
| |
===== Instalacja ===== | |
| |
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 [[http://www.umlgraph.org/|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/ . | |
| |
===== Przykłady działania ===== | |
| |
Poniżej widoczne są przykładowe efekty działania pluginów: | |
| |
składnia (przykład ze strony http://www.umlgraph.org): | |
<code> | |
<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> | |
</code> | |
| |
efekt wygenerowany przez plugin: | |
| |
{{:pl:miw:2009:miw09_metamodelwikiplugin:seq_diagram.png|}} | |
| |
składnia (przykład ze strony http://www.umlgraph.org): | |
<code> | |
<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> | |
</code> | |
| |
efekt wygenerowany przez plugin: | |
| |
{{:pl:miw:2009:miw09_metamodelwikiplugin:class_diagram.png|}} | |
| |
====== Pluginy do pobrania ====== | |
| |
Diagramy klas: | |
{{:pl:miw:2009:miw09_metamodelwikiplugin:umlclass.zip}} | |
| |
Diagramy sekwencji: | |
{{:pl:miw:2009:miw09_metamodelwikiplugin:umlsequence.zip}} | |
| |
====== Spotkania ====== | |
| |
[[https://ai.ia.agh.edu.pl/wiki/pl:miw:2009:miw09_metamodelwikiplugin:spotkania|Notatki ze spotkań projektowych]]. | |
| |
====== Materiały ====== | |
| |
[[http://www.dokuwiki.org/dokuwiki|DokuWiki]] | |
| |
[[http://www.dokuwiki.org/plugins|DokuWiki plugins]] | |
| |