Koexistencia JAVA a ESL
Koexistencia Java a ESL
Schémy a Eventy môžu obsahovať súčasne aj ESL aj JAVA skript.
Tieto skripty bežia paralelne a nezávisle na sebe. Nezávisle na sebe sú vykonávané aj inicializačné časti (medzi BEGIN a END v ESL a metóda onInit() v Jave). Preto, ak sa v inicializačnej časti ESL inicializuje nejaký zdieľaný stav (napr. premenná schémy), v inicializačnej časti Javy tento stav nemusí byť ešte viditeľný. Je ale dodržaná kauzalita udalostí, tj. ak je v ESL nastavená lokálna premenná schémy a následne je zavolaná RPC do Javy, tak vo vykonávaní RPC v Jave je už lokálna premenná nastavená. V prípade, že je potrebné konzistentne inicializovať stav v ESL a v JAVE a potom vykonať nejakú činnosť v ESL, tak je možné riešiť to nasledovným spôsobom:
ESL ČASŤ
BEGIN
; inicializuj stav v ESL
; ...
CALLJ ... myInit() SYNC ...
; na tomto mieste sa môžem spoľahnúť, že java časť onInit() aj myInit() už boli vykonané
;
;
END JAVA ČASŤ
public void myInit() {
// tu sa nainicializuje stav v jave
// ...
}prípadne
ESL ČASŤ
RPC PROCEDURE DoSomething
; na tomto mieste sa môžem spoľahnúť, že aj BEGIN..END časť aj onInit() a myInit() už boli vykonané
END DoSomething
BEGIN
; inicializuj stav v ESL
; ...
CALLJ ... myInit() ASYNC ...
END
------------------- JAVA ČASŤ
public void myInit() {
// tu sa nainicializuje stav v jave
// ...
callESLAsync(null, null, 0, "DoSomething", null);
}
-------------------Súvisiace stránky: