Tryb „Pending in transaction” oraz „Pending after transaction”

Facebooktwitterpinterestlinkedinmail
Dotyczy wersji: 2021.1.x i powyżej, autor: Łukasz Maciaszkiewicz

 

Wprowadzenie

Logika wykonywania akcji, jak i dokładny moment ich wykonania, to kwestie niejednokrotnie niedostatecznie znane projektantom obiegów. Prowadzi to często do niezrozumienia mechanizmów sterujących wykonaniem akcji, a przez to do nieporozumień. 

Aby uzupełnić tę lukę w wiedzy, w niniejszym artykule omówiono logikę wykonywania akcji przy przejściu ścieżką w trybie na końcu transakcji (Pending in transaction) oraz poza transakcją (Pending after transaction) oraz zaprezentowano schemat graficzny operacji wykonywanych przed wykonaniem akcji, w jego trakcie i po nim.

 

Tryb wykonywania akcji

Dostępne są trzy podstawowe tryby, w jakich może być wykonywana akcja:

  • Standardowe zachowanie: akcja wykonywana dokładnie w miejscu wywołania biegu automatyzacji;
  • Pending in transaction: wykonanie akcji zostanie przesunięte na koniec transakcji po wykonaniu wszystkich akcji automatyzacji. Jeżeli którakolwiek z operacji w transakcji zakończy się niepowodzeniem, akcja taka również nie zostanie wykonana. Zasada ta działa też w drugą stronę: niepowodzenie akcji wykonywanej w tym trybie spowoduje niewykonanie całej transakcji;
  • Pending after transaction: wykonanie akcji zostaje przesunięte, akcja wykonywana jest po zakończeniu transakcji, czyli prawidłowym wykonaniu wszystkich automatyzacji. Co istotne, niepowodzenie wykonania akcji w tym trybie nie wpłynie na wykonanie zakończonej już transakcji.

Większość dostępnych w systemie WEBCON BPS akcji działa w sposób standardowy, tj. akcja jest wywoływana dokładnie w miejscu, w którym została osadzona w automatyzacji. Akcje działające w sposób odmienny od standardowego przedstawiono w poniższej tabeli wraz z informacją na temat ich trybu lub trybów wykonania.

 

Nazwa akcji Tryb wykonania
Odczytaj kod kreskowy Standardowe zachowanie, Pending after transaction
Dodaj kod kreskowy Pending after transaction
Wyślij konfigurowalny e-mail Pending in transaction
Wyślij e-mail Pending in transaction
Usuń uprawnienia Pending in transaction
Udziel uprawnień Pending in transaction
Rozpocznij edycję pliku przez OneDrive Pending in transaction
Wykonaj akcję SDK Standardowe zachowanie, Pending in transaction, Pending after transaction

 

Należy zauważyć przy tym, że tryb „Pending after transaction” dostępny jest wyłącznie dla akcji „Dodaj kod kreskowy”, „Odczytaj kod kreskowy” oraz „Wykonaj akcję SDK”. Dla akcji „Dodaj kod kreskowy” jest to jedyny dostępny tryb wykonania, natomiast w przypadku akcji „Odczytaj kod kreskowy” tryb ten może zostać włączony poprzez zaznaczenie pola wyboru „Uruchom poza transakcją” w lewej, dolnej części okna „Konfiguracja”. W przypadku akcji „Wykonaj akcję SDK” tryb „Pending after transaction” uruchamiany jest poprzez napisanie kodu, jego skompilowanie i załadowanie do systemu.

 

Logika wykonywania akcji i operacji na przejściu ścieżką

Akcje wywoływane na Przycisk w menu, Na otwarcie w przeglądarce, Na usunięcie elementu workflow, Na Timeout, Na dodanie załącznika oraz Cykliczne (Startowe) uruchamiane są dokładnie w miejscu wywołania w biegu automatyzacji. W ich przypadku tryb „Pending in transaction” i „Pending after transaction” jest ignorowany.

Powyższą zasadę zobrazowano na poniższym przykładzie. Ponieważ automatyzacja jest wykonywana dla zdarzenia „Przycisk menu” to wszystkie zdefiniowane akcje wykonywane są w kolejności, w jakiej zostały osadzone w automatyzacji. Akcja „Udziel uprawnień” zostanie wykonana po akcji „Odczytaj kod kreskowy”, a przed akcjami „Generuj/Aktualizuj plik Word” i „Konwertuj Word do PDF”. Informacje na temat nowych uprawnień nadanych w wyniku wykonania wspomnianej akcji będą dostępne dla akcji „Konwertuj Word do PDF”.

Ponadto warto zauważyć, że ewentualne włączenie trybu „Pending after transaction” dla akcji „Odczytaj kod kreskowy” nie spowoduje przesunięcia jej wykonania na moment po zakończeniu transakcji.

Akcje wykonywane „Na otwarcie w przeglądarce” w kolejności osadzenia w automatyzacji

 

Zadaniem trybu „Pending in transaction” oraz „Pending after transaction” jest odroczenie momentu wykonania akcji, odpowiednio na koniec transakcji i po zakończeniu transakcji. Działanie tego trybu uwydatnia się szczególnie w przypadku przejścia ścieżką. Dzieje się tak dlatego, że momentowi przejścia ścieżką towarzyszy szereg operacji, w wyniku których zmieniony może zostać stan danych dostępnych w bazie danych. Ma to istotne znaczenie, ponieważ w zależności od momentu wywołania akcji lub automatyzacji, mogą one korzystać z innych danych.

Co równie istotne, w przypadku przejścia ścieżką transakcja może obejmować trzy różne automatyzacje, tj. „Na zakończenie”, „Na ścieżce” i „Na wejście”.

Transakcja w przypadku przejścia ścieżką może obejmować trzy różne automatyzacje

 

Jak widać na schemacie akcje wykonywane w ramach automatyzacji na wejście do kroku będą korzystać z danych, których stan mógł (jeżeli odwoływały się do tych samych atrybutów, do jakich odwołują się akcje w automatyzacji na wejście, i atrybuty te zostały zmienione) zostać zmodyfikowany przez akcje wykonane w automatyzacjach na zakończenie kroku i na ścieżce przejścia.

Sytuacja zmienia się jednak w przypadku akcji wykonywanych w trybie „Pending in transaction” i „Pending after transaction”.

W przypadku tych pierwszych wykonanie jest odraczane i przesuwane na koniec transakcji. Ponadto, aby w ogóle zostały one wykonane, wszystkie automatyzację muszą zakończyć się powodzeniem. Przesunięcie akcji tego typu na koniec transakcji ma jeszcze jeden skutek: akcje i operacje wykonywane w ramach transakcji mogą zmieniać wartości atrybutów. Jeżeli w akcji wykonywanej w trybie „Pending in transaction” znajdują się odwołania do takich zmienionych atrybutów, ich wartości będą inne niż w momencie konfigurowania akcji.

Skonfigurowanie akcji w trybie „Pending after transaction” także wiąże się z odroczeniem momentu ich wykonania, jednak w tym przypadku akcje wykonywane są po zakończeniu transakcji i nie stanowią jej części. Oznacza to, że w przeciwieństwie do akcji w trybie „Pending in transaction”, ewentualne niepowodzenie wykonania akcji „Pending after transaction” nie wpłynie na transakcję i zmiany przez nią wprowadzone. Warto tutaj nadmienić, że podobnie jak w pierwszym przypadku także tutaj, akcje mogą korzystać z wartości atrybutów zmienionych w stosunku do momentu uruchomienia transakcji.

Porównanie momentu wykonania akcji „Wyślij konfigurowalny e-mail” (Pending in transaction) i „Odczytaj kod kreskowy” (Pending after transaction)

 

Atrybuty a parametry

Wspomnianej powyżej potencjalnej zmianie wartości atrybutów można zaradzić dzięki parametrom automatyzacji. W przeciwieństwie do atrybutów wartości parametrów nie ulegają zmianie w toku transakcji i są dokładnie takie, jakie były w momencie osadzania akcji w automatyzacji.

 

Akcje na timeout

Automatyzacja Na Timeout jest specyficznym sposobem uruchamiania akcji. Automatyzacja tego typu pozwala wykonać akcje dopiero po pewnym czasie, który upłynął, np. od momentu wejścia do kroku. Czas, po którym zostanie uruchomiona automatyzacja tego typu, może być też wyliczany przy pomocy bardziej złożonych warunków odnoszących się również do wartości atrybutów. Całość konfiguracji pozwalającej określić moment, w którym automatyzacja „Na timeout” zostanie uruchomiona, nazywana jest roboczo Warunkiem wstawienia.

W momencie przejścia z jednego kroku do drugiego „Warunki wstawienia” automatyzacji na timeout są ponownie przeliczane. W rezultacie usuwane są stare warunki i tworzone nowe. Moment przeliczania warunków wstawienia akcji na timeout przedstawiono na poniższym schemacie.

Przeliczanie warunków wstawienia akcji na timeout

 

Warto zwrócić uwagę na sytuację, w której w toku automatyzacji „Na wejście” zmianie ulegają wartości atrybutów. Jeżeli wspomniane atrybuty są wykorzystywane także podczas wykonywania warunków wstawienia automatyzacji „Na timeout”, będą one miały wartość sprzed wspomnianej zmiany.

 

Przykład zastosowania logiki wykonywania akcji w praktyce

Aby lepiej zrozumieć opisaną powyżej logikę rządzącą wykonywaniem akcji w systemie WEBCON BPS, warto posłużyć się przykładem.

Moment wykonania akcji „Wyślij konfigurowalny e-mail” (Pending in transaction) oraz „Odczytaj kod kreskowy” (Pending after transaction)

 

Bez względu na to, w jakim miejscu w automatyzacjach osadzono akcje, kolejność wykonywanych operacji jest w tym przypadku następująca:

  1. pomimo osadzenia na pierwszym miejscu w automatyzacji na ścieżce przejścia, wykonanie akcji „Wyślij konfigurowalny e-mail” zostanie odroczone na koniec transakcji. Zamiast niej, pierwszą uruchamianą akcją będzie „Konwertuj Word do PDF”, a następnie wykonywane będą operacje wyszczególnione na schemacie poniżej wspomnianej akcji. Warto dodać, że choć nie została jeszcze wykonana akcja „Wyślij konfigurowalny e-mail”, parametry samej automatyzacji zostaną zapisane;
  2. uruchamiana zostaje akcja „Podpisz załącznik” w automatyzacji na wejście do kroku oraz wszystkie operacje wskazane na schemacie poniżej tej akcji. Wykonanie pierwszej na schemacie graficznym akcji „Odczytaj kod kreskowy” ze względu na włączony tryb „Pending after transaction” zostaje odroczone na moment po transakcji;
  3. uruchomiona zostaje akcja „Wyślij konfigurowalny e-mail” wykonywana w trybie „Pending in transaction”. Co istotne możliwe, że w następstwie wykonanych już w toku automatyzacji akcji i operacji zmianie uległy wartości atrybutów, do których może odnosić się ta akcja. Jeżeli nie zdefiniowano dla niej parametrów, akcja korzysta zatem na tym etapie z tych ewentualnie zmienionych wartości atrybutów. Warto pamiętać, że potencjalne niepowodzenie akcji skutkuje wycofaniem całej transakcji;
  4. transakcja jest kończona, a wszystkie zmiany wykonane przez akcje i operacje w toku transakcji zostają zapisane w bazie danych;
  5. uruchamiana jest akcja „Pending after transaction”, tj. „Odczytaj kod kreskowy”. Podobnie jak w przypadku trybu „Pending in transaction”, jeżeli akcja odwołuje się do ewentualnie zmienionych w wyniku akcji lub operacji wartości atrybutów, to na potrzeby akcji uwzględniany będzie ich zmieniony stan. Jeżeli natomiast w ramach akcji odczytywane są parametry, ich wartość będzie taka sama jak w momencie osadzenia akcji. Ewentualne niepowodzenie akcji nie spowoduje wycofania całej transakcji.