Update cookies preferences
Promotic

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)
Parametry:
sColumns(String) Seznam identifikátorů požadovaných sloupců (vlastností) alarm položek (oddělené čá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" - Identifikátor kvitujícího uživatele
sFilter(String) Filtrační text určuje, 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 "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 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 (lze upravit koncovým uživatelem). Například s.source:#begin:Kotel;source:Kotel1;.
 
"state:xx;" (nepovinné) - (pouze stavy) Zobrazí alarmy, jejichž stav (state) se shoduje se stavem xx. Lze uvést i několik stavů (oddělené čárkou).
Například "state:3,2,1;".
"hoot:xx;" (nepovinné) - (pouze stavy) Zobrazí alarmy, podle houkání, kde xx:
0 = alarmy nehoukající
1 = alarmy houkající
"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(2024.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(2024.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 nastavit (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:
2-rozměrné pole hodnot (objekt PmArray pro JavaScript nebo datový typ Array pro VBScript).
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 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ů 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 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 aData = oAl.GetStateData("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;). Získá i anglické názvy sloupců v prvním řádku.
JavaScriptVBScriptVyber a zkopíruj do schránky

var oAl = pMe.Pm("/Alarm");
var aData = oAl.GetStateData("Desc,TimeOn,TimeOff,TimeAck", "desc:Test2;lang:en;headers:title;");

Historie:
Pm8.02.11: pokud není zadán směr (není zadán parametr from nebo to) pak se záznamy vracejí od nejnovějších k nejstarším - podle dokumentace. Směr lze zadat pomocí parametru scanstart.
© MICROSYS, spol. s r.o.