...
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.
Jediný povinný atribút je atribút url, ktorý určuje cestu ku CometD servletu na serveri - môže byť zadaný ako absolútna cesta ("http://server:port/aplikacia/api/cometd") alebo ako relatívna cesta v rámci webového servera ("/aplikacia/api/cometd").
Medzi ďalšie užitočné atribúty patrí najmä atribút maxNetworkDelay, ktorý určuje dobu v milisekundách, po uplynutí ktorej je požiadavka na server považovaná za zlyhanú. Tento parameter je vhodné zvýšiť z predvolených 10 sekúnd na vyššie číslo, ak bežné, synchrónne volané RPC procedúry majú dobu spracovávania dlhšiu.
Voliteľne je možné definovať obsluhu chybových stavov metódou registerErrorHandler - v rámci SmartWeb Frameworku je pre tento účel dodávaná funkcia reportError, ktorá v prípade chyby zobrazuje lokalizovaný dialóg.
Blok kódu | ||
---|---|---|
| ||
import D2Api from "framework\d2\d2Api" import reportError from "framework\basic\reportError" let cometdConfiguration = { url: "/smartWeb/api/cometd", logLevelmaxNetworkDelay: "",60000 } let d2Api = new D2Api(cometdConfiguration); d2Api.registerErrorHandler(reportError); d2Api.connect(); |
...
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 | ||
---|---|---|
| ||
var extParameters = {}; var receiveDataStreamHandler = null; // Načíta hodnoty objektu H.ArchivedValue v intervale <startDate, endDate> var arcData = await d2Api.loadArchive("H.ArchivedValue", startDate, endDate, extParameters, receiveDataStreamHandler) .call(); // Načíta hodnoty objektov H.ArchivedValue1, H.ArchivedValue2 v intervale <startDate, endDate> var arcDataMulti = await d2Api.loadArchives(["H.ArchivedValue1", "H.ArchivedValue2"], startDate, endDate, extParameters).call(); |
Voliteľný parameter extParameters slúži na definovanie atribútov hodnôt, ktoré majú byť vrátené - zoznam sa definuje v atribúte returnFields - popísaný v sekcii Serializácia dát medzi klientom a API rozhraniami. Okrem toho môže byť parametrom extParameters zadefinované prevzorkovanie hodnôt pomocou atribútu oversampleSeconds (krok prevzorkovania je v sekundách) a taktiež je možné obmedziť počet vrátených hodnôt z archívu nastavením atribútu limitDataLength. V prípade vynechania parametra extParameters budú vrátené len hodnoty bez ďalších atribútov a neprebehne žiadne prevzorkovanie ani orezanie dát.
Blok kódu | ||
---|---|---|
| ||
var extParameters = {
returnFields: ["ValueTime"], // okrem hodnôt sú požadované aj časové značky hodnôt
oversampleSeconds: 3600, // hodnoty budú prevzorkované s hodinovým krokom
limitDataLength: 1000 // maximálne bude vrátených 1000 hodnôt
} |
Pri načítaní väčšieho množstva dát z archívu, sú tieto dáta zo systému D2000 priebežne streamované po dávkach. Ak je žiadané zachytávať a spracovávať tieto čiastkové údaje, tak je to možné pomocou voliteľného parametra receiveDataStreamHandler, ktorý definuje funkciu s dvoma parametrami - v prvom budú odovzdané hodnoty dávky a v druhom je príznak či ide o poslednú dávku.
Blok kódu | ||||
---|---|---|---|---|
| ||||
function receiveDataStreamHandler(data, noModeData) {
// spracovanie dát
} |
Volanie D2000 RPC
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 | ||
---|---|---|
| ||
// Registrovateľná Javascript funkcia smartWebSessionRPC(message) { // ... } // Registrácia funkcie d2Api.subscribeRpc("SmartWebSessionRPC", smartWebSessionRPC); // Odregistrovanie funkcie d2Api.subscribeRpc(smartWebSessionRPC); |
...
Blok kódu | ||
---|---|---|
| ||
INT _caller ; HOBJ SmartWeb session, ktorá si vyžiadala spätné volania
RPC PROCEDURE InitCallbacks
_caller := %GetRPCCallerProcess()
END InitCallbacks |
...