18 lipca 2008

NetBeans 6 i jego edytor PageFlow do faces-config.xml

Pamiętam, że już jakiś czas tematu zastanawiałem się nad zastosowaniem edytora PageFlow do edycji faces-config.xml - główny plik konfiguracyjny aplikacji JavaServer Faces (JSF). Dzisiaj natrafiłem na wpis, który sprowokował mnie do zbadania tego tematu dokładniej. I warto było, bo kolejny temat mam z głowy. W końcu! Czy nie masz takich natarczywych tematów, które trapią Cię od wielu dni/tygodni/miesięcy, ale mimo to nie znalazłeś/-aś czasu, aby go rozwiązać?! Ja mam ich kilka i jeden właśnie zszedł z listy.

Głównym zadaniem edytora PageFlow, który służy do edycji pliku faces-config.xml, jest umożliwienie wprowadzania zmian w regułach nawigacyjnych aplikacji JSF w sposób graficzny bez konieczności grzebania się w zawiłościach pliku XML (cf. Page Flow Editor Functional Specification). Udostępnienie tej funkcjonalności po prostu zdejmuje z użytkownika obowiązek znajomości jego składni. I w zasadzie to jest jego główna i jedyna potrzeba korzystania. Skoro mniej musimy znać, aby poprawnie skonfigurować przepływ między stronami w aplikacji JSF, to właśnie to jest jego zaletą i tego oczekiwałbym od IDE.

Garść informacji o edytorze PageFlow dla faces-config.xml znajduje się w dokumencie PageFlow Editor for NetBeans 6.0 i jakkolwiek dotyczy wersji NetBeans 6.0, to niewiele zmieniło się od tego czasu. Dodatkowych informacji, a w zasadzie zrzutu ekranu, który uzmysławia możliwości PageFlow, można znaleźć we wpisie Net Beans (6.1) Page Flows, ale ponownie zbyt pobieżnie i niewiele. Dopiero podczas lektury tego wpisu zorientowałem się, czego mógłbym faktycznie oczekiwać od PageFlow. Do tej pory moje aplikacje JSF budowane w NetBeans składały się ze zwykłych stron JSP, które zawierały kontrolki JSF. Mówiąc językiem używanych szkieletów webowych, to był to jedynie JavaServer Faces.

Przy takiej konfiguracji PageFlow udostępniał jedynie 3 akcje dla stron JSP.

Zastanawiałem się wciąż po co ten plus po prawej stronie (u góry zakryty przez menu Delete). Kilkakrotnie napotykałem dyskusję dotyczącą Visual Web JavaServer Faces (w skrócie Visual Web) w kontekście budowania aplikacji JSF w NetBeans. Visual Web to zestaw kontrolek JSF, podobnie jak IceFaces, RichFaces, Tomahawk czy Tobago (pewnie jest ich znacznie więcej, ale te mi teraz przychodzą do głowy). Coś mi mówiło, że właśnie tutaj powinienem szukać odpowiedzi. Kiedy dodałem Visual Web JavaServer Faces do kategorii Frameworks we właściwościach projektu projektu JSF strony JSP stworzone jako Visual Web JSF Page były specjalnie traktowane przez NetBeans.

Nadal były stronami JSP, ale poza zmianą wizualną w widoku Projects, która polegała na zmianie ikony związanej ze stronami, do ich edycji mogłem użyć edytora Design, JSP i Java w jednym (czego nie miałem do dyspozycji przy "zwykłych" stronach JSF).

Zmiana również wpłynęła na dostępne menu w PageFlow związane ze stronami typu Visual Web.

Pojawiły się 3 nowe akcje i możliwe stało się wiązanie (tworzenie przepływu/nawigacji) między elementami strony - przycisk (ang. button) jako Add Button, odnośnik (ang. hyperlink) jako Add Hyperlink oraz odnośnik z obrazkiem (ang. image hyperlink) jako Add Image Hyperlink a innymi stronami w aplikacji. Mam wciąż pewne opory przed stosowaniem tego zestawu Visual Web, bo brakuje mi sprawdzenia na ile jest to przenośne między serwerami aplikacyjnymi (np. czy będę mógł uruchomić aplikację zbudowaną z pomocą Visual Web na Apache Geronimo czy WASie) oraz potencjalne problemy podczas integracji z innymi, wspomnianymi wcześniej, zestawami kontrolek JSF. Temat zostawiam do zbadania na później, chyba że ktoś już zna odpowiedź i zechciałby podzielić się wrażeniami.

Ostatecznie PageFlow prezentuje się następująco.

Od razu można zgadnąć, które strony są typu Visual Web, a które "zwykłymi" JSP. I to jest właśnie zagadka na weekend - rozpoznać typy stron na załączonym wyżej zrzucie ekranu. Miłej zabawy!

3 komentarze:

  1. Wszystko mówi mała ikonka koło nazwy pliku ;) (taka mała podpowiedź).

    Swoją drogą pamiętam, że na prezentacji (jeszcze bety) ten komponent nie sprawował się najlepiej, dobrze, że go naprawili jest to znaczące ułatwienie.
    Mając taki diagram możemy dodatkowo zobrazować klientowi jak działa jego strona.

    OdpowiedzUsuń
  2. "Mam wciąż pewne opory przed stosowaniem tego zestawu Visual Web, bo brakuje mi sprawdzenia na ile jest to przenośne między serwerami aplikacyjnymi"

    Sprawdzałem działanie VisualWebPack z Geronimo:
    http://portal.macintosh.pl:8080/web/guest/6?p_p_id=62_INSTANCE_P6nG&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_62_INSTANCE_P6nG_struts_action=%2Fjournal_articles%2Fview&_62_INSTANCE_P6nG_groupId=10672&_62_INSTANCE_P6nG_articleId=10774&_62_INSTANCE_P6nG_version=1.0
    działa...
    Sprawdziłem działanie z JBoss i działa...
    Sprawdzałem w środowisku portalowym i również działa:
    http://portal.macintosh.pl:8080/web/guest/6?p_p_id=62_INSTANCE_P6nG&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_62_INSTANCE_P6nG_struts_action=%2Fjournal_articles%2Fview&_62_INSTANCE_P6nG_groupId=10672&_62_INSTANCE_P6nG_articleId=10685&_62_INSTANCE_P6nG_version=1.0
    Działa również z Liferayem (Web Synergy)...

    Zastanawiam się czemu w praktyce nie używa się takich generatorów jak Visual Web Pack. Co odróżnia takiego Seam'a + Red Hat Developer Studio od VWP. Może to bardziej problem społeczny, niż informatyczny. Brak akceptacji powoduje brak rozwoju, brak rozwoju powoduje brak akceptacji i kółko się zamyka.

    Nie dramatyzuję, ale bardzo fajnie by było pracować jak człowiek z możliwością podglądu online (tak jak np w JBoss Studio) na dowolnym zestawie kontrolek JSF czego na razie brakuje zarówno w NB jak i JBS.

    Pozdrawiam,
    Piotrek

    OdpowiedzUsuń
  3. Witam

    VisualWebPack uzywalem (probowalem) przez 3 tygodnie po 8-9 godzin dziennie do stworzenia prostej aplikacji (zaledwie kilka widokow).

    Testowalem na Tomcacie 6.0, JBosie 4.2.2GA i OC4J 10.1.3 - bez problemow dzialo jedynie na tym pierwszym. Na drugim wogole mi sie nie deployowalo a na Oraclu sypalo wyjatkami nie do obejscia podczas sortowania tabeli...

    "Zastanawiam się czemu w praktyce nie używa się takich generatorów jak Visual Web Pack"

    - VWP nie nadaje sie kompletnie jako framework do tworzenia ogolnie dostepnych serwisow internetowych - strony powiazane sa jedynie za pomoca akcji javascriptowych a nie normalnych seofriendly urli

    - problemy z rozkladaniem elementow na stronach - przy uzyciu wizualnych elementow

    - beznadziejna interpretacja css przez wizualny edytor netbeansa - tragedia - przez to komponenty nakladaja sie na siebie, chowaja, etc

    - zdecydowany brak dokumentacji do tego narzedzia i mozliwosci jakie oferuje

    W koncu po trzech tygodniach zapoznawania sie z tym narzedziem zostalo ono przeze mnie calkowicie zarzucone - juz nigdy wiecej ;)

    Jezeli ktos dal rade przy uzyciu VWP tworzyc z powodzeniem aplikacje, to naprawde podziwiam.. i moge postawic piwo jak mi opowie jak to zrobil ;

    OdpowiedzUsuń