Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_gefardxtt_1 [2008/06/15 12:09] miw |
pl:miw:miw08_gefardxtt_1 [2019/06/27 15:50] (aktualna) |
| |
[[pl:miw:miw08_gefardxtt_1:spotkania|Archiwum spotkań]] | [[pl:miw:miw08_gefardxtt_1:spotkania|Archiwum spotkań]] |
| |
| |
| |
| |
| |
| |
| |
| ===== Source ===== |
| |
| - {{:pl:miw:miw08_gefardxtt_1:ardeditor_project.zip|Ard Editor Project}} |
| - {{:pl:miw:miw08_gefardxtt_1:ardeditor_diagram.zip|Ard Editor Diagram}} |
| - {{:pl:miw:miw08_gefardxtt_1:ardeditor_edit.zip|Ard Editor Edit}} |
| |
| |
| ==== Sposób uruchomienia ==== |
| - Zaimportuj Ard Editor Diagram oraz Ard Editor Edit jako projekt w Eclipse |
| - Otwórz oba projekty |
| - Kliknij prawym przyciskiem na Ard Editor Diagram: |
| - Run As... -> Eclipse Application |
| - W nowo otwartym oknie Eclipse utwórz nowy projekt (wystarczy nawet pusty katalog) |
| - Kliknij //New// -> Examples -> My Diagram |
| - Otworzy się edytor. Użytkownik musi podać 2 nazwy plików: |
| - Plik edytora o rozszerzeniu .hml_diagram (odpowiada za rozmieszczenie na ekranie itp) |
| - Plik modelu o rozszerzeniu .hml (w formacie XML) |
| |
| |
====== Sprawozdanie ====== | ====== Sprawozdanie ====== |
| |
==== 1. Przygotowanie ==== | |
| |
=== Lektury === | |
| ===== 1. Przygotowanie ===== |
| |
| ==== 1.1 Lektury ==== |
Swoją pracę rozpocząłem od lektury następujących prac: | Swoją pracę rozpocząłem od lektury następujących prac: |
* {{:pl:miw:mgr-gef.pdf|GEF MS Thesis}} - Część pracy magisterskiej Macieja Kwietnia i Jana Rachwalika dotycząca GEF. | * {{:pl:miw:mgr-gef.pdf|GEF MS Thesis}} - Część pracy magisterskiej Macieja Kwietnia i Jana Rachwalika dotycząca GEF. |
* Uruchomienie przykładowych edytorów: Logic Diagram, Flow Diagram, Shapes Diagram. | * Uruchomienie przykładowych edytorów: Logic Diagram, Flow Diagram, Shapes Diagram. |
| |
=== Wyjaśnienie skrótów === | ==== 1.2 Wyjaśnienie skrótów ==== |
Ponieważ skróty EMF, GEF i GMF są do siebie podobne, po krótce wyjaśnię między różnice między tymi frameworkami: | Ponieważ skróty EMF, GEF i GMF są do siebie podobne, po krótce wyjaśnię między różnice między tymi frameworkami: |
* [[http://www.eclipsecon.com/modeling/emf/|EMF]] - służy do tworzenia modeli, logiki biznesowej. Modele zapisywane są w plikach ecore. Jest możliwa konwersja między modelami w ecore oraz modelem opisanym przy pomocy [[http://www.w3.org/XML/Schema|XSD (XML Schema)]]. | * [[http://www.eclipsecon.com/modeling/emf/|EMF]] - służy do tworzenia modeli, logiki biznesowej. Modele zapisywane są w plikach ecore. Jest możliwa konwersja między modelami w ecore oraz modelem opisanym przy pomocy [[http://www.w3.org/XML/Schema|XSD (XML Schema)]]. |
| |
| |
==== 2. Pierwsza próba stworzenia edytora ==== | |
| |
=== 2.1 Użycie definicji DTD i translacja do XSD === | ===== 2. Pierwsza próba stworzenia edytora ===== |
| |
| ==== 2.1 Użycie definicji DTD i translacja do XSD ==== |
Aby skorzystać z możliwości EMF importując model XSD, przekształcono definicję [[https://ai.ia.agh.edu.pl/wiki/_media/hekate:hml.dtd?id=hekate%3Ahekate_markup_language&cache=cache|HML.dtd]] z postaci DTD do postaci XSD. Efekt został przedstawiony poniżej: | Aby skorzystać z możliwości EMF importując model XSD, przekształcono definicję [[https://ai.ia.agh.edu.pl/wiki/_media/hekate:hml.dtd?id=hekate%3Ahekate_markup_language&cache=cache|HML.dtd]] z postaci DTD do postaci XSD. Efekt został przedstawiony poniżej: |
<code xml> | <code xml> |
Dokument [[https://ai.ia.agh.edu.pl/wiki/_media/hekate:hml-test.xml?id=hekate%3Ahekate_markup_language&cache=cache|hml-test.xml]] poprawnie przechodzi [[http://www.xmlforasp.net/SchemaValidator.aspx|walidację]] przy użyciu powyższej definicji. Konwersji dokonano przy użyciu programu [[http://www.thaiopensource.com/relaxng/trang-manual.html|Trang]]. | Dokument [[https://ai.ia.agh.edu.pl/wiki/_media/hekate:hml-test.xml?id=hekate%3Ahekate_markup_language&cache=cache|hml-test.xml]] poprawnie przechodzi [[http://www.xmlforasp.net/SchemaValidator.aspx|walidację]] przy użyciu powyższej definicji. Konwersji dokonano przy użyciu programu [[http://www.thaiopensource.com/relaxng/trang-manual.html|Trang]]. |
| |
== Problem z użyciem powyższej definicji == | === Problem z użyciem powyższej definicji === |
| |
Powyższa definicja, choć poprawna, okazała się niekompatybilna z frameworkiem GMF. Podstawowe problemy to: | Powyższa definicja, choć poprawna, okazała się niekompatybilna z frameworkiem GMF. Podstawowe problemy to: |
Dokonano próby utworzenia edytora wszystkich elementów (bez żadnej customizacji) za pomocą pluginu do GMF o nazwie [[http://dynamicgmf.sourceforge.net/|Dynamic GMF]]. Ten plugin ma w założeniu dać możliwość wygenerowania edytora jedynie przez wybranie pliku xsd. Pojawiał się jednak błąd wewnętrzny programu "Null pointer exception". Takiego błędu nie było gdy użyłem pliku [[http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.gmf/examples/org.eclipse.gmf.examples.mindmap/model/mindmap.xsd?root=Modeling_Project&view=markup&content-type=text%2Fvnd.viewcvs-markup&revision=HEAD|mindmap.xsd]]. Sądzę, iż obecność elementów IDREF mogła się do tego przyczynić. | Dokonano próby utworzenia edytora wszystkich elementów (bez żadnej customizacji) za pomocą pluginu do GMF o nazwie [[http://dynamicgmf.sourceforge.net/|Dynamic GMF]]. Ten plugin ma w założeniu dać możliwość wygenerowania edytora jedynie przez wybranie pliku xsd. Pojawiał się jednak błąd wewnętrzny programu "Null pointer exception". Takiego błędu nie było gdy użyłem pliku [[http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.gmf/examples/org.eclipse.gmf.examples.mindmap/model/mindmap.xsd?root=Modeling_Project&view=markup&content-type=text%2Fvnd.viewcvs-markup&revision=HEAD|mindmap.xsd]]. Sądzę, iż obecność elementów IDREF mogła się do tego przyczynić. |
| |
=== 2.2 Inna metodologia tworzenia modeli === | ==== 2.2 Inna metodologia tworzenia modeli ==== |
| |
Dużo bardziej naturalnym, prostszym i efektywniejszym sposobem jest tworzenie modelu ecore pasującego do GMF. I tak import z XSD następuje do pliku ECORE, na którym później się operuje. | Dużo bardziej naturalnym, prostszym i efektywniejszym sposobem jest tworzenie modelu ecore pasującego do GMF. I tak import z XSD następuje do pliku ECORE, na którym później się operuje. |
Kolejnym krokiem mogłoby być eksportowanie tego modelu do XSD. W razie potrzeby można by dokonywać konwersji między róznymi definicjami XSD za pomocą szablonów XSLT. | Kolejnym krokiem mogłoby być eksportowanie tego modelu do XSD. W razie potrzeby można by dokonywać konwersji między róznymi definicjami XSD za pomocą szablonów XSLT. |
| |
=== 2.3 Własny model === | ==== 2.3 Własny model ==== |
| |
Stworzyłem zatem edytor opierając się o własny model. Model powstał przy pomocy EMF, który następnie wyeksportowałem do formatu XSD. | Stworzyłem zatem edytor opierając się o własny model. Model powstał przy pomocy EMF, który następnie wyeksportowałem do formatu XSD. |
Poniżej zamieszczono screen z edytora oraz odpowiadający mu plik xml. | Poniżej zamieszczono screen z edytora oraz odpowiadający mu plik xml. |
| |
=== 2.4 Edytor oparty na własnym modelu === | ==== 2.4 Edytor oparty na własnym modelu ==== |
| |
Diagram Ard | Diagram Ard |
| |
| |
==== 3. Perspektywy projektu ==== | |
| ===== 3. Perspektywy projektu ===== |
| |
Jest to wstępny zarys edytora. Docelowy edytor miałby posiadać bogatą funkcjonalność. Dalsze elementy, które należałoby zaimplementować to: | Jest to wstępny zarys edytora. Docelowy edytor miałby posiadać bogatą funkcjonalność. Dalsze elementy, które należałoby zaimplementować to: |
| |
| |
==== 4. Wnioski ==== | |
| ===== 4. Wnioski ===== |
| |
* Model warto tworzyć od podstaw w EMF. | * Model warto tworzyć od podstaw w EMF. |
| |
| |
==== 5. Linki ==== | |
| |
| ===== 5. Linki ===== |
| |
Poniżej zamieszczam wartościowe linki związane z moim projektem: | Poniżej zamieszczam wartościowe linki związane z moim projektem: |
=== 5.1 Instalacja GMF === | === Instalacja GMF === |
* [[http://wiki.eclipse.org/index.php/GMF_Tutorial|Instalacja + tutorial]] | * [[http://wiki.eclipse.org/index.php/GMF_Tutorial|Instalacja + tutorial]] |
* [[http://www.brovig.org/blog/2007/05/17/installing-gmf-on-eclipse-33-m7-europa/|installing-gmf-on-eclipse-33-m7-europa]] | * [[http://www.brovig.org/blog/2007/05/17/installing-gmf-on-eclipse-33-m7-europa/|installing-gmf-on-eclipse-33-m7-europa]] |
| |
=== 5.2 Nauka === | === Nauka === |
* [[http://www.eclipse.org/articles/Article-Introducing-GMF/article.html|Introducing GMF]] | * [[http://www.eclipse.org/articles/Article-Introducing-GMF/article.html|Introducing GMF]] |
* [[http://www.eclipse.org/articles/Article-GEF-editor/gef-schema-editor.html|GEF Schema Editor]] | * [[http://www.eclipse.org/articles/Article-GEF-editor/gef-schema-editor.html|GEF Schema Editor]] |
* [[http://wiki.eclipse.org/index.php/GMF_Tutorial_BPMN|Tutorial]] - edytora [[http://pl.wikipedia.org/wiki/BPMN|BPMN]]. Krok po kroku. | * [[http://wiki.eclipse.org/index.php/GMF_Tutorial_BPMN|Tutorial]] - edytora [[http://pl.wikipedia.org/wiki/BPMN|BPMN]]. Krok po kroku. |
| |
=== 5.3 Troubleshooting === | === Troubleshooting === |
Problemy, które napotkałem oraz linki pomocne w ich rozwiązaniu: | Problemy, które napotkałem oraz linki pomocne w ich rozwiązaniu: |
* [[http://dev.eclipse.org/newslists/news.eclipse.technology.gmf/msg03925.html|Containment Feature]] | * [[http://dev.eclipse.org/newslists/news.eclipse.technology.gmf/msg03925.html|Containment Feature]] |
| |
=== 5.4 Support === | === Support === |
* [[http://www.nabble.com/Eclipse-GEF---Dev-f2208.html|GEF mailing list archive]] | * [[http://www.nabble.com/Eclipse-GEF---Dev-f2208.html|GEF mailing list archive]] |
* [[http://eclipseforum.org.pl/|Polskie forum eclipse]] - zostało uruchomione pod koniec 2007 roku. | * [[http://eclipseforum.org.pl/|Polskie forum eclipse]] - zostało uruchomione pod koniec 2007 roku. |
| |
=== 5.5 Inne === | === Inne === |
* [[http://wiki.eclipse.org/index.php/GMF_Documentation|GMF_Documentation]] - zawiera wiele dalszych linków. | * [[http://wiki.eclipse.org/index.php/GMF_Documentation|GMF_Documentation]] - zawiera wiele dalszych linków. |
* [[http://help.eclipse.org/help33/index.jsp|Eclipse 3.3 API]] - zawiera również GMF, GEF. | * [[http://help.eclipse.org/help33/index.jsp|Eclipse 3.3 API]] - zawiera również GMF, GEF. |
* [[http://eclipse-po-polsku.blogspot.com/|Eclipse po polsku]] | * [[http://eclipse-po-polsku.blogspot.com/|Eclipse po polsku]] |
* [[http://www.redbooks.ibm.com/redbooks/pdfs/sg246302.pdf|IBM red book]], [[http://publib-b.boulder.ibm.com/Redbooks.nsf/RedpieceAbstracts/sg246302.html|code]] - bardzo przydatne, wiele elementów dobrze opisanych. | * [[http://www.redbooks.ibm.com/redbooks/pdfs/sg246302.pdf|IBM red book]], [[http://publib-b.boulder.ibm.com/Redbooks.nsf/RedpieceAbstracts/sg246302.html|code]] - bardzo przydatne, wiele elementów dobrze opisanych. |
| |
| |
| |
| |
| |
| |
| |
| |
| |
====== Materiały ====== | ====== Materiały ====== |
{{:pl:miw:mgr-gef.pdf|GEF MS Thesis}} | {{:pl:miw:mgr-gef.pdf|GEF MS Thesis}} |
| |
Patrz też na [[hekate:eclipse|osobne hasło]] | Patrz też na [[hekatedev:eclipse|osobne hasło]] |
| |