Promotic
WikipediaLinkedInYoutubeTwitterFacebook

GetHistoryData - metoda objektu PmAlarmEvent

Popis:
Získání dat z historie alarmů/eventů, které vyhovují zadanému filtračnímu textu.
Syntaxe:
GetHistoryData(sColumns As String, sFilter As String) As Array
Volání:
a = oAlEv.GetHistoryData(sColumns, sFilter)
Parametry:
sColumns(String) Seznam identifikátorů požadovaných sloupců (vlastností) alarm/event položek, oddělených čárkou (,), například "Desc,TimeOn,TimeOff,TimeAck".
"TimeOn" - Čas aktivace
"TimeOff" - Čas deaktivace
"TimeAck" - Čas kvitace
"GlobalId" - Identifikátor alarm/event položky ve skupině
"Priority" - Priorita alarm/event položky
0 - nízká
5 - střední
10 - vysoká
"Area" - Označení oblasti alarm/event položky
"Source" - Označení zdroje alarm/event položky
"Desc" - Popis alarm/event položky
"Comment" - Komentář alarm/event položky
"UserNote" - Uživatelská poznámka alarm/event položky
"AckerId" - Identifikace kvitujícího uživatele
sFilter(String) Filtrační text určující, které alarmy/eventy se mají zahrnovat do požadovaného výsledku.

Různá filtrační pole mohou být použita i zároveň, alarm/event potom musí vyhovavat všem (např. "desc:FIQ100;priority.ge:5;").

Filtrační text xx nesmí být prázdný (např. nelze zadat "desc:;").

Údaje s přiřazenou hodnotou jsou zde odděleny středníkem, například "desc:Test2;records:50;".
 

Existují následující druhy filtračních textů ("field" představuje některý sloupec alarmů):

"field:xx;" znamená, že příslušné pole alarmu se musí rovnat hodnotě xx.
"field:#eq:xx;" znamená, že příslušné pole alarmu se musí rovnat hodnotě xx. Pokud se má příslušné pole alarmu rovnat jednomu z několika textů, lze uvést více textů oddělených #or: (operátor NEBO).
"field:#begin:xx;" znamená, že příslušné pole alarmu musí začínat textem xx. Pokud má příslušné pole alarmu začínat na některý z několika textů, lze uvést více textů oddělených #or: (operátor NEBO).
"field:#in:xx;" znamená, že příslušné pole alarmu musí uvnitř obsahovat text xx. Pokud má příslušné pole alarmu obsahovat některý z několika textů, lze uvést více textů oddělených #or: (operátor NEBO).
"field:#le:xx;" znamená, že příslušné pole alarmu musí být menší nebo rovno číslu xx.
"field:#ge:xx;" znamená, že příslušné pole alarmu musí být větší nebo rovno číslu xx.
 
Poznámka! Pokud pole začíná textem s., potom se jedná o volbu skrytou koncovému uživateli v prohlížečce alarmů/eventů a slouží k nastavení pevné filtrace skriptem bez ohledu na nastavení uživatelské části filtru. Pro stejný sloupec mohou být současně použité oba typy filtračních polí současně. Aby alarm/event vyhověl, musí vyhovět oběma filtračním polím. Toho lze s výhodou využít k nastavení pevné filtrace skriptem (neovlivnitelné koncovým uživatelem) a současně nastavit i počáteční stav uživatelské filtrace (měnitelnou koncovým uživatelem). Například s.source:#begin:Kotel;source:Kotel1;.
 
