Pod pojmom dávka príkazov (batch) sa rozumie množina príkazov, pri ktorých nezáleží na poradí ich spracovania. Dávkovým spracovaním príkazov je možné dosiahnuť zrýchlenie spracovania vďaka možnosti paralelizácie.

Dávka príkazov sa vytvára funkciou EDA_CreateBatch, ktorá vracia identifikátor dávky. Následne sa do dávky pridajú príkazy na spracovanie a to tak, že sa zavolá funkcia, ktorá podporuje dávkové spracovanie s nastaveným parametrom batchId. Takto zavolaná funkcia sa nevykoná hneď, ale vloží sa na spracovanie v rámci dávky. Po naplnení dávky príkazmi sa spustí spracovanie funkciou EDA_ExecuteBatchRec.

V prípade potreby je možné spracovanie dávky prerušiť zavolaním funkcie EDA_CancelBatch.

Pretože spracovanie dávky príkazov môže byť časovo náročná operácia a pre užívateľa je potrebné zobrazovať progres spracovania dávky, existuje možnosť zaregistrovať obsluhu informačných správ z EDA v ESL.
Dávkové spracovanie v EDA definuje dva typy informačných správ:

Ich obsluha sa v ESL registruje pomocou akcie ON, za ktorou sa napíše typ obsluhovanej správy a RPC procedúra, ktorá sa pri odchytení takejto správy zavolá.


Príklad použitia

 ; schema S.EDA_Batch_Test
 ; v tejto scheme sa vytvori a spusti davkove spracovanie
 INT _batchId, _retCode
 TIME _bt, _et
 RECORD NOALIAS (SD.EDA_InsertValuesFromVector_Params_V1) _insParams
 RECORD NOALIAS (SD.EDA_ExecuteBatch_Params_V1) _batchParams
 
 ; vytvori batch
 CALL %EDA_CreateBatch(_batchId, _retCode)
 
 _insParams[1]^structVersion := 1
 _insParams[1]^batchId := _batchId
 _bt := %StrToTimeEx("2014-01-01 00:00:00", "rrrr-mm-dd hh:mi:ss")
 _et := %StrToTimeEx("2015-01-01 00:00:00", "rrrr-mm-dd hh:mi:ss") - 1
 
 ; vlozi prikazy do batch-u
 CALL %EDA_InsertValuesFromVectorRec("vector.read.1", "vector.insert.1", _bt, _et, 0, _insParams, _retCode)
 CALL %EDA_InsertValuesFromVectorRec("vector.read.2", "vector.insert.2", _bt, _et, 0, _insParams, _retCode)
 CALL %EDA_InsertValuesFromVectorRec("vector.read.3", "vector.insert.3", _bt, _et, 0, _insParams, _retCode)
 CALL %EDA_InsertValuesFromVectorRec("vector.read.4", "vector.insert.4", _bt, _et, 0, _insParams, _retCode)
 
 _batchParams[1]^structVersion := 1
 _batchParams[1]^keepRunning := @TRUE
 _batchParams[1]^infoOptions := 25 ; posle informaciu (EDA_BATCH_INFO) po spracovani 25%, 50%, 75% a 100% prikazov
 _batchParams[1]^commandInfo := 1 ; posle informaciu (EDA_BATCH_COMMAND_INFO) v pripade kazdeho neuspesneho spracovania prikazu
 
 ; spusti batch
 CALL %EDA_ExecuteBatchRec(_batchId, _batchParams, _retCode)
 ; schema S.EDA_Batch_Test_Listener
 ; v tejto scheme budu odchytene a spracovane informacne spravy o spracovani davky
 RPC PROCEDURE OnEDABatchInfo (IN RECORD NOALIAS (SD.ARR_OBJECT3) _params)
  MESSAGE "Batch id = " + %IToStr(_params[1]^val1) + "; progress = " + %RToStr(100*_params[1]^val2, "###.#") + "%; errorCode = " + %IToStr(_params[1]^val3) ON _FROM_HIP
 END OnEDABatchInfo
 
 RPC PROCEDURE OnEDABatchCommandInfo (IN RECORD NOALIAS (SD.ARR_OBJECT3) _params)
  MESSAGE "Batch id = " + %IToStr(_params[1]^val1) + "; command idx = " + %IToStr(_params[1]^val2) + "; errorCode = " + %IToStr(_params[1]^val3) ON _FROM_HIP
 END OnEDABatchCommandInfo
 
 BEGIN
  ; zaregistruje obsluhu sprav o priebehu batch-u
  ON "EDA_BATCH_INFO" GOTO OnEDABatchInfo
  ; zaregistruje obsluhu sprav o spracovani jednotlivych prikazov batch-u
  ON "EDA_BATCH_COMMAND_INFO" GOTO OnEDABatchCommandInfo
 END

Príkazy, ktoré podporujú dávkové spracovanie:

0 komentárov

Nie ste prihlásený. Akékoľvek zmeny, ktoré vykonáte, sa označia ako anonymné. Ak už máte svoj účet, pravdepodobne sa budete chcieť prihlásiť .