Akceptacja na liście pozycji z blokowaniem wierszy

Facebooktwitterpinterestlinkedinmail
Dotyczy wersji 2020.1.3.x autor: Konrad Wojtycza

 

Wprowadzenie

Z punktu widzenia wymagań biznesowych, często spotykaną potrzebą jest akceptacja dokumentu przez osoby na wyznaczonej ścieżce akceptacji. W WEBCON BPS wprowadzona została funkcjonalność, która znacznie upraszcza konfigurację takiego scenariusza. Wspomniana funkcjonalność udostępnia możliwość akceptacji dokumentu na liście pozycji. Osoba uprawniona do akceptacji, ma możliwość edycji tylko wiersza, do którego jest przypisana. Tak jak w przypadku wszystkich innych zadań, ustawienia równoczesności wykonywania zadań determinują, czy dokument musi zaakceptować jedna z osób wskazanych na ścieżce akceptacji czy wszystkie wskazane osoby. Tę druga sytuację możemy podzielić na scenariusz w którym do wszystkich osób akceptujących dokument, zadanie jest przypisane równocześnie i na scenariusz w którym osoby ze ścieżki akceptacji weryfikują dokument po kolei. W niniejszym artykule opisana zostanie konfiguracja wszystkich trzech scenariuszy.

Obieg Purchase order     

Na potrzeby artykułu rozwinięty został obieg ‘Purchase order’ (Rys. 1), dodanie kroku sterującego workflow ‘Approval completed?’ jest konieczne w przypadku scenariusza, w którym akceptacja dokumentu przez akceptantów następuje po sobie przez kolejne osoby.

Rys. 1 Schemat obiegu Purchase order

 

Konfiguracja ścieżki akceptacji z blokowanymi wierszami     

W przypadku omawianej funkcjonalności Ścieżka akceptacji to w istocie listy pozycji z aktywna funkcja akceptacji. Konfigurację należy rozpocząć od dodania do atrybutów listy pozycji, w najprostszym przypadku może to być lista pozycji z kolumnami typu checkbox (Rys. 2) i pole wyboru (Rys. 3).

Rys. 2 Ustawienia kolumny z atrybutem typu checkbox

 

Kolumna ‘Approved?’ z atrybutem typu checkbox będzie służyć do potwierdzenia akceptacji dokumentu przez osoby akceptujące. Zaleca się, aby wartość domyślna dla atrybutu checkbox zdefiniowana była jako FALSE.

Rys. 3 Ustawienia kolumny z atrybutem typu pole wyboru

 

Kolumna ‘Approver’ z atrybutem typu choice list – autocomplete będzie służyć do wyboru osób akceptujących na kroku rejestracji dokumentu przez rejestrującego. Ustalenie osób akceptujących może być także realizowane bez udziału użytkownika, używając akcji ‘Zmiana wartości na liście pozycji’. W parametrach zaznaczony jest checkbox ‘Use people field data source’, tak aby w polu ‘Approver’ możliwe do wyboru były osoby należące do struktury organizacji, najczęściej z Active Directory. Włączenie funkcjonalności akceptacji możliwe jest w ustawieniach konkretnego kroku, w zakładce Forms. Powinien to być to krok na którym osoby akceptują dokument. W omawianym przypadku jest to krok ‘Purchase order approval’ (Rys. 4).

Rys. 4 Konfiguracja formularza na kroku Purchase order approval

 

Ustawienia funkcjonalności akceptacji na liście pozycji dostępne są po kliknięciu na ikonkę narzędzi, na wysokości nazwy listy pozycji ‘Approval path’ (Rys. 5). Ustawienia funkcjonalności akceptacji znajdują się w zakładce ‘Acceptance’. Po zaznaczeniu checkboxa ‘Active’, ustawienia funkcjonalności Akceptacji będą możliwe do edycji. W sekcji ‘People that have right to accept’ możliwe jest zdefiniowanie wszystkich akceptantów. Akceptanci mogą być zdefiniowani na podstawie kolumny znajdującej się w obrębie listy pozycji, jeśli wybrana zostanie opcja ‘Dynamically’.

W omawianym przypadku personalia osób akceptujących przechowuje kolumna ‘Approver’, wartość pickera powinna być ustawiona na login. Możliwe jest również zwracanie loginów osób akceptujących poprzez zapytanie Query SQL/CAML (logins). W przypadku wyboru opcji ‘Data source’ określone może zostać źródło danych (wskazanie na kolumnę) zawierające loginy osób akceptujących.

Rys. 5 Ustawienia funkcjonalności akceptacji na liście pozycji

 

W sekcji ‘Appearance’ możliwe do określenia jest, czy wiersze możliwe do edycji przez akceptantów innych niż akceptant aktualnie edytujący element, powinny być ukryte (Hide not available rows) czy widoczne jako wiersze tylko do odczytu (Show not available rows read-only), a także ustawienie koloru tła wierszy listy pozycji, które będą dostępne do edycji dla użytkownika edytującego element (Change colors of available rows).

Akceptacja dokumentu przez wszystkie osoby z listy jednocześnie/ jedna z osób z listy

W przypadku akceptacji dokumentu przez wszystkie osoby z listy jednocześnie/ jedna z osób
z listy, konfiguracja wymaga przypisania zadania przy pomocy zapytania SQL na ścieżce prowadzącej do kroku na którym odbywa się akceptacja. W omawianym przypadku jest to krok ‘Purchase order approval’. W konfiguracji tworzenia zadania, w polu ‘Paralellism’, w przypadku wyboru opcji ‘Completion – Any’ (Rys. 6), zadanie zostanie przyporządkowane do wszystkich osób wybranych poprzez Zapytanie SQL COMMAND, a po akceptacji jednej z osób, element przejdzie do dalszych kroków. W przypadku wyboru opcji ‘Completion – All’, zadanie zostanie przyporządkowane do wszystkich osób wybranych poprzez Zapytanie SQL COMMAND, ale dopiero po akceptacji wszystkich osób, element przejdzie do dalszych kroków.

Rys. 6 Ustawienia tworzenia zadania w przypadku koniecznej akceptacji przez jedna osobę z listy

 

W konfiguracji zapytania SQL Command (Rys. 7) w polu ‘Number of rows to return’, należy wybrać opcję ‘Return values from all rows’. Dzięki temu zapytanie będzie zwracać wszystkie osoby z listy Approval path.

Rys. 7 Zapytanie zwracające wszystkie osoby z listy  Approval path

 

Akceptacja dokumentu przez kolejne osoby

W przypadku akceptacji dokumentu przez kolejne osoby, rozwiązaniem optymalnym jest zdefiniowanie akcji tworzenia zadań na wejściu do kroku, w którym odbywa się akceptacja (Rys. 8). W akcji tej osoby, którym zostanie przypisane zadanie będą wybierane z listy pozycji ‘Approval path’ przy pomocy zapytania SQL COMMAND. W konfiguracji zapytania SQL Command w polu ‘Number of rows to return’, należy wybrać opcję ‘Return value from the first row’.

Dzięki temu, zapytanie będzie zwracać jedynie pierwsza osobę (Approver), która nie zaakceptowała jeszcze wniosku (Approved? = 0) w kolejności dodania na listę ( ORDER BY DET_ID).

Rys. 8 Konfiguracja akcji tworzenia zadania Assign task to Approvers

 

Dodatkowo, po wyjściu z kroku ‘Purchase order approval’ należy zdefiniować krok sterujący obiegiem, który po sprawdzeniu czy na liście ‘Approval path’ znajdują się jeszcze osoby, które nie zaakceptowały dokumentu, skieruje element z powrotem do kroku ‘Purchase order approval’ albo do kolejnych kroków (Rys. 8).

Rys. 9 Krok sterujący obiegiem, konieczny w przypadku akceptacji dokumentu przez akceptantów kolejno po sobie

Zapytanie SQL w kroku sterującym obiegiem zwraca 1, jeśli na liście Approval path istnieje jeszcze osoba, która nie zaakceptowała dokumentu.

Formularz z listą akceptacji z blokowanymi wierszami 

Wygląd listy pozycji z włączoną funkcjonalnością akceptacji, w momencie, gdy element edytowany jest przez osobę uprawnioną do akceptacji, oraz gdy wiersze nie przypisane do tej osoby są w trybie tylko do odczytu, został zaprezentowany na Rys. 10.

Rys. 10 Formularz z listą pozycji ze włączoną funkcjonalnością akecptacji z blokowaniem wierszy


Podsumowanie

Funkcjonalność akceptacji na liście pozycji znacząco ułatwia przedstawienie na formularzu akceptacji dokumentu przez wymagane osoby i równocześnie pozostawia dużą swobodę konfiguracyjną projektantowi procesu. Oprócz prezentacji przebiegu akceptacji, może ona także wspomagać definiowanie przebiegu ścieżki akceptacji.