Dotyczy wersji 2021 R1 i powyżej, autor: Mike Fitzmaurice
Wprowadzenie
WEBCON BPS zapewnia szereg możliwości obsługi pracy równoległej. W przypadku scenariusza zakładającego pojedyncze zadanie przypisane do wielu osób, zwykle wystarcza skonfigurowanie kilku opcji w oknie konfiguracji zadania. Istnieją jednak wyjątki, zwłaszcza w przypadku złożonych kryteriów mających zastosowanie do wyników zadania.
Scenariusz
Utworzono przedstawiony poniżej obieg.
W kroku o nazwie „Weryfikacja” określona grupa osób ma do wykonania zadanie polegające na wybraniu ścieżki „Tak” lub „Nie”. Za pomocą funkcji dostępnych w WEBCON BPS możliwe jest uwzględnienie sytuacji, w których kilka osób może podejmować odmienne decyzje.
Decyduje pierwsza odpowiedź
W przypadku, gdy wystarczająca jest jedynie jedna odpowiedź, najprostszym rozwiązaniem jest przejście do okna konfiguracji ścieżki „Przekaż” i ustawienie wartości Wykonanie – Jeden z wielu w polu Równoległość zadań (zakładka Tworzenie zadania).
Alternatywnie, taki sam efekt można uzyskać, wybierając w polu Równoległość zadań ścieżki Przekaż wartość Wykonanie – Wszyscy, a następnie w zakładce Parametry ścieżek „Tak” i „Nie” ustawiając wartość Oznacz pozostałe zadania jako anulowane.
Drugi z opisywanych przykładów dokładniej odpowiada rzeczywistym operacjom wykonywanym w tle przez silnik platformy WEBCON BPS. Ponadto stanowi lepszy punkt wyjścia do omówienia drugiej z najczęściej stosowanych opcji…
Wszystko albo nic
W scenariuszach, w których możliwość wyboru ścieżki zatwierdzającej jest warunkowana konkretną liczba przejść ścieżką Tak, możliwe jest ustawienie w polu Operacja wykonana na zadaniach równoległych wartości Czekaj na zakończenie zadań wymaganych, a następnie zaznaczenie pola Stała liczba w celu określenia konkretnej liczby przejść ścieżką Tak, Wszystkie, jeżeli żadna z odpowiedzi nie może być inna niż Tak, lub Wartość procentowa, aby ustalić szczegółowy odsetek przejść ścieżką Tak.
W takim przypadku działanie systemu będzie zgodne z zamierzonym, o ile spełniony zostanie jeden z dwóch wymienionych poniżej warunków:
- dla ścieżki „Nie” w polu Operacja wykonana na zadaniach równoległych ustawiono wartość Oznacz pozostałe zadania jako anulowane;
- w tym samym polu dla ścieżki „Nie” ustawiono wartość Czekaj na zakończenie zadań wymaganych, zaznaczono pole Stała liczba i podano liczbę 1.
W omawianym scenariuszu:
- krok jest kończony, jeżeli nawet raz wybrano ścieżkę „Nie”, także jeśli nie zakończono wszystkich zadań;
- krok jest kończony natychmiast po przejściu określonej liczby razy ścieżki „Tak”.
W większości przypadków opisane rozwiązanie będzie w pełni wystarczające… ale nie we wszystkich.
Problem
Gromadzone są odpowiedzi od wszystkich osób, którym przydzielono zadanie, a decyzja o tym, która ścieżka w obiegu zostanie wybrana, jest podejmowana po ich przeanalizowaniu. W takiej sytuacji zwykła zmiana ustawień w polach Operacja wykonana na zadaniach równoległych i Liczba wymaganych zakończonych zadań nie będzie wystarczająca.
W zakładanym scenariuszu przyjęto, że zadanie w kroku przypisano do pięciu osób oraz ustawiono wymóg 3 zakończonych zadań w kroku „Tak” oraz 2 w kroku „Nie”. Choć sprzeczne z intuicją, możliwe są w tym przypadku dwa rezultaty:
- jeżeli pierwszą udzieloną odpowiedzią było „Nie”, a drugą i trzecią „Tak”, obieg przejdzie ścieżką Tak;
- jeżeli pierwszą odpowiedzią było „Tak”, a drugą „Nie”, obieg przejdzie ścieżką „Nie”.
W obu przykładach można odnieść wrażenie, że silnik obiegu podjął decyzję zbyt pochopnie, jednak ustawienie Liczba wymaganych zakończonych zadań należy traktować bardzo dosłownie. Nie oznacza ono liczby zadań, w przypadku których wybrano tę ścieżkę. Dotyczy ono wyłącznie zakończonych zadań.
Po otrzymaniu odpowiedzi dla zadania silnik obiegu analizuje: a) którą ścieżkę wybrano, a następnie b) czy ustawienia wybranej ścieżki umożliwiają w danej chwili kontynuowanie przejścia tą ścieżką. W obu powyższych przykładach:
- druga udzielona odpowiedź „Tak” zmusiła silnik do analizy ustawień ścieżki „Tak”, zgodnie z którymi możliwe jest przejście nią w przypadku zakończenia trzech zadań;
- pierwsza odpowiedź „Nie” spowodowała, że silnik odczytał konfigurację ścieżki „Nie” zakładającą przejście nią w przypadku zakończenia dwóch zadań.
Rozwiązanie
Zachowanie platformy WEBCON BPS przypominające wybór poprzez głosowanie można ustawić, korzystając z jednego lub dwóch zapytań SQL oraz Kroku sterowania obiegiem. Ponadto zapytania SQL mogą zostać osadzone w wykorzystywanych potem wielokrotnie globalnych regułach biznesowych.
Ogólna konfiguracja w tym przypadku wygląda następująco:
Część pierwsza: reguły biznesowe zawierające zapytania SQL
Należy utworzyć trzy reguły biznesowe.
- „Suma oddanych głosów”: łączna liczba wszystkich zakończonych zadań bez względu na to, którą ścieżkę wybrano.
- „Suma głosów dla ID ścieżki”: liczba zakończonych zadań, w przypadku których wybrano konkretną ścieżkę (naciśnięto przycisk). Należy podać identyfikator (ID) ścieżki, dla której będzie wykonane sumowanie.
- „Rezultaty głosowania”: przedstawienie w formie tekstowej listy osób, które ukończyły zadanie, oraz ścieżki, którą wybrały. Informacje takie mogą być następnie dodane do atrybutu typu Wiele wierszy tekstu bądź atrybutu systemowego Komentarze.
W każdym z wymienionych przypadków nie przywołuje się wszystkich zadań powiązanych z bieżącym elementem procesu, a jedynie te, które zostały niedawno przypisane lub zakończone.
Najlepszym rozwiązaniem są w tym wypadku globalne reguły biznesowe, ponieważ można ich używać w każdym procesie dowolnej aplikacji.
Suma oddanych głosów
Jest to najmniej skomplikowana z wymienionych trzech reguł. Składa się ona z pojedynczej funkcji SQL COMMAND i nie posiada zdefiniowanych parametrów.
Wyrażenie SQL użyte w funkcji ma następującą postać:
Zapytanie odwołuje się do tabeli WFElementTasks, która zawiera konkretne przypisane zadania – oraz ich wyniki – dla elementu procesu. Jak wspomniano wcześniej, w zapytaniu uwzględniane są wyłącznie najbardziej aktualne wpisy (zestaw zadań utworzonych w tym samym czasie).
Suma głosów dla ID ścieżki
Reguła ta ma nieco bardziej złożoną formę niż reguła „Suma oddanych głosów”. Wymaga ona utworzenia jednego parametru typu Wartość zmiennoprzecinkowa o nazwie „ID ścieżki” i użycia go w klauzuli WHERE, aby filtrować wyniki otrzymywane z kolumny WFT_FinishPath.
Tekst {ID ścieżki} należy zastąpić odwołaniem do parametru ID ścieżki.
Funkcji CONVERT() oraz SUBSTRING() użyto, ponieważ wartości otrzymywane z tabeli WFT_FinishPath mają format ID#Nazwa (często stosowany w platformie WEBCON BPS), a w tym przypadku porównywany ma być wyłącznie identyfikator ID.
Rezultaty głosowania
Ostatnia z reguł przypomina regułę „Suma oddanych głosów”, posiada jednak bardziej rozbudowaną klauzulę SELECT. Zamiast zliczać odpowiedzi udzielone w ramach zadania, reguła ta tworzy ich listę (autor oraz wybrana ścieżka). W rezultacie, reguła zwraca wszystkie wiersze, a nie tylko pierwszy.
Zwracane wyniki będą miały formę pojedynczego bloku tekstu: „Wyświetlana nazwa użytkownika: Wybrana ścieżka”, a poszczególne wiersze będą oddzielane średnikami. Reguła wykorzystuje funkcję STRING REPLACE do modyfikowania wyników komendy SQL, zastępując średniki znakami nowej linii. Znaki te są wstawiane za pomocą funkcji TEXT, co przedstawia poniższy zrzut:
Wewnątrz funkcji TEXT naciśnięto raz klawisz Enter, przez co kursor tekstu znajduje się obecnie na początku drugiej linii.
Część druga: ustawienia ścieżki
W każdej ścieżce prowadzącej do kroku pośredniego, w którym odbywa się „głosowanie”, należy ustawić opcję Czekaj na zakończenie zadań wymaganych, a w polu dotyczącym ich liczby zaznaczyć przycisk Wszystkie.
W omawianym przypadku każda osoba z przypisanym zadaniem musi udzielić odpowiedzi bez względu na jej rodzaj. Decyzja o tym, która ścieżka zostanie wybrana, zapadnie w Kroku sterowania obiegiem, który znajduje się po kroku pośrednim.
Część trzecia: Krok sterowania obiegiem
W regule wyboru ścieżki zapisanej w Kroku sterowania obiegiem wykorzystana zostanie reguła „Suma głosów dla ID ścieżki” oraz ewentualnie reguła „Suma oddanych głosów”. Na poniższym zrzucie zaprezentowano przejście ścieżką o nazwie „Odrzuć, jeżeli chociaż raz wybrano ścieżkę »Głosuj na nie«”.
Bardziej złożony proces decyzyjny przedstawiono na poniższym zrzucie. Zaprezentowano na nim, w jaki sposób skonfigurować obieg, aby używał jedną z dwóch częściej wybieranych ścieżek (> 50%). W przypadku, gdy obie ścieżki są wybierane równie często, przejście nastąpi ścieżką ustawioną jako domyślna.
Wartość ID ścieżki można pozyskiwać z drzewa dostępnego w zakładce Obiekty edytora wyrażeń (zrzut powyżej) lub za pomocą funkcji automatycznego uzupełniania (zrzut poniżej).
Choć nie jest to wymagane, w atrybucie Komentarze istnieje możliwość zapisania listy wyborów dokonanych przez każdą osobę z przypisanym zadaniem. Aby to zrobić, na wejściu do Kroku sterowania obiegiem należy dodać automatyzację, a następnie utworzyć w niej akcję Zmień wartość pola skonfigurowaną tak, aby jako wartość atrybutu systemowego Komentarze ustawiała wynik reguły biznesowej „Wyniki głosowania”, która należy utworzyć.
Podsumowanie
Jak wspomniano wcześniej, nie w każdym obiegu wymagana jest obsługa scenariusza zakładającego głosowanie, w którym oczekuje się na wszystkie odpowiedzi, a następnie je analizuje. Niemniej takie przypadki istnieją, są istotne i mogą być obsługiwane przez platformę WEBCON BPS z zastosowaniem techniki opisanej w niniejszym artykule. Za jej pomocą możliwe jest zastosowanie niemal dowolnego typu kryteriów do wyników zestawu zadań wykonywanych w oparciu o głosowanie. Wymagana dodatkowa konfiguracja ogranicza się do trzech globalnych reguł biznesowych, które tworzone raz, mogą być wykorzystywane wielokrotnie. Pozostałe operacje opierają się prostej logice reguł, której znajomość jest powszechna wśród twórców aplikacji WEBCON BPS.
Siła platformy WEBCON BPS kryje się w możliwości obejścia tych ograniczeń za pomocą jedynie kilku dodatkowych działań. Zważywszy, że inną kluczową cechą systemu WEBCON BPS jest jego ustawiczne ulepszanie, autor niniejszego artykułu żywi nadzieję, że za jakiś czas nie będzie on już potrzebny.