28 lutego 2011

BPMN, BPEL4People, WS-HumanTasks i okolice a prace magisterskie

5 komentarzy
Coraz częściej pytany o tematy prac magisterskich, w moim przypadku rozmowa zwykle schodzi na bardziej techniczny temat Korporacyjnej Javy (JEE6), albo bardziej biznesowy (przynajmniej z nazwy) procesów biznesowych i systemów je wspierających - BPMS (ang. Business Process Management Systems). Oba mają związek z moimi zainteresowaniami, w których pierwszy - JEE6 - jest bardziej kultywowany prywatnie, choć ostatnio to się zmienia, a drugi - BPMS - jest nakręcany przez zainteresowania służbowe.

Tak się składa, że coraz częściej dana technologia "kręci" mnie, kiedy widzę jej zastosowanie do realizowania nawet najdrobniejszego problemu ludzi w mniejszym stopniu, albo całkowicie niezwiązanych bezpośrednio z IT - to, zwykle Ci, którzy posiadają kaskę^H^H^Hbudżet, czyli finansowanie potencjalnego naszego rozwoju technicznego, jeśli nie starczy nam (ludziom IT) czasu na prywatny rozwój...za darmo (przynajmniej na początku).

I to mnie cieszy, że w końcu dojrzałem i widzę powody, dla których należy uczyć się nowych technologii - nie dla samej nauki (co ma tę zaletę, że ćwiczy umysł, który mniej poddaje się później procesom starczym), ale głównie z myślą o możliwych przedsięwzięciach dochodowych - służbowo albo (gorąco polecam) prywatnie. Och, jak ja chciałbym móc się odważyć na krok rozpoczęcia prywatnego przedsięwzięcia...

I napisał do mnie (po wcześniejszej rozmowie) kolega IBMer, któremu zamarzyło się "rozpoznać obszar procesów biznesowych zorientowanych na użytkownika, porównać różne podejścia do tego tematu i opisać najczęściej występujące scenariusze interakcji użytkownika z użytkownikiem i użytkownika z systemem.".

Temat całkiem super...technicznie, ale na szczęście promotor "bardziej orientuje się w urządzeniach mobilnych (Android, iPad, iPhone itd), eksploracji danych tekstowych, www, bezpieczeństwem. Podsuwał mi też ogólne propozycje tematów dotyczących wizualizacji i interfejsów użytkownika (m.in. wizualizacji dużych ilości danych przestrzennych)." I to mnie bardzo ucieszyło, bo spojrzenie przyszłego magistranta, to jedynie nauka kolejnej technologii wierząc, że przyniesie mu korzyść później jako pracownik pewnej korporacji (brrr, cóż za krótkowzroczne myślenie!) Na szczęście na straży dobrego (pragmatycznego?) podejścia stoi promotor, który jakiś taki nieprotechniczny. Możnaby rzec konserwatywny, albo nieprzyszłościowy. Nic bardziej mylnego.

Dzięki owemu promotorowi ów magistrant zobligowany jest do większego ćwiczenia umysłowego i pożenić obie strony, tj. magistrant zabawi się tak z technologią, aby połączyła oba spojrzenia - własne, stricte techniczne oraz bardziej zorientowane^H^H^Hukierunkowane^H^H^Hz naciskiem na użytkownika, czyli...paradoksalnie...dokładnie tak, jak zażyczył sobie tego sam oferent-student w swojej propozycji.

Kiedy kilka dni temu miałem okazję uczestniczyć w niezwykle merytorycznej prezentacji Apache Hadoop prowadzonej przez Marcina Cylke rozkochałem się w obu :-) W pierwszym, Hadoop, dosłownie, za jego możliwości (zarezerwowałem już książki o nim w imieniu Warszawa JUG i rozwiązanie weszło na poziom wyższy mojego zainteresowania) oraz w drugim - Marcinie - za doskonałą prezentację, pozbawioną "efektów specjalnych", ale utrzymującą w napięciu, która ukazała mi piękno (= przydatność) rozwiązania bez dodatkowego chaosu komunikacyjnego (który tak często gości w moich wystąpieniach za co wszystkich poszkodowanych przepraszam). Dokładnie tego życzyłbym sobie na kolejnych spotkaniach i własnych wystąpieniach. Było się czego uczyć.

I kolejny raz dostrzegłem, że mimo całego mojego zachwytu nad umiejętnościami Marcina i Hadoopa, na moje pytanie "A gdzie to proponujesz zastosować?" usłyszałem początkowo jedynie wyraźne stęknięcie i prezenter sprezentował nam stan niekoniecznie głębokiej, ale zauważalnej zadumy. Kolejna...wybacz(cie) określenie..."ofiara" poznawania nowego bez kontekstu po co i na co dane narzędzie powstało.

Kiedy więc rozmawiałem o pracy dyplomowej wokół BPMS prowadzoną przez promotora od wizualizacji danych, przypomniałem sobie, że możnaby zaciągnąć wspomnianego Hadoopa, aby połączyć obie strony (a ze mną, to nawet trzy strony, w którą każdy z proponujących ciągnął). Niech Hadoop przetwarza dane zebrane z interakcji użytkownika z procesem biznesowym i wizualizuje je po wcześniejszym ich przetworzeniu. Widzę tutaj nie jedną, ale całą serię magisterek, a na pewno niebagatelny projekt, na którym możnaby zarobić i u nas, w Polsce.

I zmierzając ku podsumowaniu, aczkolwiek poruszając kolejny wątek, wbrew oczekiwaniom, że podsumowanie to w końcu zebranie wszystkiego i wnioskowanie, napiszę, że przejrzałem dziś z rana Sieć w poszukiwaniu informacji nt. czegoś, co zdarzyło mi się spotkać jako zadanie personelu, a dla ludzi z branży brzmiałoby bardziej swojsko jako human taski (od angielskiego human tasks).

Trafiłem najpierw na wpis na blogu IBM's Lombardi Integration Roadmap, z którym zgadzam się bezsprzecznie (pozwoliłem sobie na puszczenie wycinka na mojego twittera). Później trafiłem na Activiti oraz BonitaSoft i pojawiły się specyfikacje BPMN 2.0 oraz SCA 2.0 i pojęcia takie jak executable modeling. Ogólnie dało się wyczuć pewnego rodzaju oczekiwanie na to właściwe rozwiązanie, które pozwoli modelować jak znane produkty skupione wokół BPMS z BPMN, a jednocześnie pozwoli zaimportować artefakty innych rozwiązań bez zbędnych komplikacji (jak to udowodnił, że jest możliwe, projekt Apache OpenEJB, który z należytą uwagą honoruje rozszerzenia innych serwerów aplikacyjnych - Oracle WebLogic, GlassFish i bodajże JBoss AS do własnej konfiguracji).

Tak przyglądając się stanowi obecnemu świata BPMS i różnym próbom stworzenia tego właściwego środowiska, w którym BPMN 2.0 byłby głównym graczem, gdzie modelujący ma możliwość wykonania własnego tworu, chciałoby się powiedzieć, że na tym polu jest wiele do zrobienia i możnaby zaryzykować tezę, że rozpoczęcie projektu od zera wcale nie jest skazane na porażkę. Można się również przyłączyć do istniejących otwartych rozwiązań, ale mam wrażenie, że nauka istniejącego kodu może być tak samo wartościowa, co i stworzenie od zera. Wynik zależy od finansowania i skuteczności zespołu. Pewnym jest, że magisterek to jeszcze wiele na ten temat powstanie. Tylko, czy jest komu je prowadzić, kto nie jest już "umoczony" w projekt i zechciałby? Dostrzegam przynajmniej jedną warszawską firmę tworzącą oprogramowanie, która niekoniecznie duża, ale postawiła dużo, aby temat drążyć dalej. Ufam, że to przełoży się na coś namacalnego i...niedrogiego.

23 lutego 2011

Darmowy kurs UML Grzegorza Kukawskiego

7 komentarzy
Mój dobry kolega, z którym nie jeden egzamin przyszło mi zdawać podczas studiów - Grzegorz Kukawski zdecydował się na pewną odmianę w sposobie dzielenia się wiedzą i postanowił włożyć trochę wysiłku w stworzenie całkowicie darmowego kursu UML.

Jakby wyczuł moment, bo jeszcze wczoraj (!) rozmawiałem z innym kolegą na temat ukończenia egzaminu Sun Certified Enterprise Architect, który obecnie nazywa się Oracle Certified Master, Java EE 5 Enterprise Architect, którego jeszcze nie mam, a chęć na niego mi nie mija. Już miałem do niego podejście, mam pierwszy etap zdany, ale pozostają te eseje i tu leży sedno sprawy - do kolejnych etapów potrzebuję znajomości UML przynajmniej na poziomie podstawowym, której raczej nie posiadam - coś tam potrafię, ale być może ze względu na niewielkie użycie, a z pewnością zerowe w projektach, nigdy nie miałem możliwości sprawdzenia mojej wiedzy UML w boju. I to chciałbym zmienić! I inni widać również. To może jedynie spotkać się z moim aplauzem.

Kiedy napisał do mnie Grzesiek, stało się jasne, że nie dane mi jest nie skorzystać z okazji "upieczenia dwóch dań na jednym ogniu" - sprawdzę, co tam przygotowano, a dodatkowo pozwoli mi to uzbroić się w konieczną wiedzę z zakresu modelowania z użyciem UML i będzie SCEA5...ekhm...OCEA5. Po prostu bajka! Już widzę morze pieniędzy z tych kontraktów, które będę realizował z Tobą i Tobą, i pewnie z Tobą również :)

Nie czejając długo zapisałem się na kurs i po chwili pojawiła się wiadomość powitalna w mojej skrzynce pocztowej:

Jacku

Z pewnością nie bez powodu zainteresował Cię mój Darmowy Kurs UML.
Chcesz wiedzieć więcej na temat modelowania za pomocą UML i z pewnością interesuje Cię wiedza praktyczna z tego zakresu. Na pewno marzysz również o zwiększeniu Twojej pozycji na rynku pracy. To bardzo dobrze, pomogę Ci w tym.

Jest jednak jedno ale. Widza na temat notacji to jedno, a umiejętność modelowania systemów informatycznych to drugie. Można by to porównać do języka obcego. To, że nauczysz się np. angielskiego nie znaczy jeszcze, że umiesz w rozmowie wzbudzać sympatię anglików. Do tego potrzebujesz poznać ich kulturę, przyzwyczajenia i mentalność. Język angielski jest Ci do tego niezbędny, ale aby go wykorzystać w określonym celu, potrzeba ćwiczyć.

Wiem o tym doskonale i dlatego wierzę, że to czym się zajmuję ma sens. Zawsze staram się uczyć wiedzy praktycznej.

W tym darmowym kursie zobaczysz wiele przykładów użycia języka UML. Będziesz miał zadaną również, po każdej lekcji, pracę domową. Przygotuj się więc i zarezerwuj trochę czasu. Planuję również rozwijać swoją działalność, aby dostarczać jak najwięcej wiedzy praktycznej. Jednak na razie skupmy się nad nauką języka ang.. (przepraszam) UML.

Jeszcze kilka spraw organizacyjnych. Dzisiaj dostaniesz jeszcze wolne. Ale co trzy dni, będziesz dostawał kolejną lekcję, którą będziesz musiał zrozumieć i zrobić do niej ćwiczenia. Przygotuj się na to. Jeśli miałbyś jakieś wątpliwości możesz zajrzeć na forum (http://forum.scire.pl), gdzie ćwiczenia są dyskutowane przez Twoich współkursantów (o ile już na nim nie jesteś).

Wszystkich lekcji (nie licząc dzisiejszego wstępu) jest dziewięć i będę wysyłał je do Ciebie co trzy dni.

Zapraszam Cię na pierwsze wideo, w którym poznasz mój głos i zapoznasz się z zawartością kursu.

Pozdrawiam cię serdecznie ;)
Grzesiek Kukawski
--
http://scire.pl
http://darmowy-kurs-uml.scire.pl
http://forum.scire.pl

21 lutego 2011

78. spotkanie Warszawa JUG - Marcin Cylke z "Apache Hadoop i okolice"

2 komentarzy
Warszawska Grupa Użytkowników Technologii Java (Warszawa JUG)Warszawska Grupa Użytkowników Javy (Warszawa JUG) zaprasza na 78. spotkanie, które odbędzie się w najbliższy wtorek, 22-go lutego o godzinie 18:00 w sali 5440 Wydziału MIM UW przy ul. Banacha 2 w Warszawie.

Temat: Apache Hadoop i okolice
Prelegent: Marcin Cylke

W trakcie spotkania zostanie przedstawiony projekt Apache Hadoop - czyli implementacja MapReduce do rozproszonego przetwarzania danych. Prezentacja "dotknie" podstaw teoretycznych, skupi się na praktycznym wykorzystaniu Hadoopa na świecie. Będą również przykłady działania. Wykład będzie wprowadzeniem do tematu - przykłady będą miały na celu obrazować działanie Hadoopa i nie będą nadmiernie komplikowane.

W czasach kiedy skalowanie procesorów jest coraz trudniejsze, mamy dostępne narzędzia do skalowania środowiska aplikacji. Temat bardzo ciekawy!

Marcin Cylke jest absolwentem Wydziału Elektroniki i Technik Informacyjnych Politechniki Warszawskiej. Zawodowo, w firmie TouK, zajmuje się integracją na szynie ESB. Swoje zawodowe doświadczenia opisuje na blogu Marcin bloguje. Prywatnie bujający w obłokach fantasta.

Planowany czas prezentacji to 1,5h, po których planuje się 15-30-minutową dyskusję.

Wstęp wolny

Zapraszam w imieniu prelegenta i grupy Warszawa JUG!

07 lutego 2011

Uruchomić zadanie co 5 sekund w EJB 3.1 ze @Schedule(second = "*/5", info="Every 5 seconds")?

13 komentarzy
Pomyślałby kto, że uruchomienie zadania w EJB 3.1 co 5 sekund wymaga jedynie stworzenia bezstanowego ziarna sesyjnego z metodą opatrzoną adnotacją @Schedule(second = "*/5", info="Every 5 seconds") i gotowe. Nic bardziej mylnego! Okazuje się, że domyślne wartości dla atrybutów @Schedule to zerowa sekunda, minuta i godzina, więc brak ich określenia sprawi, że kolejne uruchomienie będzie o północy następnego dnia. Można się nieźle przejechać podczas wdrożenia.

Więcej (kompletny projekt i kilka dodatkowych przemyśleń) w artykule Uruchomienie cyklicznego zadania w EJB 3.1 ze @Schedule.

