Promotic
WikipediaLinkedInYoutubeTwitterFacebook

GetStateData - metoda obiektu PmAlarmEvent

Opis:
Uzyska dane z aktualnego stanu alarmów , które odpowiadają określonemu tekstu fitra.
Składnia:
GetStateData(sColumns As String, sFilter As String) As Array
Wołanie:
a = oAlEv.GetStateData(sColumns, sFilter)
Parametry:
sColumns(String) Lista identyfikatorów żądanych kolumn (właściwości) alarm/event pozycji, oddzielonych przecinkiem (,), np. "Desc,TimeOn,TimeOff,TimeAck".
"TimeOn" - Czas aktywacji
"TimeOff" - Czas deaktywacji
"TimeAck" - Czas pokwitowania
"GlobalId" - Identyfikator alarm/event pozycji w grupie
"Priority" - Priorytet alarm/event pozycji
0 - niski
5 - średni
10 - wysoki
"Area" - Zaznaczenie obszaru alarm/event pozycji
"Source" - Zaznaczenie źródła alarm/event pozycji
"Desc" - Opis alarm/event pozycji
"Comment" - Komentarz alarm/event pozycji
"UserNote" - Notatka użytkownika alarm/event pozycji
"AckerId" - Identyfikacja użytkownika potwierdzającego
sFilter(String) Tekst filtra określający, które alarmy/eventy mają być zawarte w określonym wyniku.

Różne pola filtra mogą być użyte także równocześnie, w takim przypadku alarm/event musi odpowiadać wszystkim (np. "desc:FIQ100;priority.ge:5;").

Tekst filtra xx nie może być pusty (np. nie można wpisać "desc:;").

Dane są tutaj w formacie KeyVal, na przykład "state:3;desc:Test2;records:50;".

 

Istnieją następujące rodzajy tekstów filtrowania ("field" przedstawia niektórą kolumnę alarmów):

"field:xx;" oznacza, że odpowiednie pole alarmu musi być równe wartości xx.
"field:#eq:xx;" oznacza, że odpowiednie pole alarmu musi być równe wartości xx. Jeżeli odpowiednie pole alarmu ma być równe jednemu z kilku tekstów, wtedy można wprowadzić kilka tekstów oddzielonych #or:.
"field:#begin:xx;" oznacza, że odpowiednie pole alarmu musi rozpoczynać się na tekst xx. Jeżeli odpowiednie pole alarmu ma rozpoczynać się na niektóry z kilku tekstów, wtedy można wprowadzać kilka tekstów oddzielonych #or:.
"field:#in:xx;" oznacza, że odpowiednie pole alarmu musi wewnątrz zawierać tekst xx. Jeżeli odpowiednie pole alarmu ma zawierać niektóry z kilku tekstów, wtedy można wprowadzać kilka tekstów oddzielonych #or:.
"field:#le:xx;" oznacza, że odpowiednie pole alarmu musi być mniejsze lub równe liczbie xx.
"field:#ge:xx;" oznacza, że odpowiednie pole alarmu musi być większe lub równe liczbie xx.
 

Notatka! Jeżeli pole rozpoczyna się tekstem s., wtedy chodzi o wybór ukryty końcowemu użytkownikowi w alarm/event przeglądarce oraz służy do ustawienia stałego filtra skryptem bez względu na ustawienia części filtra użytkownika. Dla jednej kolumny mogą zostać wykorzystane oba typy pól filtra jednocześnie. żeby alarm/event był odpowiedni, musi odpowiadać obu polom filtra. To można wykorzystać do ustawienia stałego filtra skryptem (bez możliwości ingerencji końcowym użytkownikiem) a równocześnie ustawić również stan początkowy filtra użytkownika (z możliwością ingerencji końcowym użytkownikiem). Na przykład s.source:#begin:Kociol;source:Kociol1;.

 
"state:xx;" (opcjonalne) - Wyświetlać alarmy, których stan (state) jest zgodny ze stanem xx. Można uruchomić nawet kilka stanów oddzielonych przecinkiem. Na przykład "state:3,2,1;".
"hoot:xx;" (opcjonalne) - Wyświetlać alarmy, na podstawie dźwięku, gdzie xx:
0 = alarmy bezdźwięczne
1 = alarmy dźwięczne
"area:#oper:xx;" (opcjonalne) - Wyświetlać alarmy, których obszar (area) spełnia daną operację #oper:xx. Część filtra bez możliwości ingerencji użytkownika końcowego w alarm/event przeglądarce. Na przykład "area:Kotlownia1;" lub "area:#eq:Kotlownia1;" lub "area:#eq:Kotlownia1#or:Kotlownia2;" lub "area:#begin:Kotlownia;".
"s.area:#oper:xx;" (opcjonalne) - Wyświetlać alarmy, których obszar (area) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w alarm/event przeglądarce. Na przykład "s.area:Kotlownia1;" lub "s.area:#eq:Kotlownia1;" lub "s.area:#eq:Kotlownia1#or:Kotlownia2;" lub "s.area:#begin:Kotlownia;".
"source:#oper:xx;" (opcjonalne) - Wyświetlać alarmy, których źródło (source) spełnia daną operację #oper:xx. Część filtra bez możliwości ingerencji użytkownika końcowego w alarm/event przeglądarce. Na przykład "source:Kociol;" lub "source:#eq:Kociol;" lub "source:#eq:Kociol1#or:Kociol2;" lub "source:#begin:Kociol;".
"s.source:#oper:xx;" (opcjonalne) - Wyświetlać alarmy, których źródło (source) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w alarm/event przeglądarce. Na przykład "s.source:Kociol;" lub "s.source:#eq:Kociol;" lub "s.source:#eq:Kociol1#or:Kociol2;" lub "s.source:#begin:Kociol;".
"desc:#oper:xx;" (opcjonalne) - Wyświetlać alarmy, których opis (desc) spełnia daną operację #oper:xx. Część filtra bez możliwości ingerencji użytkownika końcowego w alarm/event przeglądarce. Na przykład "desc:FIQ101;" lub "desc:#eq:FIQ101;" lub "desc:#eq:FIQ101#or:FIQ102;" lub "desc:#begin:FIQ;".
"s.desc:#oper:xx;" (opcjonalne) - Wyświetlać alarmy, których opis (desc) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w alarm/event przeglądarce. Na przykład "s.desc:FIQ101;" lub "s.desc:#eq:FIQ101;" lub "s.desc:#eq:FIQ101#or:FIQ102;" lub "s.desc:#begin:FIQ;".
"comment:#oper:xx;" (opcjonalne) - Wyświetlać alarmy, których komentarz (comment) spełnia daną operację #oper:xx. Część filtra bez możliwości ingerencji użytkownika końcowego w alarm/event przeglądarce. Na przykład "comment:korekta;" lub "comment:#eq:korekta;" lub "comment:#eq:korekta#or:próba;" lub "comment:#begin:korekta;".
"s.comment:#oper:xx;" (opcjonalne) - Wyświetlać alarmy, których komentarz (comment) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w alarm/event przeglądarce. Na przykład "s.comment:korekta;" lub "s.comment:#eq:korekta;" lub "s.comment:#eq:korekta#or:próba;" lub "s.comment:#begin:korekta;".
"priority:#oper:xx;" (opcjonalne) - Wyświetlać alarmy, których priorytet (priority) spełnia daną operację #oper:xx. Część filtra bez możliwości ingerencji użytkownika końcowego w alarm/event przeglądarce. Na przykład "priority:5;" lub "priority:#eq:5;" lub "priority:#le:5;" lub "priority:#ge:5;".
"from:xx;" (opcjonalne) - Wyświetlać alarmy, których czas powstania (timeon) jest większe lub równe czasu "xx". Czas wprowadza się w formacie time(YYYY.MM.DD-hh:mm:ss.mmm), np. "from:time(2017.07.28-14:30:00.000);". Zakres czasu umożliwia ograniczyć przeszukiwaną część alarmów (alarmy poza przedziałem czasu nie są testowane).
"to:xx;" (opcjonalne) - Wyświetlać alarmy, których czas powstania (timeon) jest mniejsze lub równe czasu "xx". Czas wprowadza się w formie time(YYYY.MM.DD-hh:mm:ss.mmm), np. "to:time(2017.07.28-15:00:00.000);". Czas to można również wprowadzić przy pomocy słowa kluczowego now, które zaznacza do aktualnego czasu (w momencie wołania), np. to:now. Zakres czasu umożliwia ograniczyć przeszukiwaną część alarmów (alarmy poza przedziałem czasu nie są testowane).
"timerange:xx;" (opcjonalne) - Wyświetlać alarmy, których czas powstania (timeon) znajduje się w przedziale czasu. Dla określenia przedziału czasu przy pomocy timerange, musi być określone from lub to, gdzie timerange umożliwia wyliczenie drugiej brakującej granicy przedziału czasu. Przedział czasu można więc wprowadzić przy pomocy nastąpującego: from - to, from - timerange lub to - timerange. Na przykład to:now;timerange:30m;. Zakres czasu umożliwia ograniczyć przeszukiwaną część alarmów (alarmy poza przedziałem czasu nie są testowane).

Zakres czasu wprowadza się w formie liczby całkowitej następowanej znakiem jednostki czasu (bez spacji). Jednostkami czasu są: w = tydzień, d = dzień, h = godzina, m = minuta, s = sekunda. Na przykład timerange:12h; lub timerange:90m;.

"records:xx;" (opcjonalne) - Umożliwia wprowadzić (ograniczyć) ilość żądanych alarmów, spełniających kryteria filtra. Po uzyskaniu wskazanej ilości znalezionych alarmów przeglądanie alarmów zakończy się. Wraz z określeniem przedziału czasu umożliwia ograniczać przeszukiwanie alarmów na ograniczoną część alarmów. Zwykły filtr by bowiem przeszukiwał wszystkie alarmy we wszystkich kopiach zapasowych. Z powodów praktycznych jest wskazane ograniczyć filtrowanie tylko na niezbędną oraz użyteczną część historii alarmów.
"scanrecords:xx;" (opcjonalne) - Umożliwia wprowadzić (ograniczyć) ilość wszystkich testowanych (przeglądanych) alarmów, bez względu na to, czy alarmy spełniają czy nie spełniają kryterium filtra. Po uzyskaniu wskazanej ilości testowanych alarmów przeglądanie alarmów zakończy się. Ta opcja zapobiega temu, by po nieznalezieniu żądanej ilości alarmów spełniających kryterium fitra, nieprzeszukiwano zbędnie dużo alarmów w historii. Wraz z określeniem przedziału czasu umożliwia ograniczać przeszukiwanie alarmów na ograniczoną część alarmów. Zwykły filtr by bowiem przeszukiwał wszystkie alarmy we wszystkich kopiach zapasowych. Z powodów praktycznych jest wskazane ograniczyć filtrowanie tylko na niezbędną oraz użyteczną część historii alarmów.
"scanstart:xx;" (opcjonalne) - Umożliwia zmienić domyślny kierunek przeszukiwania alarmów (skąd rozpocznie się przeszukiwanie). Wprowadza się w formie scanstart:from; lub scanstart:to;. Jeżeli zakres czasu nie jest w ogóle określony lub jeżeli jest wprowadzony to (może być i wspólnie z from lub z timerange), wtedy jest domyślny kierunek przeszukiwania od nowszych do starszych. Jeżeli jest wprowadzony tylko from (może być i wspólnie z timerange), wtedy jest domyślny kierunek przeszukiwania od starszych do nowszych. Używać scanstart ma sens zwłaszcza jeżeli zakres czasu jest wprowadzony przy pomocy from i to oraz jeżeli należy zmienić kierunek przeszukiwania na od starszych do nowszych alarmów (scanstart:start;).
"lang:xx;" (opcjonalne) - Określa język, dla którego będą analizowane lokalizowane teksty. Język jest określony przez identyfikator tekstowy, np. "pl", "en", "cs" itd. - patrz Języki z pełnym wsparciem w systemie PROMOTIC. Jeżeli nie jest ustawione, wtedy zastosuje się właśnie używany jęzak aplikacji - standardowo nie jest konieczne określenie tej opcji. Patrz konfigurator "Główny język runtime".
"headers:xx;" (opcjonalne) - Określa, czy lista wyjściowa będzie zawierać (pierwszy i/lub drugi wiersz) także lokalizowane nazwy kolumn dla dalszego wyświetlenia.
title - Pierwszy/drugi wiersz listy wyjściowej będzie zawierać lokalizowane nazwy kolumn dla dalszego wyświetlenia.
id - Pierwszy/drugi wiersz listy wyjściowej będzie zawierać systemowe nazwy kolumn (identyfikatory) dla dalszego wyświetlenia.
Notatka:
Implementacja filtrowania alarmów/eventów ma ma tendencję przeszukiwać oraz testować stany wsyastkich istniejących alarmów/eventów (ale nie ich historii). W odróżnieniu od historii alarmów/eventów, gdzie podczas przeszukiwania należy przejść dużą ilość danych na dysku, przy stanie istniejących alarmów/eventów istnieje przypuszczenie, że ich ilość jesz o wiele razy mniejsza i w dodatku są w pamięci operacyjnej, dlatego stosowanie następującej procedury w celu ograniczenia ilości elementów do skanowania nie jest tak konieczne. Żeby poprzez każde zapytanie nie były przeszukiwane wszystkie pozycje, należy zapytanie (kryterium fitra) ograniczyć do mniejszej części alarmów/eventów. Ograniczenie można uzyskać poprzez określenie przedziału czasu, kiedy to są przeszukiwane i testowane tylko elementy określonego przedziału czasu. Następne ograniczenie można uzyskać przy pomocy określenia żądanej ilości znalezionych alarmów/eventów jak również maksymalnej ilości przeszukiwanych alarmów/eventów. Przy ograniczonej części alarmów/eventów, które będą przeszukiwane, można określić kierunek przeszukiwania (scanstart), lecz wynik przeszukiwania jest zawsze uszeregowany tak samo. Zmiana kierunku przeszukiwania ma sens tylko jeżeli jest dodatkowo uzupełniona o ograniczenie żądanej ilości przeszukiwanych (scanrecords) lub znalezionych pozycji (records). Wtedy kierunek ma sens, ponieważ określa, po której stronie przedziału czasu mogą ewentualnie brakować alarmy/eventy, dzięki ograniczenia pozycji aplikacji.

Dla eventów nie ma sensu (tylko dla alarmów).

Przykład1:
Uzyskanie ostatnich (najnowszych) 50 alarmów records:50;scanrecords:500; (wartości żądanych kolumn), spełniających kryterium filtra (desc:Test2;).
VBScriptWybierz oraz skopiuj do schowka

a = oAlEv.GetStateData("Desc,TimeOn,TimeOff,TimeAck", "desc:Test2;records:50;scanrecords:500;")
Przykład2:
Uzyskanie wszystkich alarmów (wartości żądanych kolumn), spełniających kryterium filtra (desc:Test2;). Również uzyskać nazwy kolumn w pierwszym wierszu.
VBScriptWybierz oraz skopiuj do schowka

a = oAlEv.GetStateData("Desc,TimeOn,TimeOff,TimeAck", "desc:Test2;lang:en;headers:title;")
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice