JDD 08 - sesja o CEP - post factum

Po Java Developers Days 2008 w Krakowie, kilka osób uczestniczących w prowadzonej przeze mnie sesji o programowaniu aplikacji zdarzeniowych wykorzystujących Complex Event Processing (CEP), zwróciło mi uwagę, że moja sesja była trochę zbyt "hardcore'owa", tzn. zbyt szczegółowa i zawierała zbyt dużą ilość materiału. Rzeczywiście, ponieważ uczestnicy konferencji to przede wszystkim deweloperzy Java, to chciałem, aby to wystąpienie miało bardzo techniczny charakter i - zgodnie z modnym dzisiaj wśród deweloperów stylu Unconference - zaplanowałem taki mały eksperyment, że pokażę tylko jeden slajd (tytuł wystąpienia), a następnie będzie się odbywać już tylko programowanie. Mówiąc kolokwialnie chyba troszkę przegiąłem i zabrakło bardziej czytelnego wyjaśnienia kodu, który wypływał spod moich rąk...

W każdym razie, mimo dosyć długich przygotowań, nie zaliczę tego wystąpienia do udanych... Męczy mnie to, więc postaram się przynajmniej częściowo naprawić swój błąd i w dalszej części - mam nadzieję już trochę bardziej przystępnie - wyjaśnić, co robiłem i dlaczego. Chyba lepiej po konferencji niż wcale...
Spisałem więc w postaci kilku dokumentów przebieg przeprowadzonych przez mnie demonstracji, dodając również opis przygotowania sobie własnego środowiska do eksperymentów z CEP, tak, aby osoby zainteresowane budową aplikacji zdarzeniowych w Javie, mogły w pełni samodzielnie wykonać (już w trochę spokojniejszym tempie) demonstrowane przeze mnie przykłady.

Wprowadzenie do tematu Complex Event Processing jest zawarte w załączonej prezentacji w PDF. Oprócz tego, na stronach JDD, czyli http://08.jdd.org.pl, będą dostępne wszystkie materiały z konferencji (w tym nagrania wideo z wystąpień). Jeśli ktoś nie lubi slajdów, a woli krótki opis, to poniżej jest link do opisu tego, co mniej więcej starałem się powiedzieć o aplikacjach zdarzeniowych i Complex Event Processing przed zademonstrowaniem sposobu ich programowania: http://jdn.pl/node/1583

W dalszej części, zademonstruję jak buduje się aplikacje zdarzeniowe korzystające z CEP. Użyję tutaj jednego z pierwszych zdarzeniowych serwerów aplikacyjnych Java - technologii Oracle CEP Server (dawniej BEA WebLogic Event Server).
Zacznę od budowy przykładowego "interfejsu użytkownika" (front-end'u) aplikacji zdarzeniowej. Będzie to aplikacja webowa, poprzez którą będę tworzył zdarzenia, które następnie będą wysyłane do właściwej aplikacji zdarzeniowej (back-end'u). Wewnątrz tej aplikacji zdarzeniowej zdefiniuję reguły CEP, które w sposób ciągły będą przetwarzać przychodzące zdarzenia. W razie pojawienia się określonej korelacji w strumieniu przychodzących zdarzeń - czyli gdy reguła CEP zwróci wynik - utworzone będą nowe zdarzenia. Te nowe zdarzenia będą ponownie przekazane do front-end'u (aplikacji web), która wyświetli je na ekranie. Oprócz tego, zdarzenia będą także wyświetlane na konsoli serwerowej.

Czyli demonstracja składa się z dwóch części:

  1. budowy aplikacji webowej (front-end'u)
  2. budowy aplikacji zdarzeniowej CEP (back-end'u)

Poniższy schemat przedstawia elementy demonstrowanej aplikacji:

Natomiast ten schemat przedstawia komponenty aplikacji zdarzeniowej (back-end'u). Za pomocą strzałek oznaczyłem także przepływ zdarzeń pomiędzy komponentami:

Aby samodzielnie wykonać przedstawione tu demo, należy wcześniej zainstalować stosowne oprogramowanie (serwery aplikacyjne: Oracle WebLogic Server 10.3 oraz Oracle CEP Server 10.3) i przygotować sobie środowisko pracy. Czynności z tym związane opisałem krótko we wpisach, do których linki są poniżej:

  1. pobranie i instalacja oprogramowania WebLogic Server 10.3
  2. pobranie i instalacja oprogramowania Oracle CEP Server 10.3
  3. konfiguracja instancji serwerów aplikacyjnych WebLogic Server
  4. konfiguracja instancji serwerów aplikacyjnych CEP Server
  5. konfiguracja IDE (wtyczek do Eclipse)
  6. konfiguracja IDE do pracy z instancjami serwerów aplikacyjnych

Miłej zabawy z Complex Event Processing w Java !

Pozdrawiam,
Waldek Kot