Porovnávané verzie

Kľúč

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

...

Blok kódu
languagejs
let cometdConfiguration = {
    url: "/smartWeb/api/cometd",
    logLevel: ''"",
}
let d2Api = new D2Api(cometdConfiguration);
d2Api.registerErrorHandler(reportError);
d2Api.connect();

...

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 perametre odovzdá meno D2000 objektu, ktorého zmeny sa budú sledovať, obslužná funkcia, ktorá sa pri zmene hodnoty objektu zavolá, alebo komponent Smart Web Frameworku, ktorý bude na novú hodnotu reagovať a voliteľne 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
languagejs
// Obslužná funkcia zmeny hodnoty objektu
function onSecChange(subscription) {
    // objekt subscription.uniVal bude obsahovať hodnotu a atribúty D2000 objektu
}
...
// Registrácia odberu hodnôt
d2Api.subscribeObject("Sec", onSecChange, {returnFields: ["FormattedValue"]});

Odber hodnôt objektu je možné zrušiť volaním metódy unSubscribeObject, kde sa ako parameter odovzdá zaregistrovaná obslužná procedúra alebo komponent Smart Web Frameworku.

Blok kódu
languagejs
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.

d2Api.loadArchive

...

Blok kódu
languagejs
// Načíta hodnoty objektu H.ArchivedValue v intervale <startDate, endDate>
d2Api.loadArchive("H.ArchivedValue", startDate, endDate, extParameters, receiveDataStreamHandler)


// Načíta hodnoty objektov H.ArchivedValue1, H.ArchivedValue2 v intervale <startDate, endDate>
d2Api.loadArchives(["H.ArchivedValue1", "H.ArchivedValue2"], startDate, endDate, extParameters)

Volanie D2000 RPC

d2Api.rpc

d2Api.rpcJava

d2Api.rpcSBA

Volanie JavaScript funkcií z D2000

d2Api.subscribeRpc

...

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
// Zavolá RPC procedúru Sum na Event skripte E.SmartWebTutorial
const rpcResponse = await d2Api.rpc(
    "E.SmartWebTutorial",
    "Sum",
    1, // prvý parameter - vstupný
    2, // druhý parameter - vstupný
    {type: "real", returnAs: "sum"} // tretí parameter - výstupný
).call();
// rpcResponse.sum obsahuje výstupný parameter RPC ako UniVal hodnotu

Volaná RPC procedúra v ESL má nasledovný predpis:

Blok kódu
languageesl
RPC PROCEDURE Sum (IN REAL _a, IN REAL _b, REAL _c) 
  _c := _a + _b
END Sum

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.

Blok kódu
languagejs
// Registrovateľná Javascript funkcia
smartWebSessionRPC(message) {
    // ...
}


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


// Odregistrovanie funkcie
d2Api.subscribeRpc(smartWebSessionRPC);

Aby bola funkcia volateľná zo systému D2000, musí byť známa session, na ktorej má byť zavolaná. Toto je možné zistiť volaním ľubovolnej, inicializačnej RPC procedúry, v rámci ktorej sa identifikuje proces, z ktorého bola zavolaná.

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


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

 Volanie registrovanej JavaScript funkcie z ESL potom vyzerá nasledovne:

Blok kódu
languageesl
CALL [(0)] SmartWebSessionRPC("Hello Smart Web") ASYNC ON (_caller)

Zmena hesla prihláseného užívateľa

...