Porovnávané verzie

Kľúč

  • Tento riadok sa pridal
  • Riadok je odstránený.
  • Formátovanie sa zmenilo.

...

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
languagejs
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
languagejs
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
languagejs
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
languagejs
titlereceiveDataStreamHandler
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
languagejs
// Registrovateľná Javascript funkcia
smartWebSessionRPC(message) {
    // ...
}


// Registrácia funkcie
d2Api.subscribeRpc("SmartWebSessionRPC", smartWebSessionRPC);


// Odregistrovanie funkcie
d2Api.subscribeRpc(smartWebSessionRPC);

...

Blok kódu
languageesl
INT _caller ; HOBJ SmartWeb session, ktorá si vyžiadala spätné volania


RPC PROCEDURE InitCallbacks
  _caller := %GetRPCCallerProcess()
END InitCallbacks

...