XML sdílení dat je postaveno na architektuře
Klient-Server, tzn. jen jedna aplikace (Web server) vlastní data a jedna nebo více aplikací (Web klienti) tato data čtou nebo do nich zapisují.
aplikace PROMOTIC umí být jak Web serverem tak Web klientem XML dat.
PROMOTIC Web server XML dat se realizuje pomocí objektu
PmaData (a jeho karty "
Web server") nebo pomocí objektu
PmaDataTable (a jeho karty "
Web server"). Objekt
PmaData/
PmaDataTable v tom případě představuje Web komponentu. V dané aplikaci však je nutno mít jeden objekt
PmaWeb, který všechny Web komponenty aplikace nabízí jako jeden Web server, viz
Přehled Web technologie v systému PROMOTIC.
PROMOTIC Web klient XML dat se realizuje také pomocí objektu
PmaData/
PmaDataTable a jeho metod
ReadFromWeb a
WriteToWeb. Pokud aplikace má být pouze Web klientem, pak objekt
PmaWeb nemusí být přítomen.
Tímto způsobem si mohou dvě aplikace PROMOTIC jednoduše vyměňovat data v reálném čase. Objekty
PmaData musí v obou (nebo více) aplikacích obsahovat stejné proměnné, definované v kartě "
Data".
Příklad aplikace viz
Příklad komunikace pomocí XML.
Objekt
PmaDataTable může dynamicky měnit počet svých dat pomocí metod
InsertRow,
RemoveRow,
InsertCol nebo
RemoveCol.
XML přenosem však z bezpečnostních důvodů počet dat nelze automaticky měnit! Pokud je nutno změnit například na klient aplikaci počet dat tak, aby byl stejný jako na serveru, pak je nejprve nutné zjistit počet řádků na serveru (např. XML dotazem přes objekt
PmaData), pak provést změnu pomocí výše zmíněných metod a teprve pak volat metodu
ReadFromWeb.
XML komunikace podporuje mezi objekty
PmaData přenos hierarchickým způsobem. Myslíme tím to, že v objektu
PmaData nemusí být jen jednoduché proměnné (jako je
Integer,
Single, atd.) ale datovou položkou může být i
reference na data jiného objektu PmaData. Uvažujme příklad, kdy 1. položka objektu
/Data/DataA se má odkazovat na data objektu
/Data/DataB (objekt
DataA i
DataB jsou typu
PmaData). Tehdy 1. datová položka objektu
DataA musí být typu
Object a nastavena například skriptovým příkazem:
JavaScriptVBScriptVyber a zkopíruj do schránky
pMe.Pm("/Data/DataA").Item(1) = pMe.Pm("/Data/DataB");
Set pMe.Pm("/Data/DataA").Item(1) = pMe.Pm("/Data/DataB")
nebo místo toho lze v 1.datové položce vytvořit datovou vazbu
PP Vlastnost Pma objektu nebo jeho podobjektu (Ini Při inicializaci vlastnosti). V této
PP vazbě vyplníme cestu k objektu
DataB ale položku pro zadání vlastnosti necháme prázdnou. Tak bude 1. položka objektu
DataA spojena přímo s objektem
DataB.
Pokud server i klient budou mít tyto objekty nakonfigurovány stejně, pak lze jedním přenosem obsahu objektu
DataA přenášet i obsah objektu
DataB. Tato koncepce je výhodná, pokud máte v aplikaci více objektů
PmaData, ale všechny chcete přenášet najednou v jedné zprávě.
Web klientem může být také například
HTML stránka prohlížená pomocí Web prohlížeče (
Chrome,
Firefox,
Edge,
InternetExplorer ...). V tom případě lze použít v HTML stránce
tag <xml>, který umožňuje číst XML data z Web serveru. Lze také využít dynamické HTML stránky které umí číst i zapisovat do XML dat.