p.s. Wciąż zastanawiam się nad moim rozdwojeniem językowym - polskojęzycznym (tutaj) i angielskojęzycznym (na http://blog.japila.pl). Głównym motywem był brak interakcji z czytelnikami, co potwierdziła statystyka na blog.japila.pl, gdzie przy 11 wpisach mam 22 komentarze. Inaczej niż tutaj i po cichutku liczę na choć szczątkowy odzew, np. co należałoby usprawnić w artykule, a szczególnie w sekcji dotyczącej testowania. Nie mam lepszego pomysłu na przetestowanie @Schedule niż to, co zaproponowałem w artykule. Dotknął ktoś tego problemu? Jakieś wskazówki na bardziej eleganckie rozwiązanie?

p.s.2. W kolejnych odcinkach dalej o usłudze budzika (ang. timer service) w EJB 3.1. Może jakieś podpowiedzi, np. z jakim kontenerem? Brak traktuję jako zachętę ku IBM WebSphere Application Server V8 lub Apache OpenEJB 3.2.

27 stycznia 2011

Nieprzewidziane przypadki moje podczas ostatniego spotkania Warszawa JUG

0 komentarzy
Podczas ostatniego 76. spotkania Warszawa JUG - Tworzenie procesów biznesowych z Activiti i IBM WebSphere BPM (WPS/WID/WLE) doszło kilkukrotnie do swoistego mojego zawieszenia, kiedy prezentowałem "wspaniałości" produktów z rodziny IBM WebSphere BPM - Process Server (WPS) V7 oraz Integration Developer (WID) V7.

Pamiętam, że udało mi się natrafić na przynajmniej 2 takie momenty - podczas odczytywania adresu (punktu końcowego) usługi sieciowej...okej, okej...Web Service w konsoli administracyjnej WPSa, którego tam po prostu nie było (ku mojemu i pewnie publiczności również widząc moje) zdziwieniu oraz niemałemu zakłopotaniu przy prezentacji WS-BPEL dla nowostworzonego procesu biznesowego.

Pierwszy temat już wyjaśniłem i opisałem w Endpoint address of JAX-WS binding empty when…Enter pressed too early. O drugim będzie niebawem. Podobnie jak z nagraniem spotkania. Deklarowałem lekki lifting moich nieocenzurowanych korporacyjnie wypowiedzi, ale pewnie skończy się na konwersji i puszczeniu w świat bez edycji. Niebawem.

Przy okazji, spotkanie było dla mnie podwójnym zaskoczeniem (pomijając wyżej wymienione). Po primo, pojawiło się wiele osób (powiedziałbym, że > 30), a po secundo wielu z tych wielu nie widziałem całymi latami i to nie tylko na naszych spotkaniach. Powiedziałbym, że pojawiła się śmietanka naszego światka korporacyjno-javowego i do tej pory nie potrafię wytłumaczyć, skąd takie zainteresowanie?! Czyżby IBM WebSphere BPM cieszył się takim zainteresowaniem, czy ogólnie BPM z Activiti, czy wręcz formuła spotkania, gdzie można było poznać wiele w ciągu niewielkiej ilości czasu. Sądzę, że to ostatnie i zamierzam to wykorzystać już niebawem.

Chciałbym tym samym przeprosić Macieja Próchniaka za swoje wyjście w trakcie jego prezentacji Activiti, na którą ostrzyłem sobie zęby oraz za zabranie kamery. Liga koszykówki stała się powodem, a napalonym na nią niemiłosiernie. Wybacz Maćku!

21 stycznia 2011

A może do teatru? "Piąta rano" nie przegap!

5 komentarzy
Jak wielu z Was mogło zauważyć, od jakiegoś czasu, dokładnie od początku roku 2011, nie upubliczniam wpisów na tym blogu. Powodem jest próba uporządkowania moich aktywności, aby efekt był proporcjonalny do włożonego wysiłku. Ot, jedno z wielu deklaracji, które obiecywałem sobie, że zrealizuję, a jakoś tak nie wychodziło.

Tym razem jest inaczej. Z nowym rokiem przeniosłem się na angielskojęzyczny blog pod adresem http://blog.japila.pl. Tutaj było po polsku (i tak zostanie), ale na pewno będzie mniej technicznie, jeśli w ogóle, a tam wyłącznie po angielsku i profesjonalniej.

Rozdwojenie moich poczynań pozostanie, bo w końcu żyję i funkcjonuję w Polsce, moim językiem jest przede wszystkim polski, a jedynie/aż technicznie ujawniam swoje alter ego, które swoje poczynania opisuje na wspomnianym blogu japila.pl.

I kiedy ostatnio pojawiłem się na monodramie muzycznym "Piąta rano" Fundacji Artystycznej MŁYN zamurowało mnie - jak to muzycznie można zrobić tak ciekawe przedstawienie! Żona wiedziała, że może mnie wycofać, gdybym wiedział, że to muzyczna imprezka i kolejny raz okazało się, że często dobrze niewiedzieć, aby posmakować nowego. A było na prawdę smacznie! Występ cudo!

Zainteresowanych odsyłam na stronę monodramu, albo od razu do rezerwacji biletów, które kosztują jedynie 15 PeeLeNów:

* mailowo: rezerwacje@fundacjamlyn.pl
* telefonicznie: 0 519 672 356
* SMS-em: 0 519 672 356

Ach, bym zapomniał o gdzie i kiedy:

22 stycznia godz. 19:00
Scena Staromiejska SCEK
ul. Jezuicka 4

03 stycznia 2011

NetBeans 7 i Add Embeddable EJB Container, Create JUnit Tests oraz Code Generation in pom.xml

1 komentarzy
W Java EE 5 udostępniono możliwość uruchamiania Java Persistence (JPA) 1.0 poza środowiskiem serwera aplikacyjnego - można przeczytać o tym w moim artykule Java Persistence API w samodzielnej aplikacji.

W Java EE 6, poza JPA 2.0, można jeszcze uruchomić kontener Enterprise JavaBeans (EJB) 3.1 oraz kontener Contexts and Dependency Injection (CDI) 1.0. O tym pierwszym - EJB 3.1 - pisałem w Embeddable EJB 3.1 z GlassFish 3.1 i NetBeans IDE 7.0, a o drugim - CDI - w Contexts and Dependency Injection (CDI) praktycznie - zestawienie środowiska z JBoss Weld, Arquillian i Apache Maven 2.

Zacząłem drążyć temat EJB 3.1 z NetBeans 7 i całkiem przypadkiem doszukałem się dwóch użytecznych funkcji - Add Embeddable EJB Container oraz Create JUnit Tests. Sprawdźmy je w działaniu zamiast rozwodzić się nad ich użytecznością (albo ich brakiem).

Cmd+Shift+N - Maven > EJB Module, podaj Project Name, np. aaa i Finish. Mamy projekt EJB zarządzany przez Apache Maven.

Cmd+N - Enterprise JavaBeans > Session Bean, wciśnij Next >, wybierz pakiet z listy w Package i Finish. I mamy komponent EJB.

Otworzy się nowa klasa ziarna EJB 3.1. W jej ciele, Ctrl+i i wybierz Add Business Method... i OK. Pojawi się nowa metoda public void businessMethod(). W jej ciele, wpisz sout i wciśnij TAB. Wpisz Witaj! W ten sposób masz gotowe do uruchomienia ziarno EJB z metodą biznesową, której zadaniem jest wyświetlenie Witaj!

Wybierz nowoutworzoną klasę NewSessionBean i z menu pod prawym klawiszem myszki wybierz Tools > Create JUnit Tests.
Pojawi się panel konfiguracyjny klasy testowej.

Zatwierdź przyciskiem ENTER.

Zaraz po tym powinien otworzyć się edytor z właśnie stworzoną klasą testującą z metodą testBusinessMethod(). Usuń linię fail("The test case is a prototype.");, np. przez Cmd+x. Test gotowy.

Uruchomienie testu - Cmd+F6.
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running pl.jaceklaskowski.jee6.abc.NewSessionBeanTest
businessMethod
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.396 sec <<< FAILURE!

Results :

Tests in error: 
  testBusinessMethod(pl.jaceklaskowski.jee6.abc.NewSessionBeanTest)

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0

------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Pojawił się błąd? Jak najbardziej oczekiwany (zajrzyj do What's the cause of this exception: java.lang.ClassFormatError: Absent Code? po więcej wyjaśnień).

Nie wiem, co informuje NetBeans 7 o konieczności pojawienia się pomocy, albo jak długo należy czekać na jej pojawienie się, ale dłuższa chwila, dwie i na projekcie pojawi się ikona z żółtym wykrzyknikiem.

Kiedy najedzie się na katalog projektu pojawi się chmurka z wyjaśnieniem powodu, dla którego pojawił się wykrzyknik - Missing Embeddable EJB Container.

Wtedy, pod prawy przyciskiem myszki znajdziemy menu Show and Resolve Problems...

Pojawi się okienko dialogowe, w którym pojawi się Missing Embeddable EJB Container z przyciskiem Add Embeddable EJB Container.
Kiedy wciśniesz przycisk, do projektu dodana zostanie zależność i repozytorium, gdzie się znajduje. Spróbuj.

  org.glassfish.extras
  glassfish-embedded-all
  3.0
  test


  
    http://download.java.net/maven/glassfish/
    http://download.java.net/maven/glassfish/
    default
  
Warto dodać, że zapoznanie się z pom.xml dla tego projektu, to wyzwanie same w sobie. Tyle kombinacji, aby uruchomić wbudowany kontener EJB 3.1 z GlassFish 3.0. Warto dla kogoś, kto chciałby poznać Mavena od podszewki (co w tym przypadku lepiej wykonałby Maven podpierając się Apache Ant przez wtyczkę maven-antrun-plugin).

A tak całkiem przy okazji mojej nauki uruchamiania wbudowanego kontenera EJB 3.1, wyczytałem w STS 70 Maven :: Test Specification: Maven Support Test Specification, że edytor pom.xml ma specjalizowany system podpowiedzi Code Generation in pom.xml. W pom.xml wciskamy kombinację klawiszy Alt+Insert i możemy wybrać jedną z kilku opcji utworzenia sekcji XMLowej.

Dla początkujących, jak znalazł.