Software Development

Tworzenie formularzy zadań BPM w JSF

Styczeń 14, 2016 0
Podziel się:

Mimo obecnej mody na wykorzystywanie technologi JavaScript i komunikacji za pomocą REST warto się zastanowić czy zawsze jest to najlepszy wybór i czy przy niektórych projektach nie skorzystać z rozwiązań bibliotek serwerowych takich jak JSF.

Dobrym przykładem gdzie wykorzystanie biblioteki JSF może być opłacalne jest tworzenie formularzy zadań procesów BPM. Typowe formularze w ramach BPM są bardzo do siebie podobne nawet w przypadku różnych procesów.

Przykładowe zadanie procesu z podziałem na sekcje zostało zaprezentowane poniżej:

tabelka_BPM

Typowy formularz zadania procesu BPM składa się z:

  • Części nagłówka zadnia wyświetlającego podstawowe dane o zadaniu.
  • Części środkowej zawierającej kilka paneli z danymi do odczytu i zapisu stanowiącymi kontekst pracy użytkownika.
  • Sekcja przycisków zawierająca przyciski sterująca zadaniem oraz procesem np. zakończenie zadania, zaakceptowanie, odrzucenie itp.

Za użyciem technologi JSF do tworzenia formularzy przemawiają zalety:

  1. JSF jest standardem specyfikacji Java EE. Oznacza to stabilną sytuację w perspektywie najbliższych lat i brak zależności od właściciela tak jak ma to miejsce w przypadku rozwiązań własnościowych. Jest to bardzo ważny punkt kiedy chcemy uniknąć sytuacji w której twórcy biblioteki zawieszą rozwój i wsparcie biblioteki lub wydadzą nową wersję która nie będzie kompatybilna z wersjami wcześniejszymi. W takim przypadku pozostaje nam wybór albo kontynuować rozwijanie aplikacji na niewspieranej bibliotece albo wykonać migrację co wiąże się z poniesieniem kosztów.
  2. Jest powszechnie używana i znana, przez co łatwiej znaleźć programistę potrafiącego w niej programować.
  3. Jest rozwiązaniem komponentowym i łatwym do przyswojenia i używania przez programistów mających mniejsze doświadczenie w tworzeniu interfejsów użytkownika z wykorzystaniem JavaScript i HTML.
  4. Jest całkowicie zintegrowany z CDI pozwalając ograniczyć do minimum liczbę dodatkowych warstw (ta cecha znacząco zwiększa produktywność).
  5. Zapewnia bardzo duży poziom bezpieczeństwa. Konstrukcja komponentów JSF uniemożliwia manipulację danymi po stronie przeglądarki użytkownika i bardzo ułatwia walidacje danych. Dodatkowo w bardzo łatwy sposób można ukrywać i pokazywać komponenty w zależności od roli użytkownika. Cała operacja jest wykonywana po stronie serwera co dodatkowo zwiększa bezpieczeństwo.
  6. W najnowszej wersji 2.2 całkowicie wspiera tworzenie responsywnych stron z użyciem HTML5, CSS3 oraz JavaScript.
  7. Pozwala w bardzo prosty sposób na tworzenie szablonów stron i bazy komponentów formularzy nadający się do powtórnego użycia.
  8. Posiada bardzo dużą liczbę bibliotek gotowych do użycia komponentów.
  9. Podczas uruchamiania formularza waliduje składnię co pozwala na wczesne wykrycie problemów takich jak np. niezamknięty tag.

Podczas tworzenia formularzy możemy korzystać z rożnych komponentów JSF:

  1. Standardowych komponentów JSF z namespace h takich jak h:inputText itp.
  2. Dostępnych bibliotek komponentów JSF np. Primafaces, Richfaces, IceFaces, itp.
  3. Tworzyć nowe kompozytowe komponenty graficzne za pomocą dodanego w JSF 2.0 Composite Components.
  4. Tworzyć nowe komponenty JSF w języku Java.

W przypadku dwóch pierwszych rozważań prawdopodobnie konieczne będzie dopasowanie stylów komponentów za pomocą dołączonego do strony arkusza stylu CSS oraz ustawienia w komponentach odpowiednich atrybutów styleClass oraz style.

Dodane w JSF 2.0 tworzenie komponentów Composite Components znacząco upraszcza tworzenie komponentów graficznych. W łatwy sposób, bez konieczności pisania kodu Java, możemy utworzyć komponent zawierający w sobie agregację komponentów standardowych, kody JavaScript a także standardowe tagi HTML. Pozwala to na utworzenie np. sekcji nagłówka zadania która następnie może być re-używalna na kolejnych formularzach zadań.

Tworzenie komponentów w Java daje największe możliwości ale wymaga największego nakładu pracy. Użycie tego sposobu najbardziej opłaca się przy tworzeniu pojedynczych, niezależnych kontrolek w których widzimy duży potencjał na re-użycie w przyszłości. Dobrym przykładem komponentu który opłaca się otworzyć takim sposobem jest kontrolka panelu z nagłówkiem i ciałem umożliwiająca zwinięcie po kliknięciu w nagłówek. Kiepskim kandydatem jest opisana wcześniej sekcja nagłówka zadania – taka sekcja z natury jest kompozycją innych podstawowych komponentów i z dużym prawdopodobieństwem będzie ulegać w przyszłości zmianom.

Podczas tworzenia pierwszych komponentów warto posiłkować się dostępnymi w internecie tutorialami opisującymi jak tworzyć nowe komponenty.

Jeżeli chcemy tworzyć komponenty Ajaxowe oparte o JavaScript warto oprzeć nasze rozwiązanie o bibliotekę Primafaces. Biblioteka Primafaces jest napisana w sposób umożliwiający bardzo łatwe rozszerzanie i tworzenie nowych komponentów.

Bardzo ciekawe artykułu na ten temat można znaleźć na blogach: Master the Boss, FrancescoStrazzull oraz w 11 rozdziale książki PrimeFacces Cookbook.

Zatem jak komponować nasze formularze zadania BPM za pomocą JSF?

  1. Bazowy wygląd formularza będzie wyglądać lepiej jeżeli do ich budowy użyjemy struktury opartej o Grid System. W takim przypadku uzyskamy automatyczną skalowalność i responsywność naszych formularzy na urządzaniach o różnej przekątnej ekranu. Do tego zadania najlepiej nadaje się wykorzystanie biblioteki Bootstrap lub pochodnej ale bazującej na Grid System. Aby jeszcze bardziej uprościć sobie zadania w przyszłości możemy obudować elementy systemu Grid za pomocą stworzonych przez nas komponentów kompozytowych lub Java które ukryją szczegóły lub skorzystać z gotowej biblioteki bootsfaces.
  2. Tworzenie kompozytowych komponentów. Sekcja nagłówka zadania wydaje się wzorowym kandydatem aby zrobić z niej re-używany komponent kompozytowy. Takie rozwiązania pozwoli wstawiać utworzony komponent w kolejnych formularzach procesu bez konieczności ponownego pisania lub kopiowania kodu.
  3. Wykorzystywanie istniejących komponentów. Do tworzenia pozostałej części formularzy warto korzystać z dostępnych bibliotek komponentów i tylko w nielicznych przypadkach braku potrzebnego nam komponentu pokusić się o wytworzenie własnego. Warto używać Composite Components do tworzenia kontrolek biznesowych np. Kontrolka input z podłączona walidacja NIP lub Pesel. Itp.
Oceń ten post
Tagi: , , ,
Andrzej Cyb
Autor: Andrzej Cyb
Inżynier procesów biznesowych z ponad 6-letnim doświadczeniem w projektowaniu, implementowaniu oraz wdrażaniu procesów biznesowych w oparciu o rozwiązania BPM komercyjne, open-source oraz customowe. Pasjonata języka Java, BPM oraz rozwiązań biznesowych opartych o Java EE.

Imię i nazwisko (wymagane)

Adres email (wymagane)

Temat

Treść wiadomości

Zostaw komentarz