Promotic
WikipediaLinkedInYoutubeTwitterFacebook

GetStateData - metoda objektu PmaAlarmGroup

Popis:
Získá data z aktuálního stavu alarmů , které vyhovují zadanému filtračnímu textu.
Syntaxe:
Array GetStateData(String sColumns, String sFilter)
Volání:
a = oAl.GetStateData(sColumns, sFilter)
Parametry:
sColumns(String) Seznam identifikátorů požadovaných sloupců (vlastností) alarm položek, oddělených čárkou (,), např. "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" - Identifikace 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 zároveň, 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 zadat "desc:;").

Údaje jsou zde ve formátu KeyVal, například "state:3;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 alarm prohlížeči a slouží k nastavení pevné filtrace skriptem bez ohledu 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 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;.

 
"state:xx;" (nepovinné) - Zobrazovat alarmy, jejichž stav (state) se shoduje se stavem xx. Lze uvést i několik stavů oddělených čárkou. Například "state:3,2,1;".
"hoot:xx;" (nepovinné) - Zobrazovat alarmy, podle houkání, kde xx:
0 = alarmy nehoukající
1 = alarmy houkající
"area:#oper:xx;" (nepovinné) - Zobrazovat alarmy, jejichž oblast (area) splňuje danou operaci #oper:xx. Část filtru měnitelná koncovým uživatelem v alarm prohlížeči. 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 alarm prohlížeči. 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 alarm prohlížeči. 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 alarm prohlížeči. 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 alarm prohlížeči. 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 alarm prohlížeči. 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 alarm prohlížeči. 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 alarm prohlížeči. 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 alarm prohlížeči. 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á ve tvaru time(YYYY.MM.DD-hh:mm:ss.mmm), např. "from:time(2018.07.28-14:30:00.000);". Časový rozsah umožňuje omezit prohledávanou část alarmů (alarmy mimo časový rozsah se netestují).
"to:xx;" (nepovinné) - Zobrazovat alarmy, jejichž čas vzniku (timeon) je menší nebo rovno času "xx". Čas se zadává ve tvaru time(YYYY.MM.DD-hh:mm:ss.mmm), např. "to:time(2018.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ý rozsah umožňuje omezit prohledávanou část alarmů (alarmy mimo časový rozsah 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ý 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 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í 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é) - Umožňuje změnit implicitní směr prohledávaní (odkud se začne s prohledávaním). Zadává se ve tvaru 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 je časový rozsah 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é) - 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é) - 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ů má tendenci prohledávat a testovat stavy všech existujících alarmů (ale nikoliv jejich historie). Na rozdíl od historie alarmů, kde při prohledávaní se musí procházet velké množství dat na disku, u stavu existujících alarmů je předpoklad, že jejich počet je mnohem nižší a navíc jsou v operační paměti, proto následující postup omezení množství položek k prohledávaní není tak nutný. Aby se s každým dotazem neprohlédavaly úplně všechny položky, je nutno omezit dotaz (filtrační kritérium) na menší část alarmů. 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ů a také pomocí maximálního počtu prohledávaných alarmů. 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. Potom má směr prohledávaní smysl, protože určuje, na které straně časového intervalu mohou případně chybět alarmy, 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;).
JavaScriptVBScriptVyber a zkopíruj do schránky

a = oAl.GetStateData("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;). Získat i anglické názvy sloupců v prvním řádku.
JavaScriptVBScriptVyber a zkopíruj do schránky

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

Historie:
Pm7.03.08: Vytvořeno
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice