Parkowanie i odparkowanie wnioskow
Wprowadzenie
Parkowanie wniosku polega na zapisaniu jego aktualnego stanu (wszystkich wypełnionych pól wniosku) z wyłączeniem dodanych załączników, w celu późniejszego powrotu do tego stanu podczas odparkowania wniosku.
Uwaga! Aby po odparkowaniu wniosek działał poprawnie należy uzupełnić listę pól, które nie mogą być odparkowywane.
W szczególności są to pola:
związane z aktualną sesją użytkownika (np. zmienne sesyjne przechowujące sessionKey oraz wszystkie zmienne wynikające z mapowania parametrów wejściowych komponentów złożonych itp.),
związane z danymi, których nie chcemy przechowywać do następnej sesji, np. dane tokenu sms, który zmieni się przy kolejnym uruchomieniu wniosku,
związane z danymi aktywnymi czasowo, np. promocje,
związane z powyższymi, ale wynikające z mapowania parametrów wejściowych komponentów złożonych itp.
Ustawienia
W tej sekcji możemy skonfigurować możliwość zapisu tymczasowego przez użytkownika.


Dla tak skonfigurowanego, a następnie opublikowanego szablonu, podczas wypełniania bazującego na nim wniosku na ekranie pojawia sekcja odpowiedzialna za parkowanie z przyciskiem.
Odtwarzanie wartości (biała/czarna lista pól)
W sekcji Odtwarzanie wartości możemy określić:
które pola nie powinny zostać odparkowane przy odparkowywaniu wniosku przy użyciu Blacklist,
które pola powinny zostać odparkowane przy odparkowywaniu wniosku przy użyciu Whitelist (pusta lista oznacza, że nic nie zostanie odparkowane).
Nie można jednocześnie używać białej listy jak i czarnej. W celu wybrania jednej listy (Whitelist lub Blacklist) używamy listy znajdującej się w zakładce Właściwości w sekcji Zapis tymczasowy i podsekcji Odtwarzanie wartości:

W celu zdefiniowania pól należy je dodać do listy.
Przykłady zastosowania
Przykład 1 - promocja, która powinna wygasnąć po odparkowaniu:
mamy promocję "xmas",
dla wniosków uruchomionych z parametrem promotion=xmas mamy lepsze warunki,
promocja kończy się w piątek,
w piątek publikujemy szablon wniosku, który już nie obsługuje promocji "xmas",
w szablonie wpisujemy "promotion" (i wszystkie zmienne do których przepisywana jest wartość zmiennej promotion np. poprzez Parametry wejściowe komponentów złożonych) na czarną listę,
wniosek zaparkowany w czwartek i odparkowany w sobotę nie będzie zawierał pola promotion=xmas (chyba, że została ona ponownie przekazana jako parametr wejścia na wniosek).
Przykład 2 - promocja, którą chcemy odparkowywać, ale z możliwością nadpisania odpowiednim parametrem:
dla promocji "xmas" z powyższego przykładu chcemy zmienić typ promocji na promotion=xxx,
w przypadku braku podania parametru chcemy użyć promocji z jaką klient wszedł na wniosek za pierwszym razem,
w szablonie wpisujemy wszystkie zmienne do których przepisywana jest wartość zmiennej promotion np. poprzez Parametry wejściowe komponentów złożonych na czarną listę, jednak zmiennej promotion nie dodajemy do czarnej listy,
klient po odparkowaniu z parametrem promotion=xxx będzie miał aktywną promocję xxx,
klient po odparkowaniu bez parametru promotion, będzie miał aktywną tę samą promocję z jaką wniosek został zaparkowany.
Parkowanie wniosku
Parkowanie wniosku polega na zapisaniu jego aktualnego stanu (wszystkich wypełnionych pól wniosku) z wyłączeniem dodanych załączników, w celu późniejszego powrotu do tego stanu.
Klient niezalogowany
Proces parkowania rozpoczynamy przez naciśnięcie przycisku "Zapisz", w wyniku którego pojawia się okno dialogowe. W oknie tym System prosi nas o wprowadzenie danych autentykacyjnych, na podstawie których dokonana zostanie identyfikacja użytkownika w procesie odparkowywania danego wniosku.

Po zatwierdzeniu danych przyciskiem "Zapisz" wniosek zostanie zapisany wraz z wprowadzonymi danymi identyfikacyjnymi oraz unikalnym, nadanym mu numerem, w repozytorium. Potwierdza to wyświetlając następujące okno dialogowe:

