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);

  }
-------------------



Napíšte komentár