Logika biznesowa procesu zapisana jest w regułach. Reguły mogą, ale nie muszą, zawierać sekwencje działań, które zostaną wykonane po uruchomieniu reguły. Do zapisu tych sekwencji działań stosuje się prosty język skryptowy. Tak jak w Excelu są makra i funkcje, tak w AMODIT stosuje się język skryptowy i funkcje.
W skryptach stosuje się tylko kilka prostych konstrukcji, które w połączeniu z funkcjami stanowią niezwykłe silne narzędzie do opisu i sterowania procesami.
Wszystkie pola z formularza dostępne są w regułach.
[Kwota] = 123;
Skrypt ten powoduje podstawienie wartości 123 do pola o nazwie Kwota. Podstawienie następuje zawsze „w lewą stronę”, czyli to co jest z prawej strony znaku = jest wstawiane do tego co jest po lewej stronie znaku =.
Nazwę pola ujmujemy w nawias kwadratowy []. Jeżeli nazwa składa się z kilku wyrazów lub zawiera inne znaki, to całość ujmujemy w nawias kwadratowy np. [Nazwa kontrahenta]. Zostawiamy spacje oraz inne znaki, które tworzą nazwę pola.
Znak = oznacza tu i w innych przykładach podstawienie, przypisanie wartości znajdującej się po prawej stronie znaku do pola, którego nazwę podajemy z lewej strony.
Znak ; oznacza koniec wyrażenia. Powinien być stosowany, jednak jego brak nie powoduje błędu składniowego.
[Miasto] = "Warszawa";
Skrypt ten powoduje podstawienie wartość typu tekstowego „Warszawa” do pola o nazwie Miasto.
Wartość tekstową podajemy w cudzysłowie „tekst” lub apostrofach ’tekst’.
[Miasto] = [Miejscowość wyjazdu];
Skrypt ten spowoduje pobranie wartości z pola o nazwie [Miejscowość wyjazdu] i wstawienie tej wartości do pola o nazwie [Miasto]. Pamiętaj: zawsze z prawej do lewej.
Jeżeli obecnie na formularzu w polu [Miejscowość wyjazdu] przykładowo jest wartość „Poznań”, to na skutek wykonania tego skryptu, w polu [Miasto] również będzie wartość „Poznań”, bez względu na to co wcześniej było w polu [Miasto].
Wiedząc już jak podstawić lub pobrać wartość z pola formularza, zobaczmy jak można sterować przepływem zdarzeń, korzystając z instrukcji warunkowej „jeżeli”.
if ( warunek logiczny )
{
... wykonaj gdy warunek jest spełniony ...
}
else
{
... wykonaj gdy warunek nie jest spełniony ...
}
Prawidłowy zapis instrukcji warunkowej składa się z kilku stałych elementów
słowo kluczowe if
warunek logiczny umieszczony w nawiasach okrągłych ( )
skrypt do wykonania, gdy warunek logiczny jest spełniony. Skrypt ten objęty jest nawiasami klamrowymi { }
W tym miejscu można zakończyć instrukcję warunkową, chyba że chcemy obsłużyć również sytuację, gdy warunek logiczny nie jest spełniony, wtedy dopisujemy
słowo kluczowe else
i skrypt do wykonania, gdy warunek nie jest spełniony. Skrypt ten objęty jest nawiasami klamrowymi { }
Przeanalizujmy powyższy przykład instrukcji warunkowej
występuje w nim słowo kluczowe if
w nawiasach okrągłych ( ) umieszczono warunek logiczny, który sprawdza czy [Kwota netto] jest większa lub równa 10000.
w nawiasach klamrowych { } umieszczono skrypt, który zostanie wykonany gdy warunek logiczny będzie spełniony. Jest to funkcja ForwardCase() z odpowiednimi parametrami
zastosowano słowo kluczowe else, aby obsłużyć sytuację gdy warunek logiczny nie będzie spełniony
w nawiasach klamrowych { } umieszczono skrypt, który zostanie wykonany gdy warunek logiczny nie będzie spełniony. Jest to również funkcja ForwardCase() z odpowiednimi parametrami
warunek logiczny będzie spełniony gdy pole o nazwie [Miasto] będzie zawierało tekst „Warszawa”
[Osoba akceptująca] != ""
często stosowana konstrukcja dla sprawdzenia czy pole nie jest puste, tzn czy zawiera jakąkolwiek wartość. Ten przykład sprawdza czy pole [Osoba akceptująca] nie jest puste.
W AMODIT ten sposób sprawdzenia !=””, czyli nie jest puste, jako ciąg znaków stosuje się do większości typów pól, nie tylko do pól tekstowych. Można tak sprawdzić np czy pole typu data nie jest puste [Data sprzedaży] != „”
W tym przykładzie sprawa zostanie skierowana do akceptacji finansowej dla każdej faktury powyżej 10000 oraz zawsze gdy kontrahentem będzie spółka ABC (bez względu na kwotę) – użyto operatora lub ||
if ( ![Czy faktura korygująca?] )
{
....
}
w przykładzie użyto znaku ! jako negacji oraz pola na formularzu o nazwie [Czy faktura korygująca?], które jest typu „tak/nie”. Ten zapis należy czytać w następujący sposób „jeżeli nie jest to faktura korygująca”
Oba przykłady są tożsame. Warunek logiczny można zapisać jako [Czy faktura korygująca?] == true albo po prostu jako [Czy faktura korygująca?], ponieważ pole [Czy faktura korygująca?] jest polem typu „tak/nie” czyli już samo zwraca wartość logiczną true albo false.
Czasami jest potrzeba zapamiętania jakiejś wartości i użycia jej w dalszej części skryptu/reguły. Do tego celu służą zmienne.
Zmienna jest synonimem pewnego obszaru pamięci, służącego do przechowywania danych. Zmienna ma nazwę oraz wartość. Nazwa pozwala na jednoznaczną identyfikację zmiennej.
W AMODIT:
nazwa zmiennej musi zaczynać się literą lub znakiem podkreślenia;
długość nazwy, to przynajmniej jedna litera;
nazwy zmiennej nie umieszczamy w cudzysłowie, apostrofach ani w nawiasach kwadratowych;
nazwę zmiennej zapisujemy w skrypcie jako jeden, nieprzerwany ciąg znaków;
pierwsze użycie zmiennej w regule musi być związane z podstawieniem wartości;
zmienna przyjmuje typ zgodny z pierwszym podstawieniem wartości, a później typ może być zmieniony poprzez podstawienie wartości innego typu.
Zmienna ratio przyjęła typ liczbowy na skutek przypisania do niej wartości liczbowej.
multipliedRatio = ratio * 25;
Zmienna multipledRatio przyjęła typ liczbowy gdyż wcześniej przypisana została wartość 1.25 do zmiennej ratio, a działanie arytmetyczne zwraca w wyniku liczbę
ratio = "Ponownie przypisana wartość zmieniająca typ";
Jeżeli ponownie, w tej samej regule, przypiszemy wartość do wcześniej użytej zmiennej, to od tego momentu zmieni ona typ. W tym przypadku od tego momentu zmienna ratio jest typu tekstowego.
wartoscLogiczna1 = true;
Można użyć słowa kluczowego true lub false, przypisując wartość logiczną dla zmiennej
isRatioZero = ratio == 0;
Zmienna isRatioZero będzie typu logicznego, gdyż wynikiem warunku logicznego ratio == 0 jest wartość logiczna prawda lub fałsz.
error = 3 * previouslyUnknownVariable;
Nie można użyć zmiennej po raz pierwszy w powyższy sposób. Zawsze najpierw musi być jej przypisana wartość. W powyższym przykładzie działanie reguły zgłosi błąd.