OpenSCADAWiki: Doc/API/part14 ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
This is an old revision of Doc/API/part14 from 2013-06-27 10:42:12..

14. Èíòåðôåéñ óïðàâëåíèÿ ñèñòåìîé è äèíàìè÷åñêîå äåðåâî îáúåêòîâ ñèñòåìû (TCntrNode)

Äëÿ ïîëíîãî ïîêðûòèÿ êëþ÷åâûõ êîìïîíåíòîâ ñèñòåìû ñåòüþ îáúåêòîâ åäèíîé ñòðóêòóðû ïðåäíàçíà÷åí îáúåêò óçëà äèíàìè÷åñêîãî äåðåâà TCntrNode. Íà ýòîò îáúåêò âîçëàãàþòñÿ ñëåäóþùèå ôóíêöèè:


Ëþáîé îáúåêò, èìåþùèé ïîòðåáíîñòü â ïðåäîñòàâëåíèè äèíàìè÷åñêîãî äîñòóïà ê ñåáå èëè ñâîèì êîìïîíåíòàì äîëæåí íàñëåäîâàòüñÿ îò îáúåêòà óçëà äèíàìè÷åñêîãî äåðåâà TCntrNode. Äàííîå ðîäñòâî àâòîìàòè÷åñêè âêëþ÷àåò óçåë â äèíàìè÷åñêîå äåðåâî îáúåêòîâ, îõâà÷åííîå êàê ïðÿìîé, òàê è îáðàòíîé ñâÿçüþ, à òàêæå ïðåäîñòàâëÿåò âîçìîæíîñòü ñîçäàíèÿ êîíòåéíåðîâ ïîä ñîáñòâåííûå äî÷åðíèå óçëû.  äîïîëíåíèè ê ýòîìó óçåë ïîëó÷àåò âîçìîæíîñòü óïðåæäåíèÿ ïðî âêëþ÷åíèå è èñêëþ÷åíèå/óäàëåíèå óçëà èç äåðåâà ñ âîçìîæíîñòüþ îòêàçà îò èñêëþ÷åíèÿ/óäàëåíèÿ.


Èíòåðôåéñ óïðàâëåíèÿ ñèñòåìû âêëþ÷¸í â ñîñòàâ îáúåêòà TCntrNode è, ñîîòâåòñòâåííî, îõâàòûâàåò âñå óçëû äèíàìè÷åñêîãî äåðåâà ñèñòåìû, ïîçâîëÿÿ åäèíîîáðàçíî óïðàâëÿòü ñèñòåìîé âíå çàâèñèìîñòè îò èñïîëüçóåìîãî êëèåíòñêîãî èíñòðóìåíòà. Èíòåðôåéñ óïðàâëåíèÿ ñèñòåìîé âûïîëíåí íà îñíîâå ÿçûêà ðàçìåòêè XML. Ìîæíî ïðèäóìàòü ìíîæåñòâî ñïîñîáîâ èñïîëüçîâàíèÿ èíòåðôåéñà óïðàâëåíèÿ ñèñòåìîé, â êà÷åñòâå ïðèìåðà îòìåòèì ñëåäóþùèå íàèáîëåå ÿðêèå ðåøåíèÿ:


Èíòåðôåéñ óïðàâëåíèÿ ñèñòåìîé ðåàëèçîâàí ïîñðåäñòâîì ñîñòàâëÿþùèõ:


Èíôîðìàöèîííàÿ èåðàðõè÷åñêàÿ ñòðóêòóðà ñîäåðæèò èíôîðìàöèþ î ïóáëè÷íûõ ýëåìåíòàõ óïðàâëåíèÿ è ìîæåò áûòü èñïîëüçîâàíà äëÿ ïîñòðîåíèÿ ïîëüçîâàòåëüñêèõ äèàëîãîâ óïðàâëåíèÿ óçëàìè ñèñòåìû.


Äèíàìè÷åñêàÿ ÷àñòü ñîäåðæèò ñöåíàðèè îáñëóæèâàíèÿ çàïðîñîâ ê ýëåìåíòàì óïðàâëåíèÿ, îïèñàííûì â èíôîðìàöèîííîé ñòðóêòóðå, à òàêæå ñêðûòûå ýëåìåíòû óïðàâëåíèÿ â âèäå ñåðâèñíûõ ôóíêöèé, èñïîëüçóåìûå äëÿ óíèôèöèðîâàííîãî äîñòóïà ê óçëó.


Êîíòåéíåð ïîçâîëÿåò ñîáðàòü â îäèí çàïðîñ íåñêîëüêî èíôîðìàöèîííûõ ñòðóêòóð è äèíàìè÷åñêèõ ÷àñòåé, îïòèìèçèðóÿ òåì ñàìûì âðåìÿ çàïðîñà îñîáåííî íà ñåòåâûõ âûñîêîëàòåíòíûõ èíòåðôåéñàõ.


Îáùèé èíòåðôåéñ óïðàâëåíèÿ ñòðîèòñÿ èç îòäåëüíûõ óçëîâ äèíàìè÷åñêîãî äåðåâà. Èåðàðõè÷åñêîå íàñëåäîâàíèå îò îáúåêòà TCntrNode ïîçâîëÿåò ðåàëèçîâûâàòü ìíîãîóðîâíåâîå äîïîëíåíèå êîíôèãóðàöèè èíòåðôåéñà óïðàâëåíèÿ. Îáùèé âèä äèíàìè÷åñêîãî äåðåâà óçëîâ ïðåäñòàâëåí íà ðèñ. 8.


