Typy reguł biznesowych

Ostatnia modyfikacja Październik 07, 2019

W AMODIT wyróżniamy kilka typów reguł biznesowych:

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ł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.

Czytaj więcej

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 10000 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 10000 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 10000 razy.

Dlatego w regułach okresowych wyróżniamy „regułę okresową dla procesu„. Jest 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 funkcji foreachcase() dla tych znalezionych spraw. Reguła okresowa dla procesu wykona się jeden raz w określonym momencie ( a nie 10000 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).