Przejdź do głównej zawartości

Formuły


Formuły stanowią istotną pomoc wszędzie tam, gdzie zachowanie aplikacji powinno zależeć od pewnego, określonego zbioru warunków. Biorąc pod uwagę ilość funkcji, zmiennych i warunków udostępnianych przez Edytor formuł, spektrum zastosowań formuł w tworzonej aplikacji jest bardzo rozległe: od chociażby wykonywania matematycznych obliczeń, poprzez dynamiczne wskazywanie formularzy czy procesów uruchamianych w odpowiedzi na akcje Użytkownika.

W niniejszym rozdziale dowiesz się:

  1. gdzie można zastosować formuły,
  2. jak konstruować formuły,
  3. jakie zmienne, stałe i funkcje można wykorzystać przy tworzeniu formuł,
  4. o czym należy pamiętać definiując formułę.

Idea konstruowania formuły​

Podstawowe zasady rządzące tworzeniem formuł:

  1. formuła ma strukturę drzewiastą, wyrastającą z korzenia (korzeń znajduje się na samej górze okna formuły),
  2. drzewo składa się z dowolnej ilości poziomów zagnieżdżenia, każdy z nich rozpoczyna się węzłem,
  3. każdy węzeł zwraca wartość określonego typu,
  4. formuła przetwarzana jest od najbardziej zagnieżdżonego elementu,
  5. wartość zwracana przez korzeń jest wartością całej formuły,
  6. formuła składa się z warunków, zmiennych, stałych i funkcji.

image

Zastosowanie formuł​

W platformie archITekt jest wiele miejsc pozwalających na wykorzystanie formuły.

  1. Listy – w wielu właściwościach list wybierając jako Sposób określania: Formuła możemy uzależnić wygląd i zachowanie listy od spełnienia specyficznych warunków, zadanych za pomocą Edytora formuł.

image

  1. Procesy – formuły służą do określenia działania w przypadku czynności Decyzja, oraz do określania procesów i formularzy, gdy wybraliśmy jako Sposób określania Formuła.
  2. Mapowanie – wszędzie tam, gdzie występują mapowania (np. czynność Mapowanie dostępna dla procesu), do określania mapowania warunkowego także używamy formuł.

image

  1. Akcje na listach – dla akcji takich jak Przejdź na formularz/listę lub Uruchom nowy proces można zdefiniować formułę, wskazującą formularz/listę oraz proces, a także dodatkowe mapowania na panelu Właściwości.

image

  1. Algorytmy - wszelkie obliczenia i mapowania w bloczkach Decyzja, Oblicz, Agregacja, Dodaj/Pobierz/Usuń z listy.

image

Edytor formuł​

Do definiowania formuł używamy funkcjonalności o nazwie Edytor formuł wywoływanego zwykle po kliknięciu we właściwość Formuła.

Okno Edytora formuł składa się z kilku części:

  1. Okna formuły, służące do konstruowania drzewa formuły.
  2. Okna podpowiedzi, za pomocą którego możemy zorientować się w typie danych zwracanych przez daną funkcję. Zaznacz funkcję i wybierz przycisk image aby włączyć opis funkcji.
  3. Schowka, w którym możemy przechowywać fragmenty lub całość formuły.

Do schowka możemy przenieść, metodą przeciągnij i upuść (drag & drop), dowolny unikalny fragment drzewa formuły – skopiowane będzie wszystko, co znajduje się „poniżej” węzła, który zaznaczymy. Fragmenty identyczne (z dokładnością do wszystkich elementów formuły, znajdujących się pod wskazanym węzłem) z istniejącymi już w schowku, nie są powtórnie kopiowane. Analogicznie postępujemy, chcąc przenieść element schowka w obręb naszego drzewa formuły.

image

Dostępne funkcje zebrane są na panelu Funkcje a zmienne na panelu Zmienne.

Zmienne i Funkcje możemy umieszczać w oknie formuły za pomocą ich przeciągnięcia (drag&drop).

Budowa formuły​

Drzewo formuły możemy tworzyć z wykorzystaniem następujących obiektów:

  1. Funkcji – relacji pomiędzy stałymi i/lub zmiennymi (przykładowo relacji „mniejsze lub równe”). Funkcje możemy wyszukać na panelu Funkcje, a następnie przeciągamy je do okna definiowania funkcji.

  2. Stałych – wprowadzonych wartości określonego typu, wyświetlanych w cudzysłowie.

  3. Warunków – pozwalających na określenie, jakie wartości ma zwracać formuła w przypadku spełnienia (lub też nie) zdefiniowanego warunku (warunków).

  4. Zmiennych – dynamicznych wartości, związanych z danymi wykorzystywanymi przez aplikację (np. wartość pola w macierzystej strukturze danych formularza).

image

W powyższym przykładzie chcemy uzyskać złączenie napisów (funkcja Konkatenacja), w zależności od zadanego warunku czyli: jeżeli pole C_MODEL jest puste (Czy wartość pusta) wówczas zwróć tekst Brak informacji o modelu w przeciwnym wypadku (Else) zwróć nazwę modelu samochodu pobraną z pola ze struktury danych C_MODEL.

Typy danych​

Każdy węzeł (a także formuła jako całość) zwraca określony typ danych. Przechodząc do Edytora formuł z konkretnego miejsca, formuła domyślnie jest ustawiona na zwrócenie odpowiedniego typu danych. W poniższym przypadku przechodząc do edytora formuł z właściwości Formularz, formuła zwraca wersję czyli obiekt z serwera wersji. W tym przypadku należy wskazać z panelu Zmienne wersję i przeciągnąć ją na węzeł formuły.

image

Typy danych:

  1. Liczba stałoprzecinkowa
  2. Liczba całkowita
  3. Liczba całkowita długa
  4. Tekst,
  5. Logiczny - wartość prawda/fałsz
  6. Data/czas
  7. Wersja - wskazanie konkretnego obiektu serwera wersji.
  8. Słownik - wskazanie konkretnego obiektu słownikowego, jednego z wybranych słowników.
  9. Obiekt - typ wykorzystywane w przypadku, gdy nie wiadomo jakiego formatu będą dane.
  10. Listy - składające się z elementów typu Liczba stałoprzecinkowa, Liczba całkowita, Logiczny, Tekstowy – jeśli stała jest takiego typu, to poszczególne wartości wprowadzane są w kolejnych wierszach.

Konwersja typów​

Istotne jest, aby w formule występowała zgodność typów danych zwracanych przez poszczególne węzły. Ponieważ poszczególne zmienne, stałe i funkcje zwracają wartości różnych typów, często potrzebna jest konwersja. W momencie, kiedy zachodzi konieczność uzgodnienia typów Edytor formuł informuje o tym i proponuje (o ile jest to możliwe) stosowną funkcję konwertującą.

wskazówka

Wszystkie funkcje konwertujące znajdziesz w zakładce Funkcje i wybraniu opcji Konwertery.

image

Automatyczna konwersja będzie możliwa, jeśli w funkcji porównującej tekst (np.==Tekst) jako jeden z argumentów użyjemy funkcji zwracającej liczbę (np. Dni między datami). Po przeciągnięciu funkcji na okno formuły zostanie wyświetlony komunikat o niezgodności danych i czy wykonać konwersję.

image

W tym przypadku, po zastosowaniu konwersji, Edytor formuł automatycznie doda funkcję Liczba całkowita na tekst, zmieniającą typ Liczba całkowita na typ Tekst.

image

Nie w każdym przypadku konwersja jest możliwa (sensowna). W takiej sytuacji Edytor formuł blokuje użycie danej zmiennej, stałej czy funkcji. Przykładem nieobsługiwanej konwersji jest zamiana typu Data/Czas na typ Liczba całkowita.

image

Warunki​

Wartość, która zostanie wyliczona przez formułę możemy uzależnić od spełnienia określonego warunku, bądź też złożenia wielu warunków, wg schematu:

JEŻELI "If "(warunek) jest spełniony to zwróć wartość A

W PRZECIWNYM RAZIE "Else" zwróć wartość B

  1. Aby dodać warunek kliknij na węzeł formuły i wybierz opcję Warunek.

image

  1. W drzewie domyślnie pojawia się węzeł WARUNEK oraz dwa podwęzły: If (odpowiednik JEŻELI) oraz Else (odpowiednik W PRZECIWNYM RAZIE). W pierwszym określamy, jaką wartość ma zwrócić węzeł WARUNEK, jeśli warunek określony w If jest spełniony, w drugim wartość jaką ma zwrócić węzeł, jeśli jest inaczej.

image

  1. Aby rozwinąć warunek kliknij w ikonę na węźle If.

image

  1. Warunki mogą być dowolnie zagnieżdżone, tzn. w obrębie węzłów If oraz Else można zamiast bezpośredniego określenia zwracanej wartości dodać kolejny warunek.
  2. Warunek może być również skonstruowany wg bardziej złożonego schematu:

JEŻELI "If" (warunek1) jest spełniony to zwróć wartość A

W PRZECIWNYM RAZIE JEŻELI "ElseIf" (warunek2) jest spełniony zwróć wartość B