"area:#oper:xx;" (nepovinné) - Zobrazovat alarmy, jejichž oblast (area) splňuje danou operaci #oper:xx. Část filtru měnitelná koncovým uživatelem v prohlížečce alarmů/eventů. Například "area:Kotelna1;" nebo "area:#eq:Kotelna1;" nebo "area:#eq:Kotelna1#or:Kotelna2;" nebo "area:#begin:Kotelna;".
"s.area:#oper:xx;" (nepovinné) - Zobrazovat alarmy, jejichž oblast (area) splňuje danou operaci #oper:xx. Část filtru skrytá koncovému uživateli v prohlížečce alarmů/eventů. Například "s.area:Kotelna1;" nebo "s.area:#eq:Kotelna1;" nebo "s.area:#eq:Kotelna1#or:Kotelna2;" nebo "s.area:#begin:Kotelna;".
"source:#oper:xx;" (nepovinné) - Zobrazovat alarmy, jejichž zdroj (source) splňuje danou operaci #oper:xx. Část filtru měnitelná koncovým uživatelem v prohlížečce alarmů/eventů. Například "source:Kotel;" nebo "source:#eq:Kotel;" nebo "source:#eq:Kotel1#or:Kotel2;" nebo "source:#begin:Kotel;".
"s.source:#oper:xx;" (nepovinné) - Zobrazovat alarmy, jejichž zdroj (source) splňuje danou operaci #oper:xx. Část filtru skrytá koncovému uživateli v prohlížečce alarmů/eventů. Například "s.source:Kotel;" nebo "s.source:#eq:Kotel;" nebo "s.source:#eq:Kotel1#or:Kotel2;" nebo "s.source:#begin:Kotel;".
"desc:#oper:xx;" (nepovinné) - Zobrazovat alarmy, jejichž popis (desc) splňuje danou operaci #oper:xx. Část filtru měnitelná koncovým uživatelem v prohlížečce alarmů/eventů. Například "desc:FIQ101;" nebo "desc:#eq:FIQ101;" nebo "desc:#eq:FIQ101#or:FIQ102;" nebo "desc:#begin:FIQ;".
"s.desc:#oper:xx;" (nepovinné) - Zobrazovat alarmy, jejichž popis (desc) splňuje danou operaci #oper:xx. Část filtru skrytá koncovému uživateli v prohlížečce alarmů/eventů. Například "s.desc:FIQ101;" nebo "s.desc:#eq:FIQ101;" nebo "s.desc:#eq:FIQ101#or:FIQ102;" nebo "s.desc:#begin:FIQ;".
"comment:#oper:xx;" (nepovinné) - Zobrazovat alarmy, jejichž komentář (comment) splňuje danou operaci #oper:xx. Část filtru měnitelná koncovým uživatelem v prohlížečce alarmů/eventů. Například "comment:oprava;" nebo "comment:#eq:oprava;" nebo "comment:#eq:oprava#or:test;" nebo "comment:#begin:oprava;".
"s.comment:#oper:xx;" (nepovinné) - Zobrazovat alarmy, jejichž komentář (comment) splňuje danou operaci #oper:xx. Část filtru skrytá koncovému uživateli v prohlížečce alarmů/eventů. Například "s.comment:oprava;" nebo "s.comment:#eq:oprava;" nebo "s.comment:#eq:oprava#or:test;" nebo "s.comment:#begin:oprava;".
"priority:#oper:xx;" (nepovinné) - Zobrazovat alarmy, jejichž priorita (priority) splňuje danou operaci #oper:xx. Část filtru měnitelná koncovým uživatelem v prohlížečce alarmů/eventů. Například "priority:5;" nebo "priority:#eq:5;" nebo "priority:#le:5;" nebo "priority:#ge:5;".
"from:xx;" (nepovinné) - Zobrazovat alarmy, jejichž čas vzniku (timeon) je větší nebo rovno času "xx". Čas se zadává tvaru time(YYYY.MM.DD-hh:mm:ss.mmm), např. from:time(2016.07.28-14:30:00.000); Časový interval umožňuje omezit prohledávanou část alarmů (alarmy mimo časový interval se netestují).
"to:xx;" (nepovinné) - Zobrazovat alarmy, jejichž čas vzniku (timeon) je menší nebo rovno času "xx". Čas se zadává tvaru time(YYYY.MM.DD-hh:mm:ss.mmm), např. to:time(2016.07.28-15:00:00.000);. Čas to lze zadat i klíčovým slovem now, které znamená do aktualního času (v okamžiku volání), např. to:now. Časový interval umožňuje omezit prohledávanou část alarmů (alarmy mimo časový interval se netestují).
"timerange:xx;" (nepovinné) - Zobrazovat alarmy, jejichž čas vzniku (timeon) leží v zadaném časovém intervalu. Pro určení časového intervalu pomocí timerange, musí být zadané buď from nebo to, kde timerange umožňuje dopočítat druhou chybějící časovou mez časového intervalu. Časový interval lze tedy zadat pomocí následujících dvojic: from - to, from - timerange nebo to - timerange. Například to:now;timerange:30m;. Časový interval umožňuje omezit prohledávanou část alarmů (alarmy mimo časový interval se netestují).

Časový rozsah se zadáva ve tvaru celého čísla následovaného znakem časové jednotky (bez mezery). Časové jednotky jsou: w = týden, d = den, h = hodina, m = minuta, s = sekunda. Například timerange:12h; nebo timerange:90m;.

