Promotic

GetHistoryData - metoda obiektu PmaAlarmGroup

Opis:
Uzyska dane z historii alarmów , które odpowiadają określonemu tekstu fitra.
Składnia:
Array GetHistoryData(String sColumns, String sFilter)
Parametry:
sColumns(String) Lista identyfikatorów żądanych kolumn (właściwości) alarm pozycji (oddzielone przecinkiem), na przykład "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 ustawić "desc:;").
Dane są tutaj w formacie KeyVal, na przykład "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 przeglądarce alarmów oraz służy do ustawienia stałego filtra skryptem niezależnie na ustawienia części filtra użytkownika. Dla jednej kolumny można zastosować oba typy pól filtra równocześ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;.
 
"area:#oper:xx;" (opcjonalne) - Wyświetli alarmy, których obszar (area) spełnia daną operację #oper:xx. Część filtra bez możliwości ingerencji użytkownika końcowego w przeglądarce alarmów.
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świetli alarmy, których obszar (area) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w przeglądarce alarmów.
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świetli 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 przeglądarce alarmów.
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świetli alarmy, których źródło (source) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w przeglądarce alarmów.
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świetli alarmy, których opis (desc) spełnia daną operację #oper:xx. Część filtra bez możliwości ingerencji użytkownika końcowego w przeglądarce alarmów.
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świetli alarmy, których opis (desc) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w przeglądarce alarmów.
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świetli alarmy, których komentarz (comment) spełnia daną operację #oper:xx. Część filtra bez możliwości ingerencji użytkownika końcowego w przeglądarce alarmów.
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świetli alarmy, których komentarz (comment) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w przeglądarce alarmów.
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świetli alarmy, których notatka (usernote) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w przeglądarce alarmów.
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świetli alarmy, których priorytet (priority) spełnia daną operację #oper:xx. Część filtra bez możliwości ingerencji użytkownika końcowego w przeglądarce alarmów.
Na przykład "priority:5;" lub "priority:#eq:5;" lub "priority:#le:5;" lub "priority:#ge:5;".
"from:xx;" (opcjonalne) - (tylko historia) Wyświetli 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(2023.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świetli 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(2023.07.28-15:00:00.000);".
Czas to można wprowadzić również przy pomocy słowa kluczowego now, które oznacza 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świetli 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ę. Opcja ta 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.
Wartość zwrotna:
obiekt PmArray dla JavaScript lub typ danych Array dla VBScript.
Notatka:
Implementacja filtrowania alarm pozycji ma tendencję przeszukiwać oraz testować wszystkie dostępne alarmy w historii.
Ż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 pozycji jak również maksymalnej ilości przeszukiwanych alarm pozycji. 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.GetHistoryData("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;) w przeciągu ostatnich 8 godzin (timerange:8h;) względem określonego czasu (to:time(2023.07.20-06:00:00.000);) oraz z ograniczeniem do maksymalnej ilości przeszukiwanych i zwróconych zapisów records:50;scanrecords:500;.
Uzyska również angielskie nazwy kolumn w pierwszym wierszu.
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var oAl = pMe.Pm("/Alarm");
var a = oAl.GetHistoryData("Desc,TimeOn,TimeOff,TimeAck", "desc:Test2;to:time(2023.07.20-06:00:00.000);timerange:8h;records:50;scanrecords:500;lang:en;headers:title;");

Historia:
Pm9.00.01: Usunięty błąd: Niepotrafiła przeszukać więcej kopii zapasowych (jeżeli nie była określona ilość rekordów "records:xx;").
© MICROSYS, spol. s r.o.