Podprocesy
Podsumowanie:W przebiegu procesów biznesowych często spotyka się sytuacje, kiedy jeden proces inicjuje odrębny proces. Proces inicjujący nazywa się procesem głównym, a proces inicjowany podprocesem. W nAxiom podprocesy mogą być wykonywane synchronicznie — proces główny czeka na zakończenie podprocesu, lub asynchroniczne — podproces jest inicjowany z procesu głównego, ale jego dalsze wykonywanie nie wstrzymuje biegu procesu głównego.
W tym temacie
Wstęp
Analizując procesy biznesowe toczące się w różnych organizacjach, łatwo zauważyć, że często „przecinają się” one z innymi procesami. Na przykład proces realizacji umowy wymaga co pewien czas uruchomienia procesu wystawienia faktury, z kolei proces wystawienia faktury powinien zainicjować proces monitorowania płatności. Podstawą wystawienia faktury w ramach umowy jest przekazanie przedmiotu umowy, co zwykle wymaga kilku procesów akceptacji.
W nAxiom do modelowania podprocesów służą bloki Podproces synchroniczny
i Podproces asynchroniczny
dostępne w edytorze diagramów procesów. Ich właściwości ustawia się na panelu z lewej strony, podobnie jak w przypadku innych bloków. Przede wszystkim konieczne jest przypisanie dokumentu biznesowego, którego workflow będzie reprezentowany przez blok podprocesu. Zatem użycie bloku podprocesu wymaga wcześniejszego przygotowania osobnego dokumentu biznesowego z całym workflow.
Przykład konfiguracji podprocesu
Na ilustracji poniżej przedstawiono uproszczony model procesu, który będzie inicjowany jako podproces z procesu głównego. W procesie jest tworzony nowy dokument biznesowy, a przetwarzanie sprowadza się do uzupełnienia pola tekstowego i kliknięcia przycisku Wyślij
.

Przykładowy proces główny jest również maksymalnie uproszczony: z poziomu dokumentu biznesowego jest inicjowany proces innego dokumentu biznesowego przypisanego do bloku podprocesu synchronicznego. Z procesu głównego do podprocesu jest przekazywana wartość, a dla przejścia z podprocesu do procesu głównego określa się status dokumentu w podprocesie.

Na panelu właściwości bloku podprocesu określa się mapowanie, to jest przyporządkowanie pól dokumentu w procesie głównym do pól dokumentu w podprocesie. Dzięki temu możliwe jest przekazywanie wartości, które mogą być potrzebne w podprocesie.

Dla przejść z podprocesu do procesu głównego ustawia się status zakończenia podprocesu — w podprocesie można określić kilka końcowych statusów dokumentu i dla każdego z nich przejście z podprocesu będzie „trafiać” w inne miejsce, to jest do innego statusu, w procesie głównym.
W przypadku podprocesu asynchronicznego, dla jednego z przejść wychodzących można włączyć przełącznik Kontynuacja procesu głównego
. To przejście przekazuje sterowanie do procesu głównego, umożliwiając jego kontynuowanie, bez względu na stan przetwarzania w podprocesie.
Przejście procesu głównego z bloku podprocesu asynchronicznego można poprowadzić do bloku synchronizatora lub do bloku decyzyjnego. W tym drugim przypadku możliwe jest utworzenie pętli w celu wygenerowania kilku dokumentów. Bloku decyzyjnego można także użyć jako bloku pośredniczącego w celu poprowadzenia procesu głównego do innych bloków, na przykład zadania ręcznego.

Jeśli w procesie głównym konieczna jest synchronizacja ze statusami dokumentów w podprocesie, należy użyć bloku Synchronizator
. Rolą tego bloku jest synchronizacja przetwarzania w procesie głównym i w podprocesie. Należy do niego poprowadzić przejścia z procesu głównego i z podprocesu i skonfigurować warunek synchronizacji, to jest zapytanie SQL, które zwrócić wartość 1, gdy warunek zostanie spełniony. Wówczas nastąpi przejście procesu głównego do kolejnego statusu. W ogólności w warunku należy sprawdzić, czy odpowiednia liczba dokumentów w podprocesie ma oczekiwany status oraz, czy dokument procesu głównego ma status odpowiadający statusowi bloku synchronizatora. Warunek synchronizacji jest sprawdzany, gdy dokument w podprocesie osiągnie oczekiwany status oraz gdy proces główny osiągnie status synchronizatora.
Właściwości bloków Proces synchroniczny
, Proces asynchroniczny
i Synchronizator
opisano w kolejnych tematach.
Dobre praktyki projektowe
W przypadku najprostszego podprocesu (Start -> Utworzony) konieczne jest wstawienie po bloku start bloku oczekiwania z czasem oczekiwania 0 s. W przeciwnym razie wywołanie tego podprocesu w procesie głównym nie powiedzie się (zarówno synchronicznie, jak i asynchronicznie).
Dodatkowo zaleca się używanie bloku oczekiwania 0 s przed wejściem do bloku podprocesu asynchronicznego. Zastosowanie go spowoduje, zakończenie transakcji rozpoczętej przez użytkownika, na czas której jest włączana blokada ekranu (wirujący symbol operacji w toku). Dodatkowo, jeśli podprocesy są wywoływane asynchronicznie w pętli, każdy przebieg tej pętli będzie wykonywany w osobnej transakcji. W takim przypadku błąd w kolejnej iteracji nie wpłynie na dokumenty podprocesu utworzone wcześniej.
Powiązane tematy: