Akcia
CALL vykoná volanie
RPC (RPCX) procedúry s menom
ProcName. Za menom procedúry nasleduje v zátvorkách zoznam parametrov oddelených čiarkami.
Počet (a typy) parametrov musia byť zhodné s počtom parametrov volanej procedúry (ak nie je zhodný počet parametrov je generovaná výnimka
_ERR_INV_NUM_PARAMS*).
Ak je niektorý parameter v deklarácii procedúry označený ak vstupno-výstupný, zodpovedajúci parameter pri volaní procedúry nesmie byť konštanta (v prípade chyby je generovaná výnimka
_ERR_SET_CONST).
Parameter
procIdent je odkaz na objekt typu
Proces, na ktorom je objekt
objIdent otvorený. Pre objekt typu
Event je to proces
D2000 EventHandler, ktorý je jeho
rodičom (parent) alebo proces, na ktorom je volaný Event otvorený (akcia OPENEVENT). Pre objekt typu
D2000 HI, v ktorom je schéma otvorená.
Ak zadaný proces nemá otvorený žiadaný objekt, event generuje chybu
_ERR_OBJECT_NOT_FOUND*.
Parameter
INSTANCE určuje číslo inštancie objektu (schémy alebo eventu).
Ak je pre identifikátor
objIdent použitá lokálna premenná typu RefId, parametre
INSTANCE a
ON nie sú prípustné (ich hodnoty sú dané kontextom volania).
Ak sa volá RPC procedúra medzi Lokálnou a Remote časťou "Klient a server" konfigurácie eventu (HIS Server), identifikátor
objIdent sa vynecháva.
Blok kódu |
---|
language | esl |
---|
theme | Confluence |
---|
|
CALL [] ProcName [(paramIdent1 [,paramIdent2]...)] ... |
Chyby označené znakom * sú generované na strane volaného skriptu. Volajúci skript (akcia
CALL) túto chybu môže zistiť jedine pri synchrónnom volaní a pri zápise akcie s priradením. Ak nastane chyba, jej kód bude naplnený do premennej
_ret ktorá musí byť typu
INT.
Možné typy parametrov: pozri akciu
PROCEDURE.
Volanie typu BROADCAST je povinne asynchrónne. Ako meno procesu (parameter procIdent) sa uvedie kľúčové slovo ALL.
Pri vykonávaní takéhoto volania systém automaticky distribuuje požiadavku na vykonanie procedúry na všetky bežiace procesy D2000 HI alebo D2000 EventHandler. Tieto procesy vyhľadajú všetky inštancie (alebo základné objekty) skriptov, ktoré sú identifikované parametrom objIdent a generujú pre ne požiadavky na vykonanie procedúry ProcName s príslušnými parametrami.
Kľúčové slovo INSTANCE nie je pri tomto type volania povolené.
Od verzie V8.00.008 R9 má akcia CALL implementovanú optimalizáciu prenosu formálnych parametrov. Táto optimalizácia zabezpečí, že formálny parameter RPC procedúry bude "odkaz" na skutočný parameter. Priamy dôsledok je podstatné zvýšenie rýchlosti volania RPC procedúr.
Podmienky:
- volanie prebieha na rovnakom procese *.EVH,
- volanie procedúry je synchrónne,
- parameter musí byť typu Record
- parameter musí byť IN/OUT.
Kľúčové slovo
PRTY umožňuje zadanie priority vykonania RPC procedúry. Táto vlastnosť zabezpečí prioritné vykonanie RPC procedúry. Priorita je zadaná parametrom
prtyIdent za kľúčovým slovom
PRTY.
Pomocou RPC procedúr je možný prenos
dátových kontajnerov a handle na
databázové spojenia.
Pri volaní procesu JAPI platia nasledujúce pravidlá:
- parameter objIdent je prázdny objekt (pozri príklad),
- nie je možné použiť kľúčové slovo INSTANCE,
- nie je možné volať RPC procedúru, ktorá je implementáciou ESL Interface,
- identifikátor procesu (procIdent) musí byť typu IC_HOBJ_EXPR (výraz typu HOBJ),
- príjem volaní na strane procesu JAPI musí byť implementovaný ako listener registrovaný metódou D2Session::setRPCListener.