"records:xx;" (nepovinné) - Umožňuje zadat (omezit) počet požadovaných alarmů, splňujících filtrační kritéria. Po dosažení zadaného počtu nalezených alarmů se prohledávání alarmů ukončí. Spolu s určením časového intervalu umožňuje omezovat prohledávaní alarmů na omezenou část alarmů. Normální filtrace by totiž procházela všechny alarmy ve všech zálohách. Z praktických důvodů je tedy vhodné filtraci omezit pouze na nutnou a užitečnou část historie alarmů.
"scanrecords:xx;" (nepovinné) - Umožňuje zadat (omezit) počet všech testovaných (procházených) alarmů, bez ohledu na to, zda alarmy splňují nebo nesplňují filtrační kritérium. Po dosažení zadaného počtu testovaných alarmů se prohledávání alarmů ukončí. Tato volba zabrání, aby se při nenalezení požadovaného počtu alarmů splňujích filtrační kritérium, neprohledávalo zbytečně mnoho alarmů v historii. Spolu s určením časového intervalu umožňuje omezovat prohledávaní alarmů na omezenou část alarmů. Normální filtrace by totiž procházela všechny alarmy ve všech zálohách. Z praktických důvodů je tedy vhodné filtraci omezit pouze na nutnou a užitečnou část historie alarmů.
"scanstart:xx;" (nepovinné) - Umožňuje změnit implicitní směr prohledávaní alarmů (odkud se začne s prohledávaním). Zadává se ve tvaru scanstart:from; nebo scanstart:to;. Pokud není časový interval vůbec určen nebo pokud je zadán to (může být i společně s from nebo s timerange), potom je implicitní směr prohledávaní od novějších ke starším. Pokud je zadán pouze from (může být i společně s timerange), potom je implicitní směr prohledávaní od starších k novějším. Používat scanstart má smysl zejména, pokud je časový interval zadán pomocí from a to a pokud je nutno změnit směr prohledávaní na od starších k mladším alarmům (scanstart:start;).
"lang:xx;" (nepovinné) - Určuje jazyk, pro který budou vyhodnocené lokalizované texty. Jazyk je určen textovým identifikátorem, např. "cs", "sk", "en" atd. - viz Jazyky s plnou podporou v systému PROMOTIC. Neuvede-li se, použije se právě používaný jazyk aplikace - normálně se tedy tato volba nemusí zadávat. Viz konfigurátor "Hlavní jazyk runtime".
"headers:xx;" (nepovinné) - Určuje, zda výsledný seznam bude obsahovat (první a/nebo druhý řádek) i lokalizované názvy sloupců pro následné zobrazení.
title - První/druhý řádek výsledného seznamu bude obsahovat lokalizované názvy sloupců pro následné zobrazení.
id - První/druhý řádek výsledného seznamu bude obsahovat systémové názvy sloupců (identifikátory) pro následné zobrazení.
Poznámka:
Implementace filtrace položek alarmů/eventů má tendenci prohledávat a testovat všechny dostupné alarmy/eventy v historii. Aby se s každým dotazem neprohlédavaly úplně všechny položky, je nutno dotaz (filtrační kritérium) omezit na menší část alarmů/eventů. Omezení lze dosáhnout jednak pomocí zadaného časového intervalu, kdy se prohlédavají a testují pouze položky z tohoto intervalu. Další omezení je možné docílit pomocí zadání počtu požadovaných nalezených alarmů/eventů a také pomocí maximálního počtu prohlédávaných alarmů/eventů. U omezené části alarmů/eventů, která se bude prohledávat, je možno určit směr prohledávaní (scanstart), nicméně výsledek prohledávaní je vždy setříděný stejně. Změna směru prohledávaní má tedy smysl pouze tehdy, pokud je navíc ještě doplněna omezením požadovaného počtu prohledávaných (scanrecords) nebo nalezených (records) položek. Potom má směr prohledávaní smysl, protože určuje, na které straně časového intervalu mohou případně chybět alarmy/eventy, díky aplikaci omezením položek.
Příklad1:
Získaní posledních (nejnovějších) 50 alarmů records:50;scanrecords:500; (hodnot požadovaných sloupců), splňujících filtrační kritérium (desc:Test2;).
a = oAlEv.GetHistoryData("Desc,TimeOn,TimeOff,TimeAck", "desc:Test2;records:50;scanrecords:500;")
Příklad2:
Získaní všech alarmů (hodnot požadovaných sloupců), splňujících filtrační kritérium (desc:Test2;) za posledních 8 hodin (timerange:8h;) vzhledem k zadanému času (to:time(2016-07-20_06:00:00.000);) a s omezením na maximální počet prohledávaných a vracených vět records:50;scanrecords:500;. Získat i anglické názvy sloupců v prvním řádku.
a = oAlEv.GetHistoryData("Desc,TimeOn,TimeOff,TimeAck", "desc:Test2;to:time(2016-07-20_06:00:00.000);timerange:8h;records:50;scanrecords:500;lang:en;headers:title;")
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice