Wykłady, wykłady, wykłady…

Korzystając z zaproszenia dr inż. Lecha Madeyskiego miałem dziś okazję przeprowadzić wykład dla studentów politechniki Wrocławskiej. Tematem było tworzenie narzędzi na bazie platformy Eclipse. Ponieważ chciałem zaprezentować słuchaczom tematykę jak najszerzej zdecydowałem się na prawdziwy maraton. Postanowiłem przedstawić przekrój przez zagadnienie od konfiguracji środowiska i struktury prostego pluginu po zbudowanie zestawu współpracujących edytorów (strukturalny, graficzny i tekstowy).

Jako problem postawiony przed tworzonymi narzędziami wykorzystałem koncepcje przedstawione na ostatnim spotkaniu Wrocławskiej Grupy Użytkowników Java, tzn. ServiceMix/Apache Camel. Środowisko Apache Camel wykorzystywane jest do zarządzania przepływem wiadomości. Przepływ taki składa się z wielu wzajemnie połączonych elementów realizujących poszczególne etapy zadania. Jednym z kluczowych elementów jest router operujący na zawartości. Wynikowy plik konfiguracyjny silnika wymaga informacji o przepływie oraz podejmowanych decyzjach (z odwołaniem do struktury wiadomości). Tym samym jest to idealny przykład by zaprezentować koncepcje budowy zestawu narzędzi.



Podczas prezentacji zbudowaliśmy uproszczony model logiczny takich przepływów. Na jego bazie utworzyliśmy edytor graficzny umożliwiający łączenie na diagramie abstrakcyjnych elementów. Ponieważ notacja graficzna nie nadaje się do definiowania reguł podejmowania decyzji utworzyliśmy dodatkowo specjalizowany edytor tekstowy. Edytor ten umożliwił nam zdefiniowanie zestawu reguł wraz z warunkami. By warunki mogły operować na realnych polach zdefiniowanych w opisie struktury wiadomości (zamiast prostych łańcuchów tekstowych) zintegrowaliśmy całość z edytorem diagramów klas UML. Tym samym udało się poruszyć wszystkie ważne aspekty budowy narzędzi:
  • dostosowanie narzędzi do problemu
  • notacje strukturalne, graficzne, tekstowe
  • walidacje poprawności, podpowiedzi etc.
  • integrację z istniejącymi narzędziami




Całość wykładu zaplanowałem na 1h demo plus 30min teorii. Niestety wykonanie demonstracji krok po kroku okazało się w tak krótkim czasie bardzo trudne więc część elementów wytłumaczyłem na bazie przygotowanych wcześniej plików. Myślę że takie podejście jest bardziej realistyczne ponieważ czas tracony na pisanie kodu od podstaw można lepiej poświęcić na dokładniejsze wytłumaczenie co, jak i dlaczego. Myślę że doświadczenie to wykorzystam podczas kolejnej prezentacji która odbędzie się już za tydzień w ramach spotkań Wrocław JUG. Mam nadzieję że uda się całość skrócić do 1h.

Oczywiście zapraszam wszystkich zainteresowanych w imieniu swoim oraz całego Wrocław JUG:

Czwarte spotkanie Wrocławskiej Grupy Użytkowników Technologii Java:
"Tworzenie własnych narzędzi na platformie Eclipse"


26 maja 2009 o godzinie 18:30.
Instytut Informatyki Uniwersytetu Wrocławskiego,
Sala wykładowa Kameralna Wschodnia nr 119, I piętro.

1 komentarze:

Krzysiek pisze...

Po wczorajszej rozmowie, bardzo liczę na bycie świadkiem dyskusji o Groovy między Tobą a Jackiem ;)

ps. odnośnie problemu z Java extension, to z tego co pamiętam implementacja Java extension i JavaMetaModel jest inna, więc może jakby zrobić jakiś singleton i w nim trzymać metody, zainicjalizować go przez np.

HelperClass cached helper():
JAVA Helper.createHelper()
;

i potem przez to wywoływać metody, to może byłoby szybciej, choć bardzo do okoła.

Poza tym, dodaliście to jako problem do bugzilli?

Pozdrawiam,
Krzysztof Kowalczyk