Eksport stanu instancji procesu

1 pkt
Przemysław Duda napisał/a o
BPM
BPM artykułów: 12

Comarch Retail
Comarch Retail artykułów: 57

Comarch ERP Altum
Comarch ERP Altum artykułów: 66

Comarch ERP Altum

4 lata temu

Dla przypomnienia zapis stanu uruchomionego procesu pozwala przerwać wykonanie instancji w oczekiwaniu na spełnienie zewnętrznych warunków, nie tracąc przy tym danych, które mamy w pamięci operacyjnej działającego procesu. Dzięki temu jesteśmy w stanie w procesie wysłać zadanie z decyzją do podjęcia przez użytkownika uwarunkowując od jego odpowiedzi dalsze działanie procesu. Na przykład wysyłając w procesie pytanie do magazyniera, czy tworząc zamówienie na brakujący towar nie wiemy kiedy pojawi się jego odpowiedź. Magazynier może odpowiedzieć od razu, może też to zrobić po pewnym czasie, na przykład kolejnego dnia. W oczekiwaniu na jego decyzję instancja procesu nie może wykonywać się dalej. Nie znamy jego decyzji i proces nie wie czy stworzyć zamówienie czy nie. Dodatkowo, żeby nie zajmować niepotrzebnie zasobów serwera i zabezpieczyć się przed np. jego restartem aktualny stan instancji powinien być zapisany na bazie danych. Gdy magazynier podejmie decyzje zapisany stan posłuży do odtworzenia instancji procesu i jej kontynuacji od właściwego miejsca. Odpowiedź magazyniera pokieruje także odpowiednio instancją procesu by stworzyła lub nie pożądane zamówienie.

Do wersji Comarch ERP Altum Workflow 6.1 stan instancji procesu jest zapisywany gdy wykonywane są następujące aktywności:

  • Wyślij decyzję (proces czeka na niedeterministyczną odpowiedź od użytkownika),
  • Wstrzymaj proces (proces czeka określoną ilość czasu, np. 2h lub do określonej chwili w czasie do najbliższego piątku do 20:00; ogólnie zewnętrznym zdarzeniem jest nadejście konkretnej chwili w czasie) ,
  • Oczekiwanie na zdarzenie (proces czeka na wykonanie wskazanej operacji biznesowej np. zatwierdzenie faktury o numerze FS\2014\00001; tutaj zewnętrznym zdarzeniem jest wykonanie odpowiedniej akcji w systemie, która wygeneruje zdarzenie)

Wykorzystanie w swoim procesie którejś z powyżej wymienionych aktywności zapisuje aktualny stan wykonywania instancji procesu, czyli serializuje za pomocą NetDataContractSerializer wszystkie wartości obiektów parametrów procesu oraz zmiennych, które są dostępne dla aktywności powodującej zapis stanu. Pisaliśmy już, w jednym z poprzednich wpisów o konsekwencjach jakie niesie za sobą zapis stanu. Polecamy przypomnieć sobie ten wpis. Żeby uniknąć problemów przy odtwarzaniu instancji zapis stanu musi mieć wpływ na tworzoną przez nas definicję procesu.

Wraz z wydaniem wersji Comarch ERP Workflow 6.0 , udostępniliśmy nową funkcjonalność dla monitora procesów w Edytorze Workflow, która dzięki możliwości eksportu zapisanego stanu procesu pozwala podejrzeć co nasz proces zapisał do bazy danych.

Z poziomu monitorowania możemy zapisać instancję, której stan to "oczekiwanie na decyzję" do pliku w formacie XML. W celu wykonania tej operacji, klikamy w instancję oczekującą na podjęcie decyzji prawym przyciskiem myszy i z menu kontekstowego wybieramy opcję "Zapisz stan instancji do pliku".





Następnie wybieramy lokalizację do której dany plik zostanie zapisany:





Teraz możemy już sprawdzić szczegóły pliku XML:





Dzięki eksportowi stanu instancji możemy:

  • Sprawdzić czy nasz proces nie zapisuje zbyt dużo danych do bazy - im danych mniej tym szybciej instancja zapisze swój stan i później go odtworzy, dodatkowo będzie potrzeba mniej miejsca na składowanie danych
  • Zdiagnozować jakie nadmiarowe dane są zapisywane i poprawić nasz proces (np. poprzez "wyzerowanie" odpowiedniej zmiennej)
  • W skrajnych przypadkach, gdy nasza instancja oczekuje bardzo długo na przyjście zdarzenia (np. rok) możemy wykorzystać eksport stanu do podejrzenia i zmiany pewnych zapamiętanych wartości na bazie, bo w między czasie zmieniły się wymagania; ta możliwość powinna być jednak wykorzystywana z rozwagą, w szczególności w produkcyjnym środowisku bo nieodpowiednia modyfikacja uniemożliwi w ogóle wznowienie procesu;

Mamy nadzieję, że nowa funkcjonalność pomoże w przygotowaniu niezawodnych i szybkich procesów. W razie uwag prosimy o komentarze.

Na koniec chcielibyśmy również przypomnieć, że wysyłanie zadania, z jedną decyzją np. OK może być zastąpione wysłaniem informacji (aktywność wyślij informację), która nie powoduje zablokowania wykonywania instancji procesu przez co nie wymaga zapisu stanu instancji. O możliwości szybkiej zmiany decyzji na informację pisaliśmy w jednym z poprzednich wpisów. W takim przypadku wiele zyskamy gdy użyjemy informacji a wymagania biznesowe zostaną spełnione.

Masz pytanie?

zadaj pytanie

Masz pomysł?

zgłoś pomysł