Promotic

GetHistoryData - metoda obiektu PmaEventGroup

Opis:
Uzyska dane z historii eventó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) event pozycji (oddzielone przecinkiem), na przykład "Desc,TimeOn,TimeOff,TimeAck".
"TimeOn" - Czas aktywacji
"GlobalId" - Identyfikator event pozycji w grupie
"Priority" - Priorytet event pozycji
0 - niski
1
2
3
4
5 - średni
6
7
8
9
10 - wysoki
"Area" - Zaznaczenie obszaru event pozycji
"Source" - Zaznaczenie źródła event pozycji
"Desc" - Opis event pozycji
"Comment" - Komentarz event pozycji
"UserNote" - Notatka użytkownika event pozycji
sFilter(String) Tekst filtra określający, które eventy mają być zawarte w określonym wyniku.
Różne pola filtra mogą być użyte także równocześnie, w takim przypadku event 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 "desc:Test2;records:50;".
 
Istnieją następujące rodzajy tekstów filtrowania ("field" przedstawia niektórą kolumnę eventów):
"field:xx;" oznacza, że odpowiednie pole eventu musi być równe wartości xx.
"field:#eq:xx;" oznacza, że odpowiednie pole eventu musi być równe wartości xx. Jeżeli odpowiednie pole eventu 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 eventu musi rozpoczynać się na tekst xx. Jeżeli odpowiednie pole eventu 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 eventu musi wewnątrz zawierać tekst xx. Jeżeli odpowiednie pole eventu ma zawierać niektóry z kilku tekstów, wtedy można wprowadzić kilka tekstów oddzielonych #or:.
"field:#le:xx;" oznacza, że odpowiednie pole eventu musi być mniejsze lub równe liczbie xx.
"field:#ge:xx;" oznacza, że odpowiednie pole eventu 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 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 można zastosować oba typy pól filtra jednocześnie. żeby 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;.
 
"area:#oper:xx;" (opcjonalne) - Wyświetlać eventy, których obszar (area) spełnia daną operację #oper:xx. Część filtra bez możliwości ingerencji użytkownika końcowego w 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ć eventy, których obszar (area) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w 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ć eventy, których źródło (source) spełnia daną operację #oper:xx. Część filtra bez możliwości ingerencji użytkownika końcowego w 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ć eventy, których źródło (source) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w 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ć eventy, których opis (desc) spełnia daną operację #oper:xx. Część filtra bez możliwości ingerencji użytkownika końcowego w 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ć eventy, których opis (desc) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w 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ć eventy, których komentarz (comment) spełnia daną operację #oper:xx. Część filtra bez możliwości ingerencji użytkownika końcowego w event 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ć eventy, których komentarz (comment) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w event 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ć eventy, których notatka (usernote) spełnia daną operację #oper:xx. Część filtra ukryta użytkownikowi końcowemu w event 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ć eventy, których priorytet (priority) spełnia daną operację #oper:xx. Część filtra bez możliwości ingerencji użytkownika końcowego w 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ć eventy, 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ęść eventów (eventy poza zakres czasu nie są testowane).
"to:xx;" (opcjonalne) - Wyświetlać eventy, 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ęść eventów (eventy poza zakres czasu nie są testowane).
"timerange:xx;" (opcjonalne) - Wyświetlać eventy, 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ęść eventów (eventy 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) - Umożliwia wprowadzić (ograniczyć) ilość żądanych eventów, spełniających kryteria filtra. Po uzyskaniu wskazanej ilości znalezionych eventów przeglądanie eventów zakończy się.
Wraz z określeniem przedziału czasu umożliwia ograniczać przeszukiwanie eventów na ograniczoną część eventów. Zwykły filtr by bowiem przeszukiwał wszystkie eventy we wszystkich kopiach zapasowych. Z powodów praktycznych jest wskazane ograniczyć filtrowanie tylko na niezbędną oraz użyteczną część historii eventów.
"scanrecords:xx;" (opcjonalne) - Umożliwia wprowadzić (ograniczyć) ilość wszystkich testowanych (przeglądanych) eventów, bez względu na to, czy eventy spełniają czy nie spełniają kryterium filtra. Po uzyskaniu wskazanej ilości testowanych eventów przeglądanie zakończy się. Ta opcja zapobiega temu, by po nieznalezieniu żądanej ilości eventów spełniających kryterium fitra, nieprzeszukiwano zbędnie dużo eventó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 event pozycji ma tendencję przeszukiwać oraz testować wszystkie dostępne eventy w historii.
Żeby poprzez każde zapytanie nie były przeszukiwane wszystkie pozycje, jest konieczne zapytanie (kryterium fitra) ograniczyć do mniejszej części eventó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 event pozycji jak również maksymalnej ilości przeszukiwanych event pozycji. Przy ograniczonej części 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ć eventy, dzięki ograniczenia pozycji aplikacji.
Przykład1:
Uzyska ostatnich (najnowszych) 50 eventów records:50;scanrecords:500; (wartości żądanych kolumn), spełniających kryterium filtra (desc:Test2;).
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var oEv = pMe.Pm("/Event");
var a = oEv.GetHistoryData("Desc,TimeOn,TimeOff,TimeAck", "desc:Test2;records:50;scanrecords:500;");
Przykład2:
Uzyska wszystkich eventów (wartości żądanych kolumn), spełniających kryterium filtra (desc:Test2;) w przeciągu ostatnich 8 godzin (timerange:8h;) względem określonego czasu (to:time(2022.07.20-06:00:00.000);) oraz z ograniczeniem do maksymalnej ilości przeszukiwanych i zwróconych zapisów records:50;scanrecords:500;. Również uzyskać nazwy kolumn w pierwszym wierszu.
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var oEv = pMe.Pm("/Event");
var a = oEv.GetHistoryData("Desc,TimeOn,TimeOff,TimeAck", "desc:Test2;to:time(2022.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.