Inspiracja , wiedza , realizacja
Jsystems

W przebudowie

Login



Java

Oracle

Linux

Android

PostgreSQL

Microsoft SQL Server

Podprzepływy

Data dodania: Jun 27, 2016
Data aktualizacji: Jun 27, 2016

Przypuśćmy teraz, że w zależności od jakichś warunków chcemy przeprowadzić jakąś dodatkową sekwencję kroków. Przykładowo użytkownik dysponuje kodem promocyjnym. Jeśli nim dysponuje, uruchomimy dodatkowy przepływ który sprawdzi poprawność kodu i powróci do pierwotnego przepływu. Chcemy by pytanie o posiadanie kodu promocyjnego pojawiało się od razu na początku. Będą do wyboru dwa przyciski - „Posiadam” i „Nie posiadam”. Jeśli użytkownik wybierze „Posiadam” to główny przepływ zostanie na chwilę wstrzymany, przejdzie przez dodatkowy podprzepływ i wróci do przepływu głównego. Jeśli ktoś wybierze „Nie posiadam”, to po prostu główny przepływ będzie kontynuowany.


Zaczynamy od poinformowania Springa o nowym przepływie w pliku *****-servlet.xml:



Tworzymy plik konfiguracji podprzepływu który przed momentem obiecaliśmy: kodpromocyjny-przeplyw.xml. Poniżej tylko jego „mięsista zawartość.



Przepływ jest dosyć prosty, natomiast w związku z tym że jest to podprzepływ, muszę wyjaśnić kilka rzeczy. Posługuję się tutaj cały czas obiektem klasy Konto. Zostanie on przekazany do przepływu i z niego zwrócony. Sam kod promocyjny, jako że jest zwykłym tekstem umieścimy w nowym polu klasy Konto które też dopisałem:



Pierwszy stan to stan widoku który jedyne co robi to pyta czy posiadasz kod promocyjny czy nie. Zawartość pliku czyMaszKod.jsp:



W zależności od wyboru albo wróci do głównego przepływu ( w wyniku wywołania akcji „niemam” jest przejście do stanu „anulowano” który jest stanem końcowym ), albo przejdzie do stanu „kodpromocyjny” w którym wprowadzamy owy kod. Zawartość pliku kodPromocyjny.jsp:



Przy wyborze „anuluj” jest przejście do stanu końcowego anulowano, ale jeśli ktoś wprowadzi kod i zatwierdzi wybierając „zatwierdź”, podprzepływ przejdzie do stanu akcji „sprawdzKod”. Pole do wprowadzania kodu promocyjnego jest podpięte do naszego nowego pola „kodPromocyjny” w klasie „Konto”. Stan sprawdxKod wywołuje metodę „sprawdzKod” z kontoDao która jest tylko zaślepką:




Oczywiście można byłoby tutaj podpiąć faktyczne sprawdzanie i jakiś stan decyzyjny / walidację. Taki stan jaki jest na razie całkiem nam wystarczy, ponieważ zajmujemy się w tej chwili podprzepływami jako takimi. Efekt jest taki, że jaki byś kod nie wprowadził to zawsze będzie ok ;)

Po zakończeniu tego stanu akcji następuje przejście do stanu „zakonczono” który jest stanem końcowym tego podprzepływu.Pojawia się tutaj za to nowa rzecz - <output name=”konto”/>. Co to? To jest element który przekazuje do głównego przepływu uzupełniany obiekt. Zaraz się to wyjaśni, jak tylko przejdziemy do wpinania podprzepływu do głównego przepływu. Przejdźmy teraz do pliku konfiguracji głównego przepływu – konto-przeplyw.xml:




Jako pierwszy stan na liście pojawił się teraz „subflow-state” - czyli stan podprzepływu. Zostanie on uruchomiony jako pierwszy, ponieważ jako pierwszy znajduje sięna liście. Parametr subflow określa nazwę podprzepływu który ma zostać uruchomiony. Parametr output dotyczy tego co nam „wypadnie” z podprzepływu. Będziemy uzupełniać cały czas obiekt klasy „Konto” - ten sam co w głównym przepływie. Transition to z linii 14 mówi o tym gdzie mamy przejść po zakończeniu podprzepływu – a wrócimy do kroku pierwszego – tj. formularza danych kontaktowych.

Uruchamiamy całość i sprawdzamy:


Wybrałem że posiadam kod promocyjny, który w następnym kroku wprowadzam:


Zatwierdzam i przepływ wraca do głównego przebiegu:


Uzupełniam tylko login i hasło, resztę we wszystkich krokach pozostawiam puste.


W pliku podsumowanie.jsp dodałem też wyświetlanie ewentualnie uzupełnionego kodu promocyjnego:



Strona z podsumowaniem po zakończeniu przebiegu: