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.
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.
- 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
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ę.
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.
Rekordy spełniające warunek zostaną przekierowane na magistralę górną pozostałe na dolną magistralę.
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.
Po wprowadzeniu warunku możesz przetestować jego działanie przyciskiem Test.
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.
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.