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:
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
public void myInit() { // tu sa nainicializuje stav v jave // ... }
prípadne
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 -------------------
public void myInit() { // tu sa nainicializuje stav v jave // ... callESLAsync(null, null, 0, "DoSomething", null); } -------------------
Súvisiace stránky:
0 komentárov