jezyk skryptowy regul ver 2

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.

Podstawy języka skryptowego w AMODIT

Dostęp do danych z pól formularza

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

Działania matematyczne

Silnik reguł biznesowych pozwala na wykonywanie działań matematycznych. Stosujemy tradycyjnie używane symbole do wykonania tych działań jak

  • +   (plus) – dodawanie
  • –    (minus) –  odejmowanie
  • *   ( gwiazdka) – mnożenie
  • /   ( ukośnik) – dzielenie
  • ( procent) – modulo
[VAT] = [Kwota netto] * [Stawka VAT];
  • Skrypt powoduje pobranie wartości z pól [Kwota netto] i [Stawka VAT], przemnożenie ich i wstawienie wyniku do pola [VAT]
[Kwota brutto] = [Kwota netto] + [VAT];
  • Skrypt powoduje pobranie wartości z pola [Kwota netto] i wartości z pola [VAT], dodanie ich do siebie i umieszczenie wyniku w polu [Kwota brutto]

Uwaga: Zachowane są wszystkie zasady dotyczące kolejności wykonywania działań oraz używania nawiasów () dla grupowania działań np

[Kwota brutto] = [Kwota netto] + [Kwota netto] * [Stawka VAT]

albo

[Kwota brutto] = [Kwota netto] * (1 + [Stawka VAT])

Łączenie ciągów znaków

Możemy użyć znaku + (plus) dla łączenia tekstów.

[Nazwa użytkownika] = "Imię: " + [Imię] + ", Nazwisko: " + [Nazwisko];
  • Załóżmy, że pole [Imię] zawiera wartość „Jan”, a pole [Nazwisko] zawiera wartość „Kowalski”.
  • Wykonanie powyższego skryptu spowoduje, że do pola [Nazwa użytkownika] zostanie podstawiona wartość „Imię: Jan, Nazwisko: Kowalski”

Używanie funkcji w skryptach

W regułach możemy również używać funkcji dostępnych na Platformie AMODIT. Dostępnych jest ponad dwieście różnych funkcji.

W tym przykładzie użyto funkcji ShowMessage(), która wyświetli użytkownikowi komunikat o treści „Komunikat”.

ShowMessage(1,"Komunikat"); 

Sterowanie przepływem zdarzeń

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 { } 

Przykład praktyczny

if ( [Kwota netto] >= 10000 )
{
    ForwardCase([Akceptujący],"Akceptacja finansowa");
}
else
{
    ForwardCase("Księgowość","Księgowanie");
}

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

Warunek logiczny, poprzez działania wykonane na swoich argumentach, przyjmuje w wyniku wartość logiczną true (prawda) lub false (fałsz). Przykładowo

1 == 2
  • Wynikiem jest false, ponieważ jeden nie równa się dwa.
10 > 5
  • Wynikiem jest true, ponieważ dziesięć jest większe od pięć

Operatory porównania w warunkach logicznych

Proszę zwrócić uwagę na operatory porównania. W skryptach AMODIT używamy następujących operatorów porównania.

    • ==  ( podwójny znak równości )   – równe
    • !=   ( wykrzyknik i znak równości ) – nierówne
    • >    ( znak większości) – większe od
    • >=  ( znak większości i znak równości ) – większe lub równe
    •   ( znak mniejszości ) – mniejsze od
    • <= ( znak mniejszości i znak równości ) – mniejsze lub równe

Przykłady praktyczne

[Miasto] == "Warszawa"
  • 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] != „”

Spójniki logiczne

Warunki logiczne mogą być łączone. Do tego celu służą spójniki logiczne. W Amodit stosujemy następujące spójniki logiczne:

  • &&  ( podwójny znak ampersand, et) – spójnik logiczny i
  • ||     ( podwójny znak pipe, kreska pionowa) spójnik logiczny lub

używamy również negacji

  •      ( wykrzyknik) – operator logiczny negacja

Przykład praktyczny

if ( [Kwota netto] >= 10000  ||  [Kontrahent] == "ABC sp. z o.o." ) 
{     
     ForwardCase([Akceptujący],"Akceptacja finansowa"); 
}
 else 
{    
    ForwardCase("Księgowość","Księgowanie"); 
}
  • 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”

Słowa kluczowe true, false

W AMODIT używane są słowa kluczowe oznaczające wartość logiczną

  • true prawda
  • false fałsz

Prześledźmy to na przykładzie

if ( [Czy faktura korygująca?] == true )
{ 

 .....

}
if ( [Czy 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.

Zmienne pomocnicze

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.

Przykład praktyczny

_temp_stage = "Opis merytoryczny"
ForwardCase([Osoba opisująca], _temp_stage)
  • w tym przykładzie powołano zmienną o nazwie _temp_stage. Proszę zwrócić uwagę, że:
    • stanowi ona jeden ciąg znaków bez spacji
    • zaczyna się od znaku podkreślenia
    • jest zapisana i używana dalej w funkcji Forwadcase() jako słowo bez cudzysłowów ani nawiasów kwadratowych.
    • zmiennej przypisano wartość tekstową, zatem jest ona teraz typu tekstowego

Więcej o zmiennych, typach, konwersji i operatorach logicznych

ratio = 1.25;
  • 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.
Was this article helpful?
0 out Of 5 Stars
5 Stars 0%
4 Stars 0%
3 Stars 0%
2 Stars 0%
1 Stars 0%
How can we improve this article?
Please submit the reason for your vote so that we can improve the article.