D2Api rozhranie predstavuje základný komunikačný kanál so systémom D2000 pre webové aplikácie. Toto komunikačné rozhranie je na strane klienta implementované v JavaScript-e a je postavené na knižnici CometD.
Nadviazanie a rozpojenie spojenia s D2000
Nadviazanie spojenia s D2000 sa realizuje vytvorením inštancie triedy D2Api, ktorej sa odovzdá konfigurácia pre CometD a následným zavolaním metódy connect. Parametre konfiguračného objektu pre CometD sú popísané v dokumentácii konfigurácie CometD.
...
| Blok kódu | ||
|---|---|---|
| ||
d2Api.disconnect(); |
Počúvanie na zmeny hodnôt objektov D2000
Prihlásiť sa na odoberanie hodnôt objektov D2000 je možné metódou subscribeObject. Tejto metóde sa cez parametre odovzdá meno D2000 objektu, ktorého zmeny sa budú sledovať a obslužná funkcia, ktorá sa pri zmene hodnoty objektu zavolá. Voliteľne ako 3 parameter je možné predať objekt s atribútmi returnFields, prípadne returnTransformation, ktoré určia, ktoré atribúty hodnoty majú byť vrátené a prípadne transformáciu, ktorá sa má nad hodnotami vykonať. Možné hodnoty atribútov returnFields a returnTransformation sú popísané v sekcii Serializácia dát medzi klientom a API rozhraniami.
...
| Blok kódu | ||
|---|---|---|
| ||
d2Api.unSubscribeObject(onSecChange); |
Načítanie hodnôt archívnych objektov D2000
Načítanie hodnôt archívnych objektov D2000 je možné pomocou metód loadArchive a loadArchives, ktoré načítajú hodnoty jedného, resp. viacerých archívnych objektov v danom intervale. Funkcie vracajú Promise objekt, ktorý v prípade úspechu bude obsahovať kompletné načítané dáta. Na volanie týchto funkcií je možné použiť aj async/await syntax.
...
| Blok kódu | ||||
|---|---|---|---|---|
| ||||
function receiveDataStreamHandler(data, noModeData) {
// spracovanie dát
} |
Volanie D2000 RPC implementovanej v ESL
Rovnako ako REST API aj D2Api umožňuje volanie D2000 RPC procedúr napísaných v ESL alebo v Jave. Slúžia na to metódy rpc - volanie ESL RPC, rpcJava - volanie Java RPC a rpcSBA - volanie Java RPC na prenos binárnych dát. Prvé dva parametre týchto metód určujú meno event objektu (skriptu) a názov RPC procedúry. Všetky ďalšie parametre sú odovzdané ako parametre do volanej RPC procedúry. Štruktúra parametrov pre volania RPC je popísaná v časti Serializácia dát medzi klientom a API rozhraniami. Metódy vracajú objekt s metódou call, ktorá vykoná volanie RPC. Návratová hodnota volania RPC je Promise objekt, ktorý v prípade úspešného volania obsahuje požadované výstupné parametre RPC procedúry ako svoje atribúty vo forme Unival hodnôt.
...
| Blok kódu | ||
|---|---|---|
| ||
RPC PROCEDURE Sum (IN REAL _a, IN REAL _b, REAL _c) _c := _a + _b END Sum |
Ďalšie spôsoby volania D2000 RPC
D2Api umožňuje okrem ESL RPC metód volať aj Java RPC metódy prostredníctvom mena eventu alebo mena procesu, zároveň je možné špecifikovať pri volaní aj meno interfacu. Všetky spôsoby volania RPC sú zhrnuté nižšie.
| Blok kódu | ||
|---|---|---|
| ||
// Spôsoby volania ESL RPC cez meno eventu d2Api.rpc(<meno eventu>, <meno RPC>, ...parametre).call(<timeout>); d2Api.rpcWithInterface(<meno eventu>, <meno interfacu>, <meno RPC>, ...parametre).call(<timeout>); // Spôsoby volania Java RPC cez meno eventu d2Api.rpcJava(<meno eventu>, <meno RPC>, ...parametre).call(<timeout>); d2Api.rpcJavaWithInterface(<meno eventu>, <meno interfacu>, <meno RPC>, ...parametre).call(<timeout>); // Spôsoby volania RPC cez meno procesu d2Api.rpcJapi(<meno procesu>, <meno RPC>, ...parametre).call(<timeout>); d2Api.rpcJapiWithInterface(<meno procesu>, <meno interfacu>, <meno RPC>, ...parametre).call(<timeout>); // Spôsob volania Java SBA RPC cez meno eventu s jedinym parametrom typu https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer d2Api.rpcJava(<meno eventu>, <meno RPC>, <array buffer parameter>).call(<timeout>); |
Volanie JavaScript funkcií z D2000
D2Api umožňuje aj spätné volania z D2000 na webový prehliadač a to vo forme registrovaných JavaScript funkcií. Takéto volania sú užitočné najmä pre notifikácie rôznych udalostí, ktoré v systéme D2000 vznikajú asynchrónne. Na registráciu JavaScript funkcie, ktorú je možné volať z D2000 slúži metóda subscribeRpc. Jej parametrami sú názov RPC procedúry, pod ktorým bude funkcia dostupná v rámci systému D2000 a samotná JavaScript funkcia, ktorá bude pri spätnom volaní zavolaná. Všetky parametre funkcie sú objekty typu Unival. Na odregistrovanie funkcie spätného volania slúži metóda unSubscribeRpc s jediným parametrom, a to danou JavaScript funkciou.
...
Pretože jedna SmartWeb session môže mať pod jedným názvom RPC procedúry zaregistrovaných viacero Javascript funkcií, ide tu prakticky o viacnásobné (multicast) volanie, a preto v ňom nie je možné použiť výstupné parametre. Volanie zároveň musí byť asynchrónne.
Zmena hesla prihláseného užívateľa
Rozhranie D2Api umožňuje taktiež zmeniť heslo prihláseného užívateľa. Slúži na to metóda changePassword, ktorá má dva parametre - staré heslo a nové heslo a vracia Promise objekt.
...