Promotic

GetHistoryData - metoda objektu PmaAlarmGroup

Popis:
Získá data z historie alarmů , které vyhovují zadanému filtračnímu textu.
Syntaxe:
Array GetHistoryData(String sColumns, String sFilter)
Parametry:
sColumns(String) Seznam identifikátorů požadovaných sloupců (vlastností) alarm položek (oddělené čárkou), například "Desc,TimeOn,TimeOff,TimeAck".
"TimeOn" - Čas aktivace
"TimeOff" - Čas deaktivace
"TimeAck" - Čas kvitace
"GlobalId" - Identifikátor alarm položky ve skupině
"Priority" - Priorita alarm položky
0 - nízká
1
2
3
4
5 - střední
6
7
8
9
10 - vysoká
"Area" - Označení oblasti alarm položky
"Source" - Označení zdroje alarm položky
"Desc" - Popis alarm položky
"Comment" - Komentář alarm položky
"UserNote" - Uživatelská poznámka alarm položky
"AckerId" - Identifikátor kvitujícího uživatele
sFilter(String) Filtrační text určující, které alarmy se mají zahrnovat do požadovaného výsledku.
Různá filtrační pole mohou být použita i současně, alarm potom musí vyhovavat všem (např. "desc:FIQ100;priority.ge:5;").
Filtrační text xx nesmí být prázdný řetězec (např. nelze nastavit "desc:;").
Údaje jsou zde ve formátu KeyVal, 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 příslušné pole alarmu se má rovnat jednomu z několika textů, pak lze zadat více textů oddělených #or:.
"field:#begin:xx;" znamená, že příslušné pole alarmu musí začínat textem xx. Pokud příslušné pole alarmu má začínat na některý z několika textů, pak lze zadat více textů oddělených #or:.
"field:#in:xx;" znamená, že příslušné pole alarmu musí uvnitř obsahovat text xx. Pokud příslušné pole alarmu má obsahovat některý z několika textů, pak lze zadat více textů oddělených #or:.
"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., pak se jedná o volbu skrytou koncovému uživateli v prohlížeči alarmů a slouží pro nastavení pevné filtrace skriptem nezávisle na nastavení uživatelské části filtru. Pro stejný sloupec lze použít oba typy filtračních polí současně. Aby alarm vyhověl, musí vyhovět oběma filtračním polím. Toho lze s výhodou využít pro 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é) - Zobrazí alarmy, jejichž oblast (area) splňuje danou operaci #oper:xx. Část filtru měnitelná koncovým uživatelem v prohlížeči alarmů.
Například "area:Kotelna1;" nebo "area:#eq:Kotelna1;" nebo "area:#eq:Kotelna1#or:Kotelna2;" nebo "area:#begin:Kotelna;".
"s.area:#oper:xx;" (nepovinné) - Zobrazí alarmy, jejichž oblast (area) splňuje danou operaci #oper:xx. Část filtru skrytá koncovému uživateli v prohlížeči alarmů.
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é) - Zobrazí alarmy, jejichž zdroj (source) splňuje danou operaci #oper:xx. Část filtru měnitelná koncovým uživatelem v prohlížeči alarmů.
Například "source:Kotel;" nebo "source:#eq:Kotel;" nebo "source:#eq:Kotel1#or:Kotel2;" nebo "source:#begin:Kotel;".
"s.source:#oper:xx;" (nepovinné) - Zobrazí alarmy, jejichž zdroj (source) splňuje danou operaci #oper:xx. Část filtru skrytá koncovému uživateli v prohlížeči alarmů.
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é) - Zobrazí alarmy, jejichž popis (desc) splňuje danou operaci #oper:xx. Část filtru měnitelná koncovým uživatelem v prohlížeči alarmů.
Například "desc:FIQ101;" nebo "desc:#eq:FIQ101;" nebo "desc:#eq:FIQ101#or:FIQ102;" nebo "desc:#begin:FIQ;".
"s.desc:#oper:xx;" (nepovinné) - Zobrazí alarmy, jejichž popis (desc) splňuje danou operaci #oper:xx. Část filtru skrytá koncovému uživateli v prohlížeči alarmů.
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é) - Zobrazí alarmy, jejichž komentář (comment) splňuje danou operaci #oper:xx. Část filtru měnitelná koncovým uživatelem v prohlížeči alarmů.
Například "comment:oprava;" nebo "comment:#eq:oprava;" nebo "comment:#eq:oprava#or:test;" nebo "comment:#begin:oprava;".
"s.comment:#oper:xx;" (nepovinné) - Zobrazí alarmy, jejichž komentář (comment) splňuje danou operaci #oper:xx. Část filtru skrytá koncovému uživateli v prohlížeči alarmů.
Například "s.comment:oprava;" nebo "s.comment:#eq:oprava;" nebo "s.comment:#eq:oprava#or:test;" nebo "s.comment:#begin:oprava;".
"s.usernote:#oper:xx;" (nepovinné) - Zobrazí alarmy, jejichž poznámka (usernote) splňuje danou operaci #oper:xx. Část filtru skrytá koncovému uživateli v prohlížeči alarmů.
Například "s.usernote:oprava;" nebo "s.usernote:#eq:oprava;" nebo "s.usernote:#eq:oprava#or:test;" nebo "s.usernote:#begin:oprava;".
"priority:#oper:xx;" (nepovinné) - Zobrazí alarmy, jejichž priorita (priority) splňuje danou operaci #oper:xx. Část filtru měnitelná koncovým uživatelem v prohlížeči alarmů.
Například "priority:5;" nebo "priority:#eq:5;" nebo "priority:#le:5;" nebo "priority:#ge:5;".
"from:xx;" (nepovinné) - (pouze historie) Zobrazí alarmy, jejichž čas vzniku (timeon) je větší nebo rovno času "xx". Čas se zadává v podobě time(YYYY.MM.DD-hh:mm:ss.mmm), např. "from:time(2023.07.28-14:30:00.000);". Časový rozsah umožňuje omezit prohledávanou část alarmů (alarmy mimo časový rozsah se netestují).
"to:xx;" (nepovinné) - (pouze historie) Zobrazí alarmy, jejichž čas vzniku (timeon) je menší nebo rovno času "xx". Čas se zadává v podobě time(YYYY.MM.DD-hh:mm:ss.mmm), např. "to:time(2023.07.28-15:00:00.000);".
Čas to lze zadat i pomocí klíčového slova now, které znamená do aktualního času (v okamžiku volání), např. to:now.
Časový rozsah umožňuje omezit prohledávanou část alarmů (alarmy mimo časový rozsah se netestují).
"timerange:xx;" (nepovinné) - (pouze historie) Zobrazí alarmy, jejichž čas vzniku (timeon) leží v zadaném časovém rozsahu. Pro určení časového rozpětí pomocí timerange, musí být zadané buď from nebo to, kde timerange umožňuje dopočítat druhou chybějící mez časového rozsahu. Časový rozsah lze tedy zadat pomocí následujících dvojic: from - to, from - timerange nebo to - timerange. Například to:now;timerange:30m;. Časový rozsah umožňuje omezit prohledávanou část alarmů (alarmy mimo časový rozsah se netestují).
Časový rozsah lze zadat jako celé číslo následované znakem časové jednotky (bez mezer). Časové jednotky jsou: w = týden, d = den, h = hodina, m = minuta, s = sekunda. Například timerange:12h; nebo timerange:90m;.
"records:xx;" (nepovinné) - (pouze historie) 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 rozpětí umožňuje omezovat prohledávaní alarmů na omezenou část alarmů. Normální filtr by totiž procházel 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é) - (pouze historie) 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í 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.
"scanstart:xx;" (nepovinné) - (pouze historie) Umožňuje změnit implicitní směr prohledávaní (odkud se začne s prohledávaním). Zadává se v podobě scanstart:from; nebo scanstart:to;.
Pokud není časový rozsah vůbec určen nebo pokud je zadán to (může být i společně s from nebo s timerange), pak 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), pak je implicitní směr prohledávaní od starších k novějším.
Používat scanstart má smysl zejména, pokud časový rozsah je zadán pomocí from a to a pokud je nutno změnit směr prohledávaní na od starších k mladším položkám (scanstart:start;).
"lang:xx;" (nepovinné) - (pouze skriptovací metody) 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. Pokud není nastaveno, pak 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é) - (pouze skriptovací metody) Určuje, zda výsledný seznam bude obsahovat (první a/nebo druhý řádek) i názvy sloupců (lokalizované texty) pro následné zobrazení.
title - První/druhý řádek výsledného seznamu bude obsahovat názvy sloupců (lokalizované texty) 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í.
Vrácená hodnota:
objekt PmArray pro JavaScript nebo datový typ Array pro VBScript.
Poznámka:
Implementace filtrace alarm položek má tendenci prohledávat a testovat všechny dostupné alarmy v historii.
Aby se s každým dotazem neprohlédavaly všechny položky, je nutno omezit dotaz (filtrační kritérium) na menší část alarmů. Omezení lze získat jednak pomocí zadaného časového rozpětí, kdy se prohlédavají a testují pouze položky z tohoto časového rozpětí. Další omezení lze získat pomocí zadání počtu požadovaných nalezených alarm položek a také pomocí maximálního počtu prohlédávaných alarm položek. U omezené části alarmů, která se bude prohledávat, lze 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 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. Pak má směr prohledávaní smysl, protože určuje, na které straně časového rozpětí mohou případně chybět alarmy, díky aplikaci omezením položek.
Příklad1:
Získá posledních (nejnovějších) 50 alarmů records:50;scanrecords:500; (hodnoty požadovaných sloupců), splňujících filtrační kritérium (desc:Test2;).
JavaScriptVBScriptVyber a zkopíruj do schránky

var oAl = pMe.Pm("/Alarm");
var a = oAl.GetHistoryData("Desc,TimeOn,TimeOff,TimeAck", "desc:Test2;records:50;scanrecords:500;");
Příklad2:
Získá všechny alarmy (hodnoty 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(2023.07.20-06:00:00.000);) a s omezením na maximální počet prohledávaných a vrácených vět records:50;scanrecords:500;.
Získá i anglické názvy sloupců v prvním řádku.
JavaScriptVBScriptVyber a zkopíruj do schránky

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;");

Historie:
Pm9.00.01: Opravená chyba: Neuměla procházet více záloh (pokud nebyl zadán počet záznamů "records:xx;").
© MICROSYS, spol. s r.o.