Typy reguł biznesowych
Streszczenie
W systemie AMODIT dostępnych jest wiele typów reguł biznesowych. Dzięki temu twórcy procesu mogą elastycznie tworzyć logikę biznesową procesu i łatwo realizować różne wymagania użytkowników. W artykule przedstawiono osiem typów reguł, które można wykorzystać w AMODIT, wraz z ich charakterystyką:
- Reguły ręczne (przyciski akcji) – definiują przyciski akcji, z których będzie korzystał użytkownik. Dla uruchomienia reguły ręcznej niezbędna jest interakcja użytkownika i naciśnięcie przez niego konkretnego przycisku.
- Reguła ręczna dokumentowa (przycisk akcji) (ang. document) – specjalny typ reguły do wykorzystania tylko w funkcjonalności „Wydzielania stron z dokumentu„.
- Reguły automatyczne – wykonywane są w momencie otwierania formularza sprawy, po każdej zmianie wartości w polach formularza sprawy, a także przed zapisaniem sprawy. Dla uruchomienia reguły ręcznej niezbędna jest interakcja użytkownika polegająca na otwarciu sprawy, wprowadzaniu nowych wartości do pól formularza lub zapisaniu sprawy.
- Reguła tabeli – definiowana jest dla konkretnej tabeli na formularzu. Reguła ta wykonuje się w kontekście konkretnego wiersza tabeli i dla wszystkich wierszy po kolei. Dla uruchomienia reguły tabeli wymagane jest dokonanie przez użytkownika zmiany w wartościach pól tabeli.
- Reguły okresowe – wykonywane są co pewien interwał czasu dla każdej sprawy w danym procesie z wyjątkiem spraw zamkniętych. Dla ich uruchomienia nie jest wymagana żadna aktywność użytkownika. Wyróżniamy trzy typy reguł okresowych:
- tzw. reguła godzinowa
- tzw. reguła dzienna
- według własnego harmonogramu
- Reguły okresowa dla procesu lub okresowa dla procesu według własnego harmonogramu – specjalny typ reguły wprowadzony w celu optymalizacji czasu wykonywania reguł okresowych. Reguła ta wymaga specjalnej konstrukcji, tzn. na początku reguły musi być użyta funkcja FindCase(), która wyodrębni sprawy, dla których chcemy wykonać jakieś działania.
- Funkcja (ang. function) – reguła wydzielająca fragment kodu jako „funkcję”. Ten fragment kodu może być osadzony w innych regułach za pomocą funkcji reguł CallFunction(). Zwiększa to czytelność kodu i pozwala na wydzielenie powtarzających się fragmentów.
Reguły ręczne (przyciski akcji)
Reguły ręczne definiują przyciski akcji, z których będzie korzystał użytkownik w ramach konkretnego procesu i konkretnego etapu w tym procesie. Reprezentowane są poprzez przyciski widoczne w pasku akcji nad formularzem sprawy. Ich kolor, ikona i nazwa oraz co najważniejsze, wykonywana akcja, są w całości definiowalne.
Aby reguła ręczna zadziałała, niezbędna jest interakcja użytkownika i naciśnięcie przez niego konkretnego przycisku.
Naciśnięcie przycisku przez użytkownika powoduje wykonanie tej reguły. To „co” zostanie wykonane, w całości zależy od tego, w jaki sposób twórca procesu przewidział zachowanie się systemu po naciśnięciu przez użytkownika tego przycisku. Może tam następować np walidacja wprowadzonych danych, wysyłanie maila, SMS’a, wyświetlenie komunikatu, sprawdzenie czegoś w systemie zewnętrznym lub wiele innych czynności dostępnych dzięki funkcjom AMODIT.
Reguła dokumentowa
AMODIT pozwala na wydzielanie stron z dokumentu. Po wydzieleniu stron można z nimi „coś” zrobić. Właśnie do określenia tego czegoś służą reguły dokumentowe. Mogą np. uruchomić nową sprawę z wydzieloną częścią dokumentu np. fakturą, mogą usunąć strony z dokumentu, pozostawiając tylko te wybrane itp. Przykład wydzielania stron z dokumentu przedstawiony jest w tym artykule: Wydzielanie dokumentów.
Reguły automatyczne
Reguły automatyczne wykonywane są
- w momencie otwierania formularza sprawy (wejścia do sprawy z listy spraw)
- po każdej zmianie wartości w polach formularza sprawy, gdy włączona jest opcja „uruchamiaj w trakcie edycji sprawy”
- we wskazanej sprawie lub tabeli gdy użyta zostanie funkcja FireRules
Wykonywane są również przed zapisaniem sprawy, a zapis sprawy jest wywoływany po: naciśnięciu zapisz, przekazaniu itp, poniżej przykłady
- w momencie przekazania sprawy (przesyłanie swobodne, przycisk Prześlij dalej)
- w momencie uruchomienia reguły ręcznej, przed wykonaniem skryptu reguły ręcznej.
- po naciśnięciu przycisku Zapisz, na formularzu sprawy.
- po naciśnięciu przycisku systemowego „Zamknij sprawę”
Reguły automatyczne NIE są wykonywane:
- przed usunięciem sprawy
- gdy zmianie ulegają wartości w tabeli na formularzu. W tym przypadku działają reguły tabeli, ale nie reguły formularza.
- gdy zmianie ulegają wartości na formularzu sprawy, ale wykonane z innej sprawy za pomocą funkcji Set(), forcase(), foreachcase()
Reguły tabeli
Reguły tabeli definiowane są w ramach konkretnej tabeli na formularzu. Dla zrozumienia ich działania należy wiedzieć, że każdy wiersz tabeli jest odrębną sprawą, ma swój caseId.
Reguła dla tabeli wykonuje się tyle razy ile jest wierszy w tabeli. Za każdym razem w kontekście konkretnego wiersza w tabeli. W zasadzie należy przyjąć, że wykonuje się w sposób wyizolowany od innych wierszy danej tabeli, z pewnymi wyjątkami. Dlatego reguła tabeli o treści:
[Wartość] = [Cena] * [Ilość]
spowoduje wyliczenie Wartości w każdym wierszu tabeli, pomimo że nie definiujemy jawnie żadnej pętli. Do pól (kolumn) w tabeli odwołujemy się tak jak do pól na formularzu poprzez użycie nazwy pola w nawiasach kwadratowych.
Reguły okresowe
Reguły okresowe wykonywane są co pewien interwał czasu określany w ustawieniach systemowych (Zadania). Dla ich uruchomienia nie jest wymagana żadna aktywność użytkownika.
Zaleca się unikanie stosowania reguł okresowych ze względu na potencjalne obciążenie systemu. Należy pamiętać, że reguła okresowa to reguła, która wykona się dla KAŻDEJ sprawy w danym procesie z wyjątkiem spraw zamkniętych. Jeżeli w danym momencie jest np. 10 000 niezakończonych (niezamkniętych) spraw w jakimś procesie, to reguła okresowa, za każdym jej uruchomieniem zgodnie z harmonogramem w ustawieniach systemowych, wykona się dla tych 10 000 spraw. Wykonanie dla każdej sprawy oznacza „otwarcie” tej sprawy w zasobach serwera, wykonanie wszystkich reguł automatycznych dla tej sprawy, wykonanie reguły okresowej oraz zapis wyników do bazy dla każdej sprawy odrębnie, i tak np. 10 000 razy.
UWAGA! Od wersji 220930.53 i 221231.12 (i każdej kolejnej) wyłączono wykonywanie reguł czasowych (godzinnych, dziennych, z własnym harmonogramem) bez ustawionego etapu początkowego. Innymi słowy, musi być ustawiony etap, na którym dana reguła cykliczna będzie uruchamiana. W tym artykule przedstawiamy przykład obejścia tego zagadnienia: Obejście ograniczenia uruchamiania reguły cyklicznej tylko na jednym etapie.
Reguła okresowa dla procesu lub okresowa dla procesu według własnego harmonogramu
Reguła okresowa dla procesu to specjalny typ reguły wprowadzony od wersji 2018 w celu optymalizacji czasu wykonywania reguł okresowych. Zaleca się stosowanie tego typu reguły w przypadku reguł okresowych.
Reguła ta wymaga specjalnej konstrukcji, tzn. na początku reguły musi być użyta funkcja FindCase(), która wyodrębni sprawy, dla których chcemy wykonać jakieś działania. W dalszej części korzystamy z pętli foreachcase() dla tych znalezionych spraw. Reguła okresowa dla procesu wykona się jeden raz w określonym momencie (a nie np. 10 000 razy), dzięki funkcji FindCase() znajdzie sprawy, dla których rzeczywiście mamy coś do zrobienia, i wykona czynności określone przez skrypt tylko dla tych znalezionych spraw (foreachcase()).
Rozszerzoną wersją reguły okresowej dla procesu jest reguła okresowa dla procesu według własnego harmonogramu. Zasada jej działania jest taka sama, natomiast rozszerzono ją o możliwość ustawienia własnego harmonogramu wykonywania, np. tylko w soboty o 23:00.
Reguła typu Funkcja
Dla niektórych czytelników, mających background informatyczny, nazwa tego typu reguły może być nieco myląca. Nie jest to funkcja w rozumieniu zasad programowania – nie ma izolacji kodu ani nie ma argumentów, które można by przekazać.
Należy ją rozumieć jako „Snippet”, czyli fragment kodu, który można łatwo wkleić (insert) do innego kodu reguły w ramach tego samego procesu. Rolę „insert” w AMODIT pełni funkcja CallFunction(), w której jako argument podajemy nazwę „reguły typu funkcja”.
Patrz również: Lista typów reguł procesu