Ïðèìåð äèíàìè÷åñêîãî äåðåâà óçëîâ ñèñòåìû OpenSCADA. (120 Kb)
Ðèñ. 8. Ïðèìåð äèíàìè÷åñêîãî äåðåâà óçëîâ ñèñòåìû OpenSCADA.

Óçëû ñèñòåìû, ñîäåðæàùèå äàííûå äëÿ èíòåðôåéñà óïðàâëåíèÿ ñèñòåìîé òàêæå äîëæíû ïîäêëþ÷àòüñÿ â äèíàìè÷åñêîå äåðåâî îáúåêòîâ.


Ïîäêëþ÷åíèå óçëà â äèíàìè÷åñêîå äåðåâî ïðîèçâîäèòñÿ ñëåäóþùèì îáðàçîì:

14.1. Ñèíòàêñèñ çàïðîñà è îòâåòà èíòåðôåéñà óïðàâëåíèÿ

Âåñü îáìåí ñ èíòåðôåéñîì óïðàâëåíèÿ ïðîèçâîäèòñÿ ïîñðåäñòâîì ÿçûêà XML. Ïðè ýòîì âíóòðåííèé îáìåí âûïîëíÿåòñÿ ðàçîáðàííîé ñòðóêòóðîé ÿçûêà XML (DOM), à âíåøíèé — ïîñðåäñòâîì ïðåîáðàçîâàíèÿ â ïîòîê ñèìâîëîâ ñïëîøíîãî XML-ôàéëà è îáðàòíî.


Çàïðîñ âûïîëíÿåòñÿ ïîñðåäñòâîì îòïðàâêè îäíîãî êîíòåéíåðà ñ íåêîòîðûìè ïàðàìåòðàìè â àòðèáóòàõ. Ðåçóëüòàò ïîìåùàåòñÿ â ïîëó÷åííûé êîíòåéíåð ñ èçìåíåíèåì íåêîòîðûõ àòðèáóòîâ êîðíåâîãî êîíòåéíåðà.  îáùåì âèäå êîíòåéíåð çàïðîñà ìîæíî çàïèñàòü ñëåäóþùèì îáðàçîì:
<cmd path="/TreePath" user="user" force="1"/>
Ãäå:

cmd — êîìàíäà çàïðîñà;
path — ïóòü ê óçëó èëè âåòâè óçëà;
user — ïîëüçîâàòåëü ñèñòåìû îò èìåíè êîòîðîãî íàïðàâëåí çàïðîñ;
force — ïðèçíàê âûïîëíèòü çàïðîñ áåç ïðåäóïðåæäåíèÿ.

 ïîäòâåðæäåíèå ðåçóëüòàòà çàïðîñà óñòàíàâëèâàåòñÿ àòðèáóò ðåçóëüòàòà rez â çíà÷åíèÿ: 0-çàïðîñ ïðîøåë, 1-ïðåäóïðåæäåíèå (ñ âîçìîæíîñòüþ âûïîëíåíèÿ), 2-îøèáêà.  ñëó÷àå îøèáêè è ïðåäóïðåæäåíèÿ ñîîáùåíèÿ çàïèñûâàþòñÿ â òåêñò êîíòåéíåðà è àòðèáóò mcat (êàòåãîðèÿ ñîîáùåíèÿ): <cmd path="/TreePath" user="user" force="1" rez="2" mcat="sub_DAQ/mod_BlockCalc>Íåâîçìîæíî óäàëèòü óçåë</cmd>.


Ãðóïïèðóþùèé çàïðîñ "CntrReqs" îáðàáàòûâàþòñÿ íà óðîâíå API óçëà è íå òðåáóþò îòäåëüíîé îáðàáîòêè â ïîëüçîâàòåëüñêîì êîäå. Ôàêòè÷åñêè â òåã "CntrReqs" ìîãóò ïîìåùàòüñÿ ëþáûå äðóãèå çàïðîñû ñ âîçìîæíîñòüþ èåðàðõè÷åñêîé ãðóïïèðîâêè ïóò¸ì âêëþ÷åíèÿ âíóòðåííèõ òåãîâ "CntrReqs". Åäèíñòâåííûì àòðèáóòîì ýòîãî òåãà ÿâëÿåòñÿ àòðèáóò path, êîòîðûé óêàçûâàåò ïóòü ê óçëó è ÿâëÿåòñÿ îñíîâîé äëÿ âíóòðåííèõ çàïðîñîâ.


<CntrReqs path="/sub_DAQ/cntr_gate">
  <get path="/%2fprm%2fcfg%2fNAME"/>
  <get path="/%2fprm%2fcfg%2fDESCR"/>
  <list path="/%2fserv%2fattr"/>
</CntrReqs>

14.2. Òåã èíôîðìàöèîííîé ñòðóêòóðû äëÿ îïèñàíèÿ ãðóïï äî÷åðíèõ âåòîê ñòðàíèöû

Êàæäàÿ ñòðàíèöà ìîæåò ñîäåðæàòü ãðóïïû äî÷åðíèõ âåòâåé. Äëÿ îïèñàíèÿ ãðóïï âåòâåé ïðåäóñìîòðåí òåã branches. Òåã ñîäåðæèò îïèñàíèå ãðóïï âåòâåé ïîñðåäñòâîì âëîæåííûõ òåãîâ grp. Ê òåãó ãðóïïû âîçìîæåí äîñòóï êàê íà "÷òåíèå" (âèäèìîñòü) òàê è íà ìîäèôèêàöèþ (âûïîëíåíèå êîìàíä äîáàâëåíèÿ è óäàëåíèÿ ýëåìåíòîâ ãðóïïû), ñëåäîâàòåëüíî ýëåìåíò òðèàäû äîñòóïà ìîæåò ïðèíèìàòü çíà÷åíèÿ:

00 — äîñòóï âîîáùå îòñóòñòâóåò;
04 — ïðèñóòñòâóåò äîñòóï òîëüêî íà ÷òåíèå;
02 — ïðèñóòñòâóåò äîñòóï òîëüêî íà çàïèñü, îáû÷íî òàêîå çíà÷åíèå íå èìååò ñìûñëà ïîñêîëüêó äîñòóï íà çàïèñü ïîäðàçóìåâàåò è äîñòóï íà ÷òåíèå;
06 — ïðèñóòñòâóåò äîñòóï è íà ÷òåíèå, è íà çàïèñü.


Äåéñòâèÿ íàä ãðóïïîé ýëåìåíòîâ ïîëíîñòüþ ñîâïàäàþò ñ äåéñòâèÿìè íàä ñïèñêîì âèçóàëüíûõ ýëåìåíòîâ "list", î êîòîðîì íàïèñàíî íèæå.

14.3. Òåãè îïèñàíèÿ èíôîðìàöèîííîé ñòðóêòóðû èíòåðôåéñà óïðàâëåíèÿ

Èíôîðìàöèîííûå òåãè äëÿ ÿçûêà XML ñîñòàâëÿþò àëôàâèò ôîðìèðîâàíèÿ îïèñàíèÿ êîíôèãóðàöèîííûõ äèàëîãîâ. Êîìàíäà çàïðîñà èíôîðìàöèîííîé ÷àñòè èìååò âèä: <info path="/TreePath" user="user"/>


 ðåçóëüòàòå çàïðîñà áóäåò ïîëó÷åíà èíôîðìàöèîííàÿ ñòðóêòóðà ñòðàíèöû â ñîîòâåòñòâèè ñ ïðèâèëåãèÿìè óêàçàííîãî ïîëüçîâàòåëÿ.

14.3.1. Òåã îáëàñòè "area"

Îáëàñòè îïèñûâàþòñÿ òåãîì area è ïðåäíàçíà÷åíû äëÿ ãðóïïèðîâêè ýëåìåíòîâ ïî ðàçëè÷íûì ïðèçíàêàì. Îáëàñòü ìîæåò âêëþ÷àòü äðóãèå ýëåìåíòû è îáëàñòè. Êîðíåâûå îáëàñòè ôîðìèðóþò çàêëàäêè â ïðåäñòàâëåíèè ïîëüçîâàòåëüñêîãî èíòåðôåéñà. Ê òåãó âîçìîæåí äîñòóï òîëüêî íà "÷òåíèå" èëè "âèäèìîñòü", ñëåäîâàòåëüíî ýëåìåíò òðèàäû äîñòóïà ìîæåò ïðèíèìàòü çíà÷åíèå 00, åñëè äîñòóï îòñóòñòâóåò, èëè 04, åñëè ïðèñóòñòâóåò.

<area id='base' dscr='Base information'>
  <fld id='host' dscr='Host name' tp='str'/>
  <fld id='user' dscr='Operated user' tp='str'/>
  <fld id='sys' dscr='Station system' tp='str'/>
  <area id='other' dscr='Other options'>
     <fld id='val' dscr='Value' tp='real'/>
  </area>
</area>

14.3.2. Òåãè äàííûõ

Òåãè, îïèñûâàþùèå äàííûå, ñâåäåíû â òàáëèöå 1.


Òàáëèöà 1. Òåãè, îïèñûâàþùèå äàííûå

ÒåãÎïèñàíèå
<fld>Ïðîñòåéøèå äàííûå ñòðîêîâîãî, öåëîãî, âåùåñòâåííîãî è ëîãè÷åñêîãî òèïîâ.
<list>Ñïèñêè ñ äàííûìè ñòðîêîâîãî, öåëîãî, âåùåñòâåííîãî è ëîãè÷åñêîãî òèïîâ.
<table>Òàáëèöû ñ äàííûìè â ÿ÷åéêàõ ñòðîêîâîãî, öåëîãî, âåùåñòâåííîãî è ëîãè÷åñêîãî òèïîâ.
<img>Èçîáðàæåíèÿ.

a) Òåã "fld"

<fld id='host' dscr='Host name' tp='str'/>
<fld id='user' dscr='Operated user' tp='str'/>
<fld id='sys' dscr='Station system' tp='str'/>


Ê òåãó âîçìîæåí äîñòóï êàê íà "÷òåíèå", òàê è íà "çàïèñü", ñëåäîâàòåëüíî ýëåìåíò òðèàäû äîñòóïà ìîæåò ïðèíèìàòü çíà÷åíèÿ:

00 — äîñòóï âîîáùå îòñóòñòâóåò;
04 — ïðèñóòñòâóåò äîñòóï òîëüêî íà ÷òåíèå;
02 — ïðèñóòñòâóåò äîñòóï òîëüêî íà çàïèñü, îáû÷íî òàêîå çíà÷åíèå íå èìååò ñìûñëà ïîñêîëüêó äîñòóï íà çàïèñü ïîäðàçóìåâàåò è äîñòóï íà ÷òåíèå;
06 — ïðèñóòñòâóåò äîñòóï è íà ÷òåíèå è íà çàïèñü.

Òèï ýëåìåíòà, îïèñûâàåìîãî òåãîì "fld", óêàçûâàåòñÿ àòðèáóòîì tp (òàáëèöà 2).


Òàáëèöà 2. Çíà÷åíèÿ àòðèáóòà tp òåãà "fld".

Òåã tpÎïèñàíèå
strÑòðîêîâûé òèï.
<fld id='host' dscr='Host name' tp='str'/>
decÖåëîå ÷èñëî â äåñÿòè÷íîì ïðåäñòàâëåíèè.
<fld id='debug' dscr='Debug level' tp='dec'/>
octÖåëîå ÷èñëî â âîñüìåðè÷íîì ïðåäñòàâëåíèè.
<fld id='cr_file_perm' dscr='Make files permissions(default 0644)' tp='oct' len='3'/>
hexÖåëîå ÷èñëî â øåñòíàäöàòåðè÷íîì ïðåäñòàâëåíèè.
realÂåùåñòâåííîå ÷èñëî.
boolËîãè÷åñêèé ïðèçíàê ("false"|"true").
<fld id='log_sysl' dscr='Direct messages to syslog' tp='bool'/>
timeÂðåìÿ â ñåêóíäàõ (îò 01/01/1970).
<fld id='v_beg' dscr='Start time' tp='time'/>

Òàáëèöà 3. Äåéñòâèÿ íàä ýëåìåíòîì, îïèñàííûì òåãîì "fld".

ÎïåðàöèÿÄåéñòâèå
ÎïðîñÇàïðîñ: êîìàíäà «get»: <get path="/fld_teg" user="user"/>.
Ðåçóëüòàò: ïîäòâåðæäåíèå ñî çíà÷åíèåì â òåêñòå òåãà èëè ñîîáùåíèå îá îøèáêå.
ÌîäèôèêàöèÿÇàïðîñ: êîìàíäà "set": <set path="/fld_teg" user="user">value</set>
Ðåçóëüòàò: ïîäòâåðæäåíèå èëè ñîîáùåíèå îá îøèáêå.
Çàïðîñ ïðàâèë ïîäñâåòêè ñèíòàêñèñà, äëÿ òåêñòîâûõ ïîëåé (îïðåäåë¸í àòðèáóò "rows").Çàïðîñ: êîìàíäà "SnthHgl": <SnthHgl path="/fld_teg" user="user"/>
Ðåçóëüòàò: ïîäòâåðæäåíèå ñî ñïèñêîì ïðàâèë ïîäñâåòêè ñèíòàêñèñà:
<rule expr="\b(if|else|for|while|in|using|new|var|break|continue|return|Array|Object)\b" color="darkblue" font_weight="1"/>
<rule expr="(\?|\:)" color="darkblue" font_weight="1"/>
<rule expr="(\b0[xX][0-9a-fA-F]*\b|\b[+-]?[0-9]*\.?[0-9]+[eE]?[-+]?[0-9]*\b|\btrue\b|\bfalse\b)" color="blue"/>
<rule expr="&quot;[^&quot;]*&quot;" color="darkgreen"/>
<rule expr="//[^\n]*" color="gray" font_italic="1"/>
<blk beg="/\\*" end="\\*/" color="gray" font_italic="1"/>

b) Òåã "list"

<list id='mod_auto' dscr='List of shared libs(modules)' tp='str' dest='file'/>


Ê òåãó âîçìîæåí äîñòóï êàê íà "÷òåíèå", òàê è íà "çàïèñü"(ìîäèôèêàöèþ), ñëåäîâàòåëüíî ýëåìåíò òðèàäû äîñòóïà ìîæåò ïðèíèìàòü çíà÷åíèÿ:

00 — äîñòóï âîîáùå îòñóòñòâóåò;
04 — ïðèñóòñòâóåò äîñòóï òîëüêî íà ÷òåíèå;
02 — ïðèñóòñòâóåò äîñòóï òîëüêî íà çàïèñü, îáû÷íî òàêîå çíà÷åíèå íå èìååò ñìûñëà ïîñêîëüêó äîñòóï íà çàïèñü ïîäðàçóìåâàåò è äîñòóï íà ÷òåíèå;
06 — ïðèñóòñòâóåò äîñòóï è íà ÷òåíèå è íà çàïèñü.

Òèï ýëåìåíòîâ â ñïèñêå óêàçûâàåòñÿ àòðèáóòîì tp. Çíà÷åíèÿ àòðèáóòà tp ïðèâåäåíû â òàáëèöå 1.


Òàáëèöà 4. Äåéñòâèÿ íàä ñïèñêîì.

ÎïåðàöèÿÄåéñòâèå
Îïðîñ

Çàïðîñ: êîìàíäà «get»: <get path="/fld_teg" user="user"/>
Ðåçóëüòàò: ïîäòâåðæäåíèå ñ ðåçóëüòàòîì â òåêñòå òåãà èëè ñîîáùåíèå îá îøèáêå. Ðåçóëüòàò ôîðìèðóåòñÿ â âèäå:

<get path="/fld_teg" user="user" rez="0">
<el id='0'>./MODULES/arh_base.o</el>
<el id='1'>./MODULES/cntr_sys.o</el>
</get>
Äîáàâëåíèå ñòðîêè

Çàïðîñ: êîìàíäà "add": <add path="/fld_teg" user="user" id="tst">Test</add>

×èòàåòñÿ, êàê äîáàâèòü ñòðîêó ñ èäåíòèôèêàòîðîì «tst» è çíà÷åíèåì «Test». Åñëè ñïèñîê íå èíäåêñèðîâàííûé, òî àòðèáóò id îòñóòñòâóåò.

Ðåçóëüòàò: ïîäòâåðæäåíèå èëè ñîîáùåíèå îá îøèáêå.

Âñòàâêà ñòðîêè

Çàïðîñ: êîìàíäà "ins": <ins path="/fld_teg" user="user" pos="3" p_id="tst1" id="tst">Test</ins>

×èòàåòñÿ, êàê âñòàâèòü ñòðîêó ñ èäåíòèôèêàòîðîì «tst» è çíà÷åíèåì «Test» â ïîçèöèþ 3 ñî ñòðîêîé «tst1».  ñëó÷àå èíäåêñíîãî ñïèñêà àòðèáóò p_id ñîäåðæèò èäåíòèôèêàòîð, èíà÷å — òåêñò ñòðîêè. Åñëè ñïèñîê íå èíäåêñèðîâàí, òî àòðèáóò id îòñóòñòâóåò.

Ðåçóëüòàò: ïîäòâåðæäåíèå èëè ñîîáùåíèå îá îøèáêå.

Óäàëåíèå ñòðîêè

Çàïðîñ: êîìàíäà "del": <del path="/fld_teg" user="user" pos='3' id='tst'>Test</del>

×èòàåòñÿ, êàê óäàëèòü ñòðîêó ñ èäåíòèôèêàòîðîì «tst» è çíà÷åíèåì «Test» â ïîçèöèè 3. Åñëè ñïèñîê íå èíäåêñèðîâàí, òî àòðèáóò id îòñóòñòâóåò.

Ðåçóëüòàò: ïîäòâåðæäåíèå èëè ñîîáùåíèå îá îøèáêå.

Èçìåíåíèå ñòðîêè

Çàïðîñ: êîìàíäà "edit": <edit path="/fld_teg" user="user" pos='3' p_id='tst1' id='tst' >Test</edit>

×èòàåòñÿ, êàê çàìåíèòü ñòðîêó â ïîçèöèè 3 ñ èäåíòèôèêàòîðîì "tst1" íà ñòðîêó ñ èäåíòèôèêàòîðîì «tst» è çíà÷åíèåì «Test».  ñëó÷àå èíäåêñèðîâàííîãî ñïèñêà àòðèáóò p_id ñîäåðæèò èäåíòèôèêàòîð, èíà÷å — òåêñò ñòðîêè. Åñëè ñïèñîê íå èíäåêñèðîâàí, òî àòðèáóò id îòñóòñòâóåò.

Ðåçóëüòàò: ïîäòâåðæäåíèå èëè ñîîáùåíèå îá îøèáêå.

Ïåðåìåùåíèå ñòðîêè

Çàïðîñ: êîìàíäà "move": <move path="/fld_teg" user="user" pos='3' to='5'/>

×èòàåòñÿ, êàê ïåðåìåñòèòü ñòðîêó ñ ïîçèöèè 3 â ïîçèöèþ 5.

Ðåçóëüòàò: ïîäòâåðæäåíèå èëè ñîîáùåíèå îá îøèáêå.

c) Òåã "table"

<table id='a_mess' key='0' col_lst="0;1;2">
  <list id='0' dscr='Id' acs='4' tp='str'/>
  <list id='1' dscr='Name' acs='4' tp='str'/>
  <list id='2' dscr='Type' acs='4' tp='str'/>
  <list id='3' dscr='Hide' acs='4' tp='bool'/>
</table>


Ê òåãó òàáëèöû è êîëîíêàì îòäåëüíî âîçìîæåí äîñòóï êàê íà "÷òåíèå", òàê è íà "çàïèñü"(ìîäèôèêàöèþ), ñëåäîâàòåëüíî ýëåìåíò òðèàäû äîñòóïà ìîæåò ïðèíèìàòü çíà÷åíèÿ:

00 — äîñòóï âîîáùå îòñóòñòâóåò;
04 — ïðèñóòñòâóåò äîñòóï òîëüêî íà ÷òåíèå;
02 — ïðèñóòñòâóåò äîñòóï òîëüêî íà çàïèñü, îáû÷íî òàêîå çíà÷åíèå íå èìååò ñìûñëà ïîñêîëüêó äîñòóï íà çàïèñü ïîäðàçóìåâàåò è äîñòóï íà ÷òåíèå;
06 — ïðèñóòñòâóåò äîñòóï è íà ÷òåíèå è íà çàïèñü.

Åñëè óêàçàí àòðèáóò key è â í¸ì ïåðå÷èñëåíû êëþ÷åâûå êîëîíêè, òî ðàáîòà ñ òàáëèöåé ïåðåõîäèò â ðåæèì àäðåñàöèè ïî èäåíòèôèêàòîðàì êîëîíîê è êëþ÷àì.


Òàáëèöà 5. Äåéñòâèÿ íàä òàáëèöåé.

ÎïåðàöèÿÄåéñòâèå
Îïðîñ

Çàïðîñ: êîìàíäà "get": <get path="/fld_teg" user="user" cols="0;2" rows="100;1000"/>

×èòàåòñÿ, êàê ïîëó÷èòü êîëîíêè 0-2 è ñòðîêè â íèõ ñ 100 ïî 1000 òàáëèöû.

Ðåçóëüòàò: Ïîäòâåðæäåíèå ñ äàííûìè òàáëèöû èëè ñîîáùåíèå îá îøèáêå. Ðåçóëüòàò ôîðìèðóåòñÿ â âèäå:

<get path="/fld_teg" user="user" cols="0;2" rows="100;1000" rez="0">
<list id='0' tp='str'>
<el id='100'>Sat Feb 21 18:04:16 2004</el>

</list>
<list id='1' tp='str'>

<el id='100'>SYS</el>

</list>
<list id='2' tp='str'>

<el id='100'>*:(TSYS)Broken PIPE signal allow!</el>
</list>
</get>
Äîáàâëåíèå ñòðîêèÇàïðîñ: êîìàíäà "add": <add path="/fld_teg" user="user"/>
Ðåçóëüòàò: ïîäòâåðæäåíèå èëè ñîîáùåíèå îá îøèáêå.
Âñòàâêà ñòðîêè

Çàïðîñ: êîìàíäà "ins": <ins path="/fld_teg" user="user" row='3'/>

×èòàåòñÿ, êàê âñòàâèòü ñòðîêó â ïîçèöèþ 3. Êîìàíäà íå ðàáîòàåò ïðè óñòàíîâëåííîì àòðèáóòå key!

Ðåçóëüòàò: ïîäòâåðæäåíèå èëè ñîîáùåíèå îá îøèáêå.

Óäàëåíèå ñòðîêè


Çàïðîñ: êîìàíäà "del": <del path="/fld_teg" user="user" row='3'/> èëè <del path="/fld_teg" user="user" key_id='Test'/> äëÿ êëþ÷åâîãî ðåæèìà

×èòàåòñÿ, êàê óäàëèòü ñòðîêó â ïîçèöèè 3 èëè ñòðîêó â ïîçèöèè, ãäå çíà÷åíèå êîëîíêè id ðàâíî 'Test'.

Ðåçóëüòàò: ïîäòâåðæäåíèå èëè ñîîáùåíèå îá îøèáêå.

Ïåðåìåùåíèå ñòðîêè

Çàïðîñ: êîìàíäà "move": <move path="/fld_teg" user="user" row='3' to='5'/>

×èòàåòñÿ, êàê ïåðåìåñòèòü ñòðîêó ñ ïîçèöèè 3 â ïîçèöèþ 5. Äàííàÿ êîìàíäà íå ðàáîòàåò ïðè óñòàíîâëåííîì àòðèáóòå key!

Ðåçóëüòàò: ïîäòâåðæäåíèå èëè ñîîáùåíèå îá îøèáêå.

Èçìåíèòü ÿ÷åéêó

Çàïðîñ: êîìàíäà "set": <set path="/fld_teg" user="user" row='3' col='id'>Test</set> èëè <set path="/fld_teg" user="user" key_id='Test' col='id'>Test1</set> äëÿ êëþ÷åâîãî ðåæèìà

×èòàåòñÿ êàê — óñòàíîâèòü çíà÷åíèå ÿ÷åéêè â ñòðîêå 3 è êîëîíêå 'id' â «Test» èëè óñòàíîâêà êîëîíêè ñ èìåíåì 'id' ñòðîêè â ïîçèöèè ãäå çíà÷åíèå êîëîíêè id ðàâíî 'Test' â çíà÷åíèå 'Test1'. Ïðàêòè÷åñêè äàííàÿ êîìàíäà ïåðåèìåíîâûâàåò êëþ÷åâîé ýëåìåíò óêàçàííîé ñòðîêè.

Ðåçóëüòàò: ïîäòâåðæäåíèå èëè ñîîáùåíèå îá îøèáêå.

d) Òåã "img"

<img id='ico' descr='Èêîíêà ñòðàíèöû'/>


Ê òåãó âîçìîæåí äîñòóï êàê íà "÷òåíèå", òàê è íà "çàïèñü", ñëåäîâàòåëüíî ýëåìåíò òðèàäû äîñòóïà ìîæåò ïðèíèìàòü çíà÷åíèÿ:

00 — äîñòóï âîîáùå îòñóòñòâóåò;
04 — ïðèñóòñòâóåò äîñòóï òîëüêî íà ÷òåíèå;
02 — ïðèñóòñòâóåò äîñòóï òîëüêî íà çàïèñü, îáû÷íî òàêîå çíà÷åíèå íå èìååò ñìûñëà ïîñêîëüêó äîñòóï íà çàïèñü ïîäðàçóìåâàåò è äîñòóï íà ÷òåíèå;
06 — ïðèñóòñòâóåò äîñòóï è íà ÷òåíèå è íà çàïèñü.

Òåã ïðåäíàçíà÷åí äëÿ ïåðåäà÷è èçîáðàæåíèé êëèåíòàì èíòåðôåéñà óïðàâëåíèÿ. Ïîä èçîáðàæåíèåì ìîãóò âûñòóïàòü: èêîíêè ñòðàíèö, ãðàôèêè ìàññèâîâ çíà÷åíèé è äðóãèå äàííûå, êîòîðûå ìîæíî ïðåäñòàâèòü â ãðàôè÷åñêîì âèäå.


Ïîääåðæèâàþòñÿ êîìàíäû çàïðîñîâ:

Ðåçóëüòàòîì ÿâëÿåòñÿ ïîäòâåðæäåíèå ñ äàííûìè èçîáðàæåíèÿ èëè ñîîáùåíèå îá îøèáêå.
Ðåçóëüòàòîì ÿâëÿåòñÿ ïîäòâåðæäåíèå èëè ñîîáùåíèå îá îøèáêå.
e) Êîìàíäû ñ ïàðàìåòðàìè. Òåã "comm"

<comm id='add'>
  <fld id='tm' tp='time'/>
  <fld id='cat' tp='str'/>
  <fld id='lvl' tp='dec' min='0' max='7'/>
  <fld id='mess' tp='str'/>
</comm>


Ê òåãó âîçìîæåí äîñòóï êàê íà "÷òåíèå" èëè âèäèìîñòü+îáñëóæèâàíèå çàïðîñîâ, òàê è íà ìîäèôèêàöèþ èëè âûïîëíåíèå êîìàíäû, ñëåäîâàòåëüíî ýëåìåíò òðèàäû äîñòóïà ìîæåò ïðèíèìàòü çíà÷åíèå 00, åñëè äîñòóï îòñóòñòâóåò âîîáùå; 04, åñëè êîìàíäó ìîæíî óâèäåòü; è 06, åñëè êîìàíäó ìîæíî èíèöèèðîâàòü.


Ïðåäíàçíà÷åí äëÿ ïåðåäà÷è êîìàíä è äåéñòâèé óçëó, à òàêæå ìîæåò èñïîëüçîâàòüñÿ äëÿ ñîçäàíèÿ ññûëîê íà äðóãèå ñòðàíèöû. Êîìàíäû ìîãóò âêëþ÷àòü ïàðàìåòðû. Ïàðàìåòðû îïèñûâàþòñÿ òåãîì "fld".


Ïîääåðæèâàþòñÿ êîìàíäû çàïðîñîâ:

<set path="/fld_teg" user="user"/>
  <fld id='tm'>1023456244</fld>
  <fld id='cat'>*</fld>
  <fld id='lvl'>2</fld>
  <fld id='mess'>Test mess</fld>
</set>

<get path="/fld_teg" user="user" tp="lnk"/>"


Ðåçóëüòàòîì ÿâëÿåòñÿ ïîäòâåðæäåíèå èëè ñîîáùåíèå îá îøèáêå.

f) Âåòêè (äî÷åðíèå óçëû)

<list id='k_br' dscr='Kernel branches' tp='br'/>


Âåòêè îïèñûâàþòñÿ îáû÷íûì ñïèñêîì "list" ñî ñïåöèàëüíûìè àòðèáóòàìè tp='br'. Ìåòîäèêà çàïðîñà è ìîäèôèêàöèè âåòîê ïîëíîñòüþ ñîâïàäàåò ñ ìåòîäèêîé ðàáîòû ñî ñïèñêîì "list".


14.4 Èåðàðõè÷åñêèå çàâèñèìîñòè èíôîðìàöèîííûõ ýëåìåíòîâ ÿçûêà óïðàâëåíèÿ

Ïðèìåð ñòðàíèöû óçëà ÿçûêà óïðàâëåíèÿ:

<oscada_cntr>
  <area id='a_gen' dscr='Generic control'>
    <fld id='config' dscr='Config file' tp='str' dest='file'/>
    <fld id='cr_file_perm' dscr='Files' tp='oct' len='3'/>
    <fld id='cr_dir_perm' dscr='Directories' tp='oct' len='3'/>
    <comm id='upd_opt' dscr='Update options(from config)'/>
    <comm id='quit' dscr='Quit'/>
  </area>
  <area id='a_kern' dscr='Kernels'>
    <list id='k_br' dscr='Kernels' tp='br'/>
  </area>
</oscada_cntr>


Òàáëèöà 6. Èåðàðõè÷åñêèå çàâèñèìîñòè èíôîðìàöèîííûõ ýëåìåíòîâ ÿçûêà:

ÒåãÎïèñàíèåÀòðèáóòûÑîäåðæèìîå
oscada_cntrÊîðíåâîé ýëåìåíò ñòðàíèöû. ßâëÿåòñÿ åäèíñòâåííûì è ñëóæèò äëÿ èäåíòèôèêàöèè ïðèíàäëåæíîñòè ê ÿçûêó èíòåðôåéñà óïðàâëåíèÿ.id — èäåíòèôèêàòîð;
dscr — îïèñàíèå.
area, img, branches
branchesÊîíòåéíåð ãðóïï äî÷åðíèõ âåòîê óçëà.id — èäåíòèôèêàòîð êîíòåéíåðà. Ðàâåí: br.grp
grpÃðóïïà äî÷åðíèõ óçëîâ.id — ïðåôèêñ ãðóïïû äî÷åðíèõ óçëîâ â ñèñòåìå;
dscr — îïèñàíèå ãðóïïû âåòîê;
acs — îïöèè äîñòóïà.
areaÃðóïïèðîâêà ñòàíäàðòíûõ òåãîâ.id — èäåíòèôèêàòîð;
dscr — îïèñàíèå;
acs — îïöèè äîñòóïà.
area, fld, list, table, comm, img
commÊîìàíäû óçëó.id — èäåíòèôèêàòîð;
dscr — îïèñàíèå;
help — ïîìîùü ïî êîìàíäå;
tp — òèï êîìàíäû (lnk — ññûëêà);
acs — îïöèè äîñòóïà.
fld
fldÎïèñàíèå äàííûõ ñòàíäàðòíûõ òèïîâ.

id — èäåíòèôèêàòîð;
dscr — îïèñàíèå;
help — ïîìîùü;
acs — îïöèè äîñòóïà.
tp — òèï ýëåìåíòà:

str(len, dest, cols, rows(SnthHgl)) — ñòðîêîâûé ýëåìåíò;
dec(len, max, min, dest) — öåëîå ÷èñëî â äåñÿòè÷íîì ïðåäñòàâëåíèè;
oct(len, max, min, dest) — öåëîå ÷èñëî â âîñüìåðè÷íîì ïðåäñòàâëåíèè;
hex(len, max, min, dest) — öåëîå ÷èñëî â øåñòíàäöàòåðè÷íîì;
real(len, max, min, dest) — âåùåñòâåííîå ÷èñëî;
bool — ëîãè÷åñêèé ïðèçíàê;
time — âðåìÿ/äàòà â ñåêóíäàõ (îò 01/01/1970).

Ñâÿçíûå:
len — äëèíà çíà÷åíèÿ (ñèìâ.);
min — ìèíèìóì çíà÷åíèÿ;
max — ìàêñèìóì çíà÷åíèÿ;
cols — êîëè÷åñòâî êîëîíîê;
rows — êîëè÷åñòâî ñòðîê;
dest — ñïîñîá ââîäà:

data — èñòî÷íèê áèíàðíûõ äàííûõ (base64).
select(select) — âûáîðíûé òèï;
sel_ed(select) — âûáîðíûé òèï ñ âîçìîæíîñòüþ ðåäàêòèðîâàíèÿ.
select — ïóòü ê ñêðûòîìó ñïèñêó;
sel_list — ñòàòè÷åñêèé ñïèñîê (ðàçäåëèòåëü ';');
sel_id — ñòàòè÷åñêèé ñïèñîê èäåíòèôèêàòîðîâ (ðàçäåëèòåëü ';').
listÑïèñîê äàííûõ ñòàíäàðòíûõ òèïîâ.

id — èäåíòèôèêàòîð;
dscr — îïèñàíèå;
help — ïîìîùü ïî ñïèñêó;
acs — îïöèè äîñòóïà.
tp — êàê â fld êðîìå:

br(br_pref) — äî÷åðíèå óçëû.

idm — èíäåêñèðîâàííûé ñïèñîê (0|1);
s_com — ñïîñîáû ìîäèôèêàöèè ñïèñêà [add][,ins][,edit][,del]:

add — äîáàâëÿòü ñòðîêè;
ins — âñòàâëÿòü ñòðîêè;
edit — ìîäèôèöèðîâàòü ñòðîêè;
del — óäàëÿòü ñòðîêè.
Ñâÿçíûå:
br_pref — ïðåôèêñ äî÷åðíèõ óçëîâ;
dest — êàê â fld.
tableÒàáëèöà äàííûõ ñòàíäàðòíûõ òèïîâ.id — èäåíòèôèêàòîð;
dscr — îïèñàíèå;
help — ïîìîùü ïî òàáëèöå;
acs — îïöèè äîñòóïà;
key — êëþ÷åâûå êîëîíêè (key=«id,name,per»);
cols — ïåðå÷åíü êîëîíîê â àòðèáóòå çàïðîñà;
rows — äèàïàçîí ñòðîê â àòðèáóòå çàïðîñà;
s_com — ñïîñîáû ìîäèôèêàöèè òàáëèöû [add][,del][,ins][,move]:
add — äîáàâëÿòü ñòðîêè;
ins — âñòàâëÿòü ñòðîêè;
del — óäàëÿòü ñòðîêè;
move — ïåðåìåùàòü ñòðîêè.
list
imgÈçîáðàæåíèå.id — èäåíòèôèêàòîð;
dscr — îïèñàíèå;
help — ïîìîùü ïî èçîáðàæåíèþ;
acs — îïöèè äîñòóïà;
h_sz — ãîðèçîíòàëüíîå îãðàíè÷åíèå;
v_sz — âåðòèêàëüíîå îãðàíè÷åíèå.

14.5. Îáúåêò óçëà äèíàìè÷åñêîãî äåðåâà (TCntrNode)

Íàñëåäóåòñÿ:Âñåìè äèíàìè÷åñêèìè è óïðàâëÿåìûìè îáúåêòàìè ïðÿìî èëè ÷åðåç ïîòîìêîâ.

Äàííûå:
Èìåíîâàííûå ïðàâà äîñòóïà ê ýëåìåíòàì óïðàâëåíèÿ (define):


Ôëàãè äèíàìè÷åñêîãî óçëà (enum TCntrNode::Flag):


Ôëàãè ðåæèìîâ âêëþ÷åíèÿ/îòêëþ÷åíèÿ óçëà (enum TCntrNode::Flag):


Ôëàãè ìîäèôèêàöèè óçëà (enum TCntrNode::ModifFlag):


Ïóáëè÷íûå ìåòîäû:


Çàùèù¸ííûå ìåòîäû:


 
There are no files on this page.[Display files/form]
There is no comment on this page. [Display comments/form]