W ten sposób zaparkowany wniosek jest gotowy do odparkowania.
Uwaga! Wpisywane hasła są sprawdzane pod kątem bezpieczeństwa według zaleceń agencji National Institute of Standards and Technology. Konfiguracja domyślna będzie zawierała taką politykę, aby hasło składało się z:
jednej dużej litery,
jednej małej,
cyfry oraz znaku specjalnego,
musi mieć co najmniej 8 znaków.
Konfiguracja jest niezależna dla każdego klienta i można ją zmienić w webforms.xml pod kluczem: <passwordPolicy> (jest to regex). Dodatkowo będzie możliwa modyfikacja komunikatu zwracanego w przypadku wpisania hasła niespełniającego wymogów bezpieczeństwa - tym razem w navigation.localization dla każdego klienta. Klucz iew.form.password.policyInfo odpowiada komunikatowi, jakie wymogi powinno spełniać hasło, a iew.form.password.policyViolation to klucz od komunikatu wyświetlanego w przypadku próby wpisania hasła niespełniającego wymogów bezpieczeństwa.
Klient zalogowany
W przypadku klienta zalogowanego po naciśnięciu przycisku "Zapisz" wniosek zostanie zapisany w systemie bez konieczności podawania danych uwierzytelniających. Mechanizm wykorzystuje identyfikator klienta pobrany z sesji. Po pomyślnym zaparkowaniu zostanie wyświetlony komunikat potwierdzający zakończenie operacji.
Należy pamiętać, że użytkownik może mieć zaparkowaną tylko jedną instancję wniosku danego typu.
Odparkowanie wniosku
Odparkowywanie wniosku to funkcjonalność umożliwiająca odczytanie wcześniej zaparkowanego wniosku (wraz ze wszystkimi polami wypełnionymi w momencie parkowania, ale z wyłączeniem załączników dodanych do parkowanego wniosku).
Klient niezalogowany
Aby rozpocząć proces odparkowywania, należy przejść do strony, do której link otrzymujemy w oknie dialogowym potwierdzającym pomyślne zaparkowanie wniosku (Ilustracja 5) lub w mailu otrzymanym po zaparkowaniu (na adres wskazany podczas parkowania).
Po wyświetleniu w przeglądarce strony znajdującej się pod wskazanym linkiem, pokaże się okno dialogowe, w którym System zażąda potwierdzenia danych identyfikujących osobę, która dokonała parkowania wniosku:

Odparkowanie wniosku jest możliwe tylko po prawidłowym wprowadzeniu danych identyfikacyjnych (email oraz hasło) zapisanych w procesie parkowania. Po naciśnięciu przycisku "OK" zostaniemy przekierowani do strony wniosku ze stanem pól z momentu jego zaparkowania.
Klient zalogowany
Odparkowywanie wcześniej zapisanego wniosku w przypadku klienta zalogowanego może się odbyć na dwa sposoby:
Sposób pierwszy
Wywołanie akcji load.html - żądanie POST na adres https://eximee-dmz:8080/webforms/wnioski/NAZWA_WNIOSKU/load.html
gdzie: NAZWA_WNIOSKU - nazwa wniosku do odparkowania
Po wywołaniu akcji zostaniemy przekierowani do strony wniosku ze stanem pól z momentu jego zaparkowania.
Sposób drugi
Dostępność funkcjonalności zależy od licencji i może nie być dostępna we wszystkich wdrożeniach.
Wywołanie akcji getFormTemplate - żądanie POST na adres https://eximee-dmz:8080/webforms/api/formService/getFormTemplate
Jeśli wniosek został wcześniej zaparkowany, akcja zwróci wniosek ze stanem pól z momentu jego zaparkowania.
Serwisy uruchamiane przy odparkowaniu
Dla wniosku można zdefiniować serwisy, które zostaną wywołane w momencie odparkowania wniosku. Sposób ich dodawania opisany został w Serwisy przy wznowieniu.
Serwisy wywoływane są przed entry service i mogą nadpisywać wartości znajdujące się na wniosku.
Jeżeli na wartość komponentów lub zmiennych sesyjnych wpływają inne komponenty, lub zmienne sesyjne zasilane za pomocą UnparkEntryService to komponenty te zachowają się jak podczas standardowego wejścia na wniosek, na przykład:

W tym przypadku TextField1 jest zasilany za pomocą UnparkEntryService. Wpływa on na wartość pola TextField2 (poprzez PageService, np. EchoService). Ponieważ usługi UnparkEntryService wykonywane są przed usługami EntryService oraz na pole TextField2 wpływa pole zasilane przez UnparkEntryService to ostatecznie wartości pola TextField2 będzie odpowiadała wartości zmiennej sesyjnej SessionVariable zasilonej za pomocą EntryService.
Powiadomienia
Powiadomienia wysyłane po zaparkowaniu wniosku realizowane są za pomocą mechanizmu notyfikacji opisanego tutaj: Autozapis i Pola kontaktowe.
Odparkowanie wniosku przez wejście na link z powiadomienia
Do powiadomień może być dołączany link do odparkowania wniosku.
Wejście na link wysłany w powiadomieniu pozwala na odparkowanie wniosków zaparkowanych przez użytkownika zalogowanego oraz wniosków zaparkowanych przez użytkownika niezalogowanego.
Jeżeli wniosek był zaparkowany przez użytkownika zalogowanego, po wejściu na link zawarty w powiadomieniu następuje przekierowanie na stronę logowania. Jeżeli klient się uwierzytelni, zostanie dalej przekierowany na przygotowany do dalszej edycji, ostatni zaparkowany przez niego wniosek danego typu.
Jeżeli wniosek był zaparkowany przez użytkownika niezalogowanego, po wejściu na link zawarty w powiadomieniu następuje przekierowanie na stronę weryfikacji hasła jednorazowego dostępu. Podczas wejścia na tę stronę, na numer telefonu zapisany we wniosku zostaje wysłany SMSem jednorazowy kod dostępu do wniosku. Aby uruchomić zaparkowany wniosek, użytkownik musi potwierdzić swoją tożsamość przez wpisanie otrzymanego hasła. Treść wiadomości SMS z jednorazowym kodem dostępu pochodzi z szablonu wiadomości email, podanego w konfiguracji aplikacji webforms, w pliku /etc/eximee/webforms.xml na serwerze dmz. Poniżej przykład konfiguracji (należy podać nazwę i wersję szablonu wiadomości email z repozytorium):
W treści szablonu email (sic! tak się nazywa typ artefaktu w repozytorium - szablony te służą również do definicji treści wiadomości SMS) podanego w konfiguracji jako szablon z treścią wiadomości SMS z jednorazowym kodem dostępu do zaparkowanego wniosku musi zawierać znacznik: ${SMS_CODE} - zostanie on zastąpiony wygenerowanym kodem dostępu do zaparkowanego wniosku.
Warunkowe odparkowanie wniosku
Dostępność funkcjonalności zależy od licencji i może nie być dostępna we wszystkich wdrożeniach.
Dla wniosku można zdefiniować warunek, który zostanie sprawdzony w momencie odparkowania wniosku. Gdy warunek zostanie spełniony, wniosek zostanie odparkowany i pokazany użytkownikowi. W przeciwnym wypadku tworzony jest nowy formularz.

Informacje o tym jak definiować warunki znajdują się na stronie: Język wyrażeń definiowania warunków (warunki z getValue).
Funkcjonalność warunkowego odparkowania wniosku rozszerza metodę _getValue('componentId')_ języka wyrażeń o dwie nowe funkcjonalności:
możliwość uzyskania dostępu do wartości komponentu po jego MID,
możliwość przyjęcia argumentu z prefixem parked. Prefix ten umożliwia uzyskanie dostępu do zaparkowanych wartości wniosku.
Przykładowy warunek odparkowania na podstawie MID
Przykładowy warunek odparkowania na podstawie ID
Przykładowy warunek odparkowania z wykorzystaniem injectableFields
Uwaga! Może wystąpić sytuacja, że kiedy odparkowujemy wniosek mogą pojawić się inne strony, które wcześniej nie były widoczne.
Powinniśmy wtedy wejść na pierwszą stronę, która wcześniej nie została odwiedzona.
Uwaga! Podczas odparkowania uaktywnia się mechanizm blokowania statusu wniosku. Oznacza on tyle, że dopóki wniosek jest odparkowany, nie może on zmienić swojego statusu (np. na wniosek porzucony). Wnioski takie są odblokowywane przy parkowaniu (również automatycznym parkowaniu), zapisywaniu lub po 1 dniu od ostatniej modyfikacji (ochrona przed zawieszaniem się wniosków przez system).
Więcej na temat tego mechanizmu znajdziesz tutaj: Mechanizm blokowania statusów
Ostatnia aktualizacja
Czy to było pomocne?
