Dáta XML súboru je tá časť v štruktúre XML súboru, ktorá obsahuje konfiguráciu objektov systému D2000 alebo jej časti.
Rezervované sekcie XML dát
- REFERENCES - obsahuje štruktúry reprezentujúce objektové a stĺpcové referencie objektu
- CFGRECORDS - obsahuje štruktúry reprezentujúce dáta objektu
- MEMBEROFLOGGROUP - obsahuje za sebou uvedené member elementy, ktoré určujú, do akej logickej skupiny daný objekt patrí
- MEMBEROFRESGROUP - obsahuje za sebou uvedené member elementy, ktoré určujú, do akej skupiny objektov daný objekt patrí
- CRC - obsahuje MD5 hash dát
- OBJLIFELOGS - obsahuje za sebou uvedené logy "života objektu"
Na získanie podrobných informácií o tom, ktorými štruktúrami sú definované objekty systému D2000, aké atribúty tieto štruktúry obsahujú, aké sú typy hodnôt týchto atribútov a aké hodnoty môžu tieto atribúty nadobúdať je možné použiť program pre výpis aktuálnej štruktúry. Súčasne tento výpis obsahuje nepodporované objekty a vymenované typy.
Rezervovaná sekcia REFERENCES
Obsah sekcie z príkladu XML súboru:
<HOBJ_REF> <uid>A25DED0E4DA94B4895A119370E3AF4FB</uid> <name>SV.Limits</name> <objType>D2RECORD</objType> <valType>Rec</valType> </HOBJ_REF> <COL_REF> <col_idx>1</col_idx> <col_name>VHL</col_name> <col_valType>Int</col_valType> </COL_REF> <HOBJ_REF> <uid>USER_VAR</uid> <name>USER_VAR</name> <objType>SYSTEM</objType> <valType>NAN</valType> </HOBJ_REF>
Obsahuje štruktúry:
- HOBJ_REF reprezentujúce objektové referencie objektu
- COL_REF reprezentujúce stĺpcové referencie objektu (objekt ich obsahuje, ak je objekt definícia štruktúry alebo na ňu odkazuje)
Popis vlastností objektových referencií:
- každá objektová referencia musí mať nastavený minimálne atribút name
- atribúty uid, objType a valType v objektovej referencii sú nepovinné
- ak je atribút uid v objektovej referencii nastavený, pri párovaní objektových referencií má prioritu pred atribútom name
Popis vlastností stĺpcových referencií:
- stĺpcové referencie musia nasledovať za príslušnou objektovou referenciou
- každá stĺpcová referencia musí mať nastavený minimálne atribút col_name
- atribúty col_idx a col_valType v stĺpcovej referencii sú nepovinné
- ak je atribút col_idx v stĺpcovej referencii nastavený, ma párovaní stĺpcových referencií prioritu pred atribútom col_name
Rezervovaná sekcia CFGRECORDS
Obsah sekcie z príkladu XML súboru:
<TObjItemData> <Id>0</Id> <Name>U.TimeSlice</Name> <Descript>Time Slice</Descript> <Typ>USER_VAR</Typ> <ParentId>USER_VAR</ParentId> <Value_Type>TmR</Value_Type> <CreateTime>08.10.2009 08:10:31.366</CreateTime> <ModifyTime>08.10.2009 08:18:02.938</ModifyTime> ... <uuid>5CB809E9342B7A46BD790A8C7D14C69E</uuid> </TObjItemData> <tUserVarData_Full> <tUserVarData> <MANUAL>True</MANUAL> <MANUAL_VAL/> <FLAGS/> <VALUE_TIME>08.10.2009 08:10:31.379</VALUE_TIME> <MONITOR>False</MONITOR> <SAVE_VALUE>True</SAVE_VALUE> </tUserVarData> <startVal/> </tUserVarData_Full>
V tejto sekcii sa musí vždy vyskytovať štruktúra TObjItemData (len jedenkrát) a to hneď na jej začiatku. Jednoznačne identifikuje objekt, ktorého konfigurácia je uložená v XML súbore. Za touto štruktúrou nasledujú štruktúry, ktorých počet a pomenovanie je závislé od konkrétneho typu objektu. Napríklad vyššie uvedený objekt je typu USER_VAR obsahuje ešte štruktúru s názvom tUserVarData_Full.
Popis vlastností identifikačnej šturktúry:
- atribút Id reprezentuje Id objektu (údaj, ktorý ma význam pri operácii XML Import)
- atribút Name musí byť vždy zadaný
- atribút uuid, ak je zadaný, má pri párovaní objektov prioritu pred atribútom Name
Rezervovaná sekcia MEMBEROFLOGGROUP
Obsah sekcie z príkladu XML súboru:
<member>SELT\CD8FD25EF8A690341B111F5274CDB5AB</member>
Popis vlastností hodnoty memeber:
- reprezentuje zaradenie objektov do logických skupín
- musí obsahovať názov logickej skupiny (pred znakom '\')
- môže obsahovať aj uid logickej skupiny (za znakom '\')
Poznámka: Pri operácii XML Import vplýva táto hodnota na členstvo objektu v jednotlivých logických skupinách.
Rezervovaná sekcia MEMBEROFRESGROUP
Obsah sekcie z príkladu XML súboru:
<member>Home_s\04CB44144B2CD8E46955D846D30B0F72</member>
Popis vlastností hodnoty memeber:
- reprezentuje zaradenie objektov do skupín objektov
- musí obsahovať názov skupiny objektov (pred znakom '\')
- môže obsahovať aj uid skupiny objektov (za znakom '\')
- ak je názov skupiny objektov uzavretý v '[' a ']', objekt bol pridaný do skupiny s potomkami
Rezervovaná sekcia CRC
Obsah sekcie z príkladu XML súboru:
a7a8bda021932a3547e6553cb8980273
Hodnota CRC predstavuje MD5 hash vytvorený z obsahu XML súboru. Zahŕňa dáta od <ROOT> elementu (včítane <ROOT> elementu) až po riadok pred CRC sekciou (vrátane znakov CR, LF alebo oboch). Vyhodnotenie CRC hodnoty má význam pre XML Import a XML Repository.
Vyhodnotenie CRC hodnoty:
- sekcia sa v dátach nachádza
- MD5 hash zodpovedá tejto hodnote - dáta neboli modifikované
- MD5 hash nezodpovedá tejto hodnote - dáta boli modifikované
- sekcia sa v dátach nenachádza - nedá sa určiť, či boli dáta modifikované
Vyhodnotenie tejto CRC hodnoty má zásadný vplyv na platnosť atribútu ModifyTime štruktúry TObjItemData v rezervovanej sekcii <CRGRECORDS>, čo sa prejaví pri operácii XML Import nasledovne:
- ak je CRC hodnota platná, potom je čas modifikácie objektu nastavený na hodnotu atribútu ModifyTime z XML súboru
- ak je CRC hodnota neplatná, potom je čas modifikácie objektu nastavený na čas XML súboru alebo na aktuálny čas, ak bol čas XML súboru nedefinovaný
- ak bola CRC hodnota neplatná, alebo sa nenachádzala v XML súbore a pred operáciou XML Import je čas určený na zmenu rovný pôvodnému času modifikácie objektu, zmení import tento čas modifikácie na aktuálny čas
Rezervovaná sekcia OBJLIFELOGS
Obsah sekcie z príkladu XML súboru:
<tObjLifeLogData> <name>U.TimeSlice</name> <state>OLA_CREATED</state> <modify_time>08.10.2009 08:16:23.761</modify_time> <user_name>s</user_name> <process_name>WS1JSTF2.CNF</process_name> <computer_name>WS1JSTF2</computer_name> <log_type>OLT_CONFIG</log_type> <comment_text/> </tObjLifeLogData>
Za sebou uvedené štruktúry tObjLifeLogData reprezentujú logy "života objektu"
Popis vlastností log štruktúry:
- name v logu sa môže odlišovať od name objektu (nakoľko objekt mohol byť premenovaný)
- uid a id sa v logu nenachádza, nakoľko je obsiahnuté priamo v objekte
- do cieľovej konfigurácie sa importujú len tie logy objektu, ktoré tam ešte pre daný objekt nie sú
Podporované typy hodnôt atribútov štruktúr
Medzi podporované typy hodnôt atribútov štruktúr patria:
Vymenovaný typ | Stručný popis hodnoty atribútu | Príklad elementu v XML súbore |
---|---|---|
T_RECORD_NAME | Interné meno štruktúry. | meno tagu štruktúry |
T_RECORD | Hodnota typu štruktúra. | vnorená štruktúra <tCalcData> v <tCalcData_Full> |
T_ARRAY | Hodnota typu pole štruktúr rovnakého typu. | vnorené pole štruktúr <Tprvok_pola_?> v <STRIP_DATA> |
T_HOBJ | Meno objektu. | <ParentId>DIAGRAMS</ParentId> |
T_HOBJ_KEY | Meno objektu, ktoré je zároveň kľúčovou položkou. | <ID_RESOURCE>Home_Pjanko</ID_RESOURCE> |
T_VOBJ | Meno objektu, riadok a stĺpec. | <CtrlObject>P.IF500_RS_WatchDog</CtrlObject> |
T_BOOLEAN | Vymenovaný typ (hodnota True alebo False). | <Read_Only>False</Read_Only> |
T_BITSET | Pole vymenovaných typov (vymenované hodnoty). | <IsValueDelay>Off</IsValueDelay> |
T_ENUM | Vymenovaný typ (vymenované hodnoty). | <Typ>POINT</Typ> |
T_SIGNED_INT | Celočíselná hodnota <-2147483647 .. 2147483648>. | <TransPalIdx>0</TransPalIdx> |
T_UNSIGNED_INT | Celočíselná hodnota <0 .. 4294967295>. | <Id>200449</Id> |
T_SIGNED_INT_KEY | Celočíselná kľúčová hodnota <-2147483647 .. 2147483648>. | <grObjectNr>1163</grObjectNr> |
T_UNSIGNED_INT_KEY | Celočíselná kľúčová hodnota <0 .. 4294967295>. | <Row>0</Row> |
T_FLOAT | Neceločíselná hodnota. Hodnoty väčšie ako 1.0E+38 budú interpretované ako hodnota 1.0E+38 a hodnoty menšie ako -1.0E+38 budú interpretované ako hodnota -1.0E+38. | <BaseValue>1.00000000000000E+00</BaseValue> |
T_D2TIME | Hodnota určujúca čas a dátum. | <ModifyTime>18.07.2003 11:52:09.674</ModifyTime> |
T_STRING | Textová hodnota s presne definovanou dĺžkou. | <PassCode>ROOT_CFGRECORDS_TUserData_PassCode</PassCode> |
T_BOUNDED_STRING | Textová hodnota s definovanou maximálnou dĺžkou. | <Name>D.PIPA_CHSO2_Mh</Name> |
T_UNBOUNDED_STRING | Textová hodnota s neobmedzenou dĺžkou. | <statement>TextTextTextTextText</statement> |
Typy hodnôt sa delia na:
- štruktúrované - T_RECORD a T_ARRAY
- jednoduché - všetky ostatné
Reťazové hodnoty T_STRING, T_BOUNDED_STRING alebo T_UNBOUNDED_STRING sa ďalej členia na:
- SDT_NORMAL - klasický reťazec
- SDT_EXPRESSION - reťazec typu výraz
- SDT_RAW_DATA - reťazec označujúci binárne dáta
Vlastnosti typu SDT_RAW_DATA:
- atribút typu SDT_RAW_DATA poukazuje na skutočnosť, že k danému XML súboru existuje binárny súbor
- dáta binárneho súboru predstavujú skutočnú hodnotu atribútu typu SDT_RAW_DATA
- hodnota atribútu typu SDT_RAW_DATA uvedená v XML súbore obsahuje vnorenie atribútu (je ignorovaná)
- XML Export ukladá binárny súbor pod názvom <meno_objektu>_<vnorenie_atribútu>.bin
- XML Import hľadá binárny súbor pod názvom <meno_xml_súboru>_<vnorenie_atribútu>.bin
- pokiaľ nie je názov objektu v XML súbore premenovaný (element <Name>), potom XML Export aj XML Import pracuje s rovnakým názvom binárneho súboru (napríklad U.UserVar_ROOT_CFGRECORDS_TUserData_PassCode.bin), ktorý je uložený pri XML súbore (je jeho nevyhnutnou súčasťou)
Vlastnosti typu T_ARRAY:
- názov položiek má tvar NazovPolozky_[X] (namiesto [X] je buď rozsah hodnôt 0..N alebo hodnoty vymenovaného typu)
- samotné položky môžu byť typu T_RECORD, alebo niektorého jednoduchého typu
Príklad XML súboru reprezentujúceho objekt systému D2000
Nasledujúci príklad zobrazuje uloženie konfigurácie objektu typu USER_VAR s názvom U.TimeSlice do XML súboru:
<?xml version="1.0" encoding="windows-1250"?> <!--$Date: 2012/10/19 05:30:58 $ $Revision: 1.7 $ $Author: pbrezina $ $ExpSubDir: Common\Planner $--> <ROOT> <REFERENCES> <HOBJ_REF> <uid>A25DED0E4DA94B4895A119370E3AF4FB</uid> <name>SV.Limits</name> <objType>D2RECORD</objType> <valType>Rec</valType> </HOBJ_REF> <COL_REF> <col_idx>1</col_idx> <col_name>VHL</col_name> <col_valType>Int</col_valType> </COL_REF> <HOBJ_REF> <uid>USER_VAR</uid> <name>USER_VAR</name> <objType>SYSTEM</objType> <valType>NAN</valType> </HOBJ_REF> </REFERENCES> <CFGRECORDS> <TObjItemData> <Id>0</Id> <Name>U.TimeSlice</Name> <Descript>Time Slice</Descript> <Typ>USER_VAR</Typ> <ParentId>USER_VAR</ParentId> <Value_Type>TmR</Value_Type> <CreateTime>08.10.2009 08:10:31.366</CreateTime> <ModifyTime>08.10.2009 08:18:02.938</ModifyTime> <Text_Palette/> <Read_Only>False</Read_Only> <TECH_UNIT/> <UseLimits>False</UseLimits> <VHL>1.00000000000000E+38</VHL> <HL>1.00000000000000E+38</HL> <LL>-1.00000000000000E+38</LL> <VLL>-1.00000000000000E+38</VLL> <VHL_ID>SV.Limits[1]^VHL</VHL_ID> <HL_ID/> <LL_ID/> <VLL_ID/> <Hysterezia>0.00000000000000E+00</Hysterezia> <TransPalIdx>0</TransPalIdx> <Hidden>False</Hidden> <uuid>5CB809E9342B7A46BD790A8C7D14C69E</uuid> </TObjItemData> <tUserVarData_Full> <tUserVarData> <MANUAL>True</MANUAL> <MANUAL_VAL/> <FLAGS/> <VALUE_TIME>08.10.2009 08:10:31.379</VALUE_TIME> <MONITOR>False</MONITOR> <SAVE_VALUE>True</SAVE_VALUE> </tUserVarData> <startVal/> </tUserVarData_Full> </CFGRECORDS> <MEMBEROFLOGGROUP> <member>SELT\CD8FD25EF8A690341B111F5274CDB5AB</member> </MEMBEROFLOGGROUP> <MEMBEROFRESGROUP> <member>Home_s\04CB44144B2CD8E46955D846D30B0F72</member> </MEMBEROFRESGROUP> <CRC>a7a8bda021932a3547e6553cb8980273</CRC> <OBJLIFELOGS> <tObjLifeLogData> <name>U.TimeSlice</name> <state>OLA_CREATED</state> <modify_time>08.10.2009 08:16:23.761</modify_time> <user_name>s</user_name> <process_name>WS1JSTF2.CNF</process_name> <computer_name>WS1JSTF2</computer_name> <log_type>OLT_CONFIG</log_type> <comment_text/> </tObjLifeLogData> </OBJLIFELOGS> </ROOT>
Súvisiace stránky:
0 Comments