Promotic

GetStateData - metoda obiektu PmaAlarmGroup

Opis:
Uzyska dane z aktualnego stanu alarmów , które odpowiadają określonemu tekstu fitra.
Składnia:
Array GetStateData(String sColumns, String sFilter)
Parametry:
sColumns(String) Lista identyfikatorów żądanych kolumn (właściwości) alarm pozycji, oddzielone przecinkiem, np. "Desc,TimeOn,TimeOff,TimeAck".
"TimeOn" - Czas aktywacji
"TimeOff" - Czas deaktywacji
"TimeAck" - Czas pokwitowania
"GlobalId" - Identyfikator alarm pozycji w grupie
"Priority" - Priorytet alarm pozycji
0 - niski
1
2
3
4
5 - średni
6
7
8
9
10 - wysoki
"Area" - Zaznaczenie obszarualarm pozycji
"Source" - Zaznaczenie źródła alarm pozycji
"Desc" - Opis alarm pozycji
"Comment" - Komentarz alarm pozycji
"UserNote" - Notatka: użytkownika alarm pozycji
"AckerId" - Identyfikator użytkownika potwierdzającego
sFilter(String) Tekst filtra określający, które alarmy mają być zawarte w określonym wyniku.
Różne pola filtra mogą być użyte także równocześnie, w takim przypadku alarm musi odpowiadać wszystkim (np. "desc:FIQ100;priority.ge:5;").
Tekst filtra xx nie może być pusty łańcuch (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 wprowadzić 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 wprowadzić 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 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 można zastosować oba typy pól filtra jednocześnie. żeby alarm 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) - (tylko stany) Wyświetlać alarmy, których stan (state) jest zgodny ze stanem xx. Można określić nawet kilka stanów (oddzielone przecinkiem). Na przykład "state:3,2,1;".
"hoot:xx;" (opcjonalne) - (tylko stany) 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 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 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 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 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 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 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 przeglądarce. Na przykład "comment:korekta;" lub "comment:#eq:korekta;" lub "comment:#eq:korekta#or:test;" 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 przeglądarce. Na przykład "s.comment:korekta;" lub "s.comment:#eq:korekta;" lub "s.comment:#eq:korekta#or:test;" lub "s.comment:#begin:korekta;".
"s.usernote:#oper:xx;" (opcjonalne) - Wyświetlać alarmy, których notatka (usernote) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w alarm przeglądarce. Na przykład "s.usernote:korekta;" lub "s.usernote:#eq:korekta;" lub "s.usernote:#eq:korekta#or:test;" lub "s.usernote:#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 przeglądarce. Na przykład "priority:5;" lub "priority:#eq:5;" lub "priority:#le:5;" lub "priority:#ge:5;".
"from:xx;" (opcjonalne) - (tylko historia) Wyświetlać alarmy, których czas powstania (timeon) jest większe lub równe czasu "xx". Czas określa się w formie time(YYYY.MM.DD-hh:mm:ss.mmm), np. "from:time(2022.07.28-14:30:00.000);". Zakres czasu umożliwia ograniczyć przeszukiwaną część alarmów (alarmy poza zakres czasu nie są testowane).
"to:xx;" (opcjonalne) - (tylko historia) Wyświetlać alarmy, których czas powstania (timeon) jest mniejsze lub równe czasu "xx". Czas określa się w formie time(YYYY.MM.DD-hh:mm:ss.mmm), np. "to:time(2022.07.28-15:00:00.000);". Czas to można wprowadzić również przy pomocy słowa kluczowego now, które zaznacza do aktualnego czasu (w momencie wywołania), np. to:now. Zakres czasu umożliwia ograniczyć przeszukiwaną część alarmów (alarmy poza zakres czasu nie są testowane).
"timerange:xx;" (opcjonalne) - (tylko historia) Wyświetlać alarmy, których czas powstania (timeon) znajduje się w zakresu 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 zakresu czasu. Zakres 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 zakres czasu nie są testowane).
Zakres czasu można wprowadzić 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) - (tylko historia) 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) - (tylko historia) 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 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.
"scanstart:xx;" (opcjonalne) - (tylko historia) Umożliwia zmienić domyślny kierunek przeszukiwania (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ć także 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 oraz to oraz jeżeli jest konieczne zmienić kierunek przeszukiwania od starszych do nowszych (scanstart:start;).
"lang:xx;" (opcjonalne) - (tylko skryptowe metody) Określa język, dla którego zostaną obliczone 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ęzyk aplikacji - standardowo nie jest konieczne określenie tej opcji. Patrz konfigurator "Główny język runtime".
"headers:xx;" (opcjonalne) - (tylko skryptowe metody) Określa, czy lista wyjściowa będzie zawierać (pierwszy oraz/lub drugi wiersz) także nazwy kolumn (lokalizowane teksty) dla dalszego wyświetlenia.
title - Pierwszy/drugi wiersz listy wyjściowej będzie zawierać nazwy kolumn (lokalizowane teksty) 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 ma tendencję przeszukiwać oraz testować stany wsyastkich istniejących alarmów (ale nie ich historii).
W odróżnieniu od historii alarmów, gdzie podczas przeszukiwania należy przejść dużą ilość danych na dysku, przy stanie istniejących alarmó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, jest konieczne zapytanie (kryterium fitra) ograniczyć do mniejszej części alarmów. Ograniczenie można uzyskać poprzez określenie przedziału czasu, kiedy to są przeszukiwane i testowane tylko pozycje określonego przedziału czasu. Następne ograniczenie można uzyskać przy pomocy określenia żądanej ilości znalezionych alarmów jak również maksymalnej ilości przeszukiwanych alarmów. Przy ograniczonej części alarmó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, dzięki ograniczenia pozycji aplikacji.
Przykład1:
Uzyska ostatnich (najnowszych) 50 alarmów records:50;scanrecords:500; (wartości żądanych kolumn), spełniających kryterium filtra (desc:Test2;).
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var oAl = pMe.Pm("/Alarm");
var a = oAl.GetStateData("Desc,TimeOn,TimeOff,TimeAck", "desc:Test2;records:50;scanrecords:500;");
Przykład2:
Uzyska wszystkie alarmy (wartości żądanych kolumn), spełniające kryterium filtra (desc:Test2;). Uzyska również nazwy kolumn w pierwszym wierszu.
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var oAl = pMe.Pm("/Alarm");
var a = oAl.GetStateData("Desc,TimeOn,TimeOff,TimeAck", "desc:Test2;lang:en;headers:title;");

Historia:
Pm8.02.11: jeżeli nie jest określony kierunek (nie jest określony parametr from lub to) wtedy zapisane rekordy są zwracane od najnowszych do najstarszych - według dokumentacja. Kierunek można wprowadzić przy pomocy parametru scanstart.
© MICROSYS, spol. s r. o.