W PRZECIWNYM RAZIE "Else" zwróć wartość C

image

  1. Dla warunku możemy dodać dowolną ilość gałęzi typu W PRZECIWNYM RAZIE JEŻELI ElseIf, wybierając z menu kontekstowego opcję Warunek. Gałąź typu Else (W PRZECIWNYM RAZIE) jest zawsze tylko jedna.

image

Stałe​

Edytor formuł zezwala nam na wykorzystanie stałych – niezmiennych wartości, określanych na poziomie definiowania formuły. Stała przyjmuje zawsze odpowiedni format, uzależniony od oczekiwanego typu danych. Np. dla typu Liczba całkowita możliwe jest wprowadzenie tylko liczb całkowitych, dla typu Data/Czas określenie konkretnej daty.

  1. Dla każdego typu danych można wartość stałej określić jako wartość pustą (null). Kliknij na danym argumencie formuły i wybierz z menu kontekstowego opcje Ustaw null.

image

  1. Stałą możesz określić korzystając z menu kontekstowego (Edytuj) klikając w oknie formuły lub dwukrotnie klikając w pusty węzeł.

image

Zmienne​

Istotniejszym, decydującym o dynamice, składnikiem formuł są Zmienne. Zmienne pozwalają na konstruowanie warunków opartych na wartościach specyficznych dla elementów danych biznesowych, oraz warunków związanych z konfiguracją obiektów platformy jak: formularzy, list, procesów, itp.

image

Zmienne podzielone są na kilka kategorii, związanych z ich zastosowaniem. Są to między innymi:

  1. Zmienne mapowań - udostępnia pola macierzystej struktury danych (tj. wskazanej w obiekcie, dla którego wywołaliśmy Edytor formuł) – w formule wykorzystana zostanie wartość pola dla konkretnego elementu danych biznesowych.
  2. Zmienne procesu - udostępnia pola struktury danych procesu.

image

  1. Jeżeli do procesu zostały dodane inne zmienne lub zmienne lokalne, wówczas dostępne są na poszczególnych zakładkach.

image

  1. Serwer wersji - udostępnia całe drzewo serwera wersji, dostępne są elementy do wykorzystania w węzłach zwracających typ Wersja (np. przy wskazywaniu listy za pomocą formuły),
  2. Kolumny listy - w czasie pracy z listą, jako zmiennej możemy używać wartości jednej z kolumn (dla aktualnego elementu danych biznesowych), skonwertowanej na typ danych Tekst,
  3. Struktura uprawnień - umożliwia wybór dowolnego uprawnienia zdefiniowanego w archITekt Studio.
  4. Parametry biznesowe - umożliwia wybór parametrów biznesowych zdefiniowanych w archITekt Studio.
  5. Stała zlokalizowana - umożliwia wybór dowolnej stałej zdefiniowanej w go w archITekt Studio.
  6. Słowniki - udostępniają całe drzewo słowników zdefiniowanych w archITekt Studio. Dostępne są elementy do wykorzystania w węzłach zwracających typ Słownik.
  7. Zmienne list prawostronne, Zmienne list lewostronne - kategorie związane z mapowaniami zmiennych wykorzystywane przy mapowaniach list w procesach.
wskazówka

O tym, jakie kategorie i zmienne będą dostępne, decyduje miejsce wywołania edytora. Inne kategorie są dostępne w czasie konstruowania formuły związanej z procesem a inne przy pracy z listą.

Funkcje​

Ostatnim kluczowym elementem tworzonych formuł są Funkcje. Każda z funkcji zwraca wartość określonego typu, może również posiadać argument (argumenty), będący stałą, zmienną lub inną funkcją. Argumenty powinny zwracać wartości tego samego typu, co funkcja. W wielu przypadkach argumenty funkcji są nieprzemienne. Należy zwrócić uwagę, czy określamy je w dobrej kolejności.

Np. funkcja, która służy do określenia bieżącej daty Dzisiaj zwraca wartość typu Data/Czas i nie posiada żadnych argumentów.

image

Z kolei funkcja porównująca czy dwie daty są różne: !=(Data) posiada dwa argumenty - daty, które porównujemy (zmienne/stałe lub funkcje typu Data/Czas). W poniższym przykładzie jako argumenty wykorzystano funkcję Dzisiaj oraz jako drugi argument zmienną - pole ze struktury danych procesu DataUrodzenia.

image

Funkcje, podobnie jak zmienne, zgrupowane są w kategorie tematyczne reprezentowane przez ikony widoczne na zakładce Funkcje. Są to kolejno:

  1. Wszystkie - wszystkie dostępne funkcje.
  2. Arytmetyczne - funkcje związane z działaniami takimi jak iloczyn, iloraz, suma, różnica, pierwiastek, wartość bezwzględna na liczbach całkowitych i stałoprzecinkowych,
  3. Porównywanie - operatory porównania (większy, mniejsze, większe lub równe, mniejsze lub równe, równe, różne) różnych typów danych oraz funkcja sprawdzająca, czy dana wartość istnieje lub jest pusta,
  4. Konwertery - wszystkie możliwe (i sensowne) konwersje pomiędzy dwoma typami danych,
  5. Data i czas - funkcje operujące na typie danych Data/Czas, zarówno porównujące wartości, jak również dodające i odejmujące lata, miesiące, dni, godziny, minuty, sekundy od zadanej wielkości, zwracające aktualną datę, wyliczające ilość lat, miesięcy, dni pomiędzy dwoma datami oraz pobierające z daty lub godziny odpowiednią jednostkę czasu: rok, miesiąc, dzień i odpowiednio godzinę, minutę lub sekundę,
  6. Logiczne - trzy operatory logiczne: „Lub”, „Nie”, „Oraz”,
  7. Tekstowe - funkcje operujące na ciągach tekstowych, porównujące je, znajdujące określone podciągi, zwracające długość tekstu itp.,
  8. Listy - wszystkie operacje na listach takie jak wybieranie wartości minimalnej lub maksymalnej z elementów listy czy obliczanie wartości średniej, sumowanie itp.
  9. Inne - wszystkie pozostałe funkcje, np. funkcje związane z danymi zalogowanego/dowolnego Użytkownika.
  10. Tryb zgodny z zaznaczonym węzłem - przycisk pozwala na zawężenie listy funkcji dla wybranej kategorii, do funkcji które zwracają odpowiedni dla formuły typ danych.

image

Funkcje wieloargumentowe​

Niektóre z funkcji w Edytorze Formuł umożliwiają dodanie i określenie dowolnej ilości argumentów i wykonywanie na nich działań. Są to:

  1. suma,
  2. różnica,
  3. iloraz,
  4. iloczyn,
  5. konkatenacja.

Wybierając funkcję wieloargumentową możesz dodawać argumenty przy pomocy menu kontekstowego, po kliknięciu prawym przyciskiem myszy na węźle funkcji.

image

W celu usunięcia argumentu zaznacz argument, a następnie z menu kontekstowego wybierz Usuń argument.

image

Funkcje bez silnego typowania​

W Edytorze formuł znajdują się funkcje, które nie mają zdefiniowanego typu argumentu. Są to tzw. funkcje słabo typowane. Są to: suma, różnica, iloczyn, iloraz, funkcje porównujące wartości +, <, >, >=, <=, != itp.

Poniżej zastosowano funkcję <=, która jest słabo typowaną, porównującą czy pierwszy argument jest mniejszy lub równy od drugiego. Po wybraniu funkcji słabo typowanej i dodaniu do drzewa formuły możemy wprowadzić argumenty dowolnego typu, a jeśli funkcja jest wieloargumentowa, ich ilość może być dowolna.

Dopóki funkcja bez typowania nie otrzyma argumentu, który ma określony typ, nie będzie miała określonego typu. Oznacza to, że jeśli w węźle argumentu dodamy funkcję bez silnego typowania lub warunek, ich typy argumentów wciąż będą nieokreślone, a zatem możemy budować funkcję z dowolnej ilości zagnieżdżonych funkcji i warunków nietypowanych.

image

Po dodaniu argumentu o określonym typie, edytor zamienia funkcję nietypowaną na funkcję typowaną. Jeśli argumentem jest stała lub zmienna, funkcja nietypowana przyjmie typ zmiennej, jeśli natomiast argumentem jest funkcja zwracająca konkretny typ, to typ ten zostanie przyjęty przez funkcję słabo typowaną i zmieni ją na silnie typowaną. Nazwa wyświetlanej w drzewie funkcji zostanie wówczas zmieniona na: nazwa_funkcji (typ_argumentów)

image

Niektóre funkcje słabo typowane są w stanie obsłużyć tylko pewną grupę typów argumentów. Jeśli będziemy chcieli wskazać argument o typie, który nie odpowiada funkcji, System wyświetli komunikat wykona konwersję na jeden z możliwych do obsługi typów.

image

Natomiast funkcja <= (Data) jest silnie typowana, wymaga aby argumenty były danymi typu „data” i sprawdza czy jedna jest mniejsza od drugiej.

image

Zobacz również​

Konfiguracja aplikacji

Definiowanie i użycie parametrów na liście

Definiowanie i użycie parametrów na formularzu