Search

Home

IF

IF

Operator IF służy do warunkowego rozdzielania danych w magistrali na podstawie zadanych kryteriów logicznych. Analizuje każdy rekord magistrali wejściowej i sprawdza, czy spełnia warunek zdefiniowany przez użytkownika w konfiguracji operatora.

W zależności od wyniku:

  • dane będą przesyłane na górną magistralę wyjściową, gdy wszystkie rekordy spełniają warunek
  • jeśli choć jeden rekord nie spełni warunku, cała magistrala zostanie przekierowana na dolną magistralę.

Jeśli operator zostanie skonfigurowany tak, by rozdzielać dane w zależności od spełnienia warunku to:

  • rekordy spełniające warunek kierowane są na górną magistralę operatora (tzw. wyjście TRUE),
  • rekordy niespełniające warunku trafiają na dolną magistralę (tzw. wyjście FALSE).

Operator IF można stosować w szeregu, tworząc w ten sposób rozbudowane ścieżki logiczne (wielowariantowe), co pozwala na selektywne przetwarzanie danych w złożonych scenariuszach decyzyjnych.

Przykład projektu GRAVITY z użyciem operatora IF.

image

KONFIGURACJA OPERATORA

W pierwszym kroku musisz zdecydować czy chcesz aby operator działał w trybie Run only one busbas czy Split the data into two busbars.

  • Wybierz opcję Run only one busbar jeśli chcesz aby strumień danych został przekierowany tylko na jedną z magistral wyjściowych.
  • image

    W przypadku gdy choć jeden rekord magistrali nie spełni warunku cały strumień danych zostanie przekierowany na dolną magistralę.

    Jeśli wszystkie rekordy spełnią warunek dane zostaną przekierowane na górną magistralę.

    icon
    W przypadku użycia opcji Run only one busbar system uruchomi tylko tą ścieżkę projektu połączoną z magistralą, na którą został przekierowany strumień danych.

    Wybierając opcję Run only one busbar możesz również użyć trybu Single execution, który zapewnia pojedyncze uruchomienie operatora. W trybie tym algorytm warunkowy nie może korzystać z bitów magistrali wejściowej. Możesz natomiast używać parametrów projektu i zmiennych globalnych.

  • Wybierz opcję Split the data into two busbars jeśli chcesz aby rekordy zostały rozdzielone na dwie magistrale w zależności od spełnienia warunku
  • image

    Rekordy spełniające warunek zostaną przekierowane na magistralę górną pozostałe na dolną magistralę.

    icon
    W przypadku użycia opcji Split the data into two busbars system zawsze uruchamia obie ścieżki przetwarzania niezależnie czy zostały na nie przekazane dane czy nie. Jako pierwsza zostanie uruchomiona ścieżka górna (true), a dopiero po zakończeniu przetwarzania całej ścieżki górnej zostanie uruchomiona dolna ścieżka (false).

BUDOWA I TESTOWANIE WARUNKU

Operator przetwarza każdy rekord magistrali według warunku wpisanego w pole Condition. Warunek wpisywany jest w języku C# i jest ciałem funkcji, która zwraca wartość bool dlatego kod warunku musi zwracać wartość true lub false. W warunku możesz wykorzystać zarówno bity magistrali danych, parametry projektu, zmienne globalne oraz funkcje.

Dostępne funkcje:

  • GET_AGGR → suma wartości wskazanej kolumny magistrali, dla wszystkich danych na wejściu
  • GET_OUTTEMP_AGGR → suma wartości kolumny danych, zgromadzonych w zbiorze OUTPUT_TEMPORARY
  • IS_OPERATOR_EXECUTED → zwraca wartość true jeśli wskazany operator użyty w projekcie został już wykonany, false jeśli nie.
image

Po wprowadzeniu warunku możesz przetestować jego działanie przyciskiem Test.

icon
W trakcie testowania algorytmu za bity magistrali, parametry projektu i funkcje agregujące podstawiane są domyślne wartości. Dla poszczególnych typów danych przyjmują następujące wartości

DateTime → DateTime.Now string → "Text" double → 1.0 int → 1; bool → true

Możesz zmienić domyślne wartości na formularzu, który zostanie wywołany po naciśnięciu przycisku Test.

image

W trakcie przetwarzania danych przez operator, jeżeli warunek będzie spełniony, strumień danych znajdzie się na magistrali wyjściowej górnej, w przypadku zaś niespełnienia warunku, strumień danych popłynie magistralą dolną. Na magistrali dolnej dodawany jest bit__ifResult__ przechowujący rezultat wykonania warunku dla rekordu.

icon
Ponieważ operator działa bezpośrednio na rekordach magistrali wejściowej, jeśli na magistrali nie znajduje się żaden rekord, to operator nie może wykonać żadnego działania sprawdzenia warunku. W takim wypadku niezależnie od wprowadzonego warunku zawsze przekieruje proces przetwarzania na magistralę wyjściową dolną (false) - nie dotyczy trybu Single executed, w którym zawsze zostanie wykonane jedno sprawdzenie warunku.