Studi Kasus, Prioritas Eksekusi vs Hirarki TfsScript.Parent (FastReport - FastScript)
Penggunakan TfsScript.Parent
mirip dengan uses <something>
dan di setiap instance Buffer Script-nya di perbolehkan di definisikan nama procedure/function yang sama.
Fitur tsb membuat kita bisa mendesain fleksibilitas-nya dgn melakukan override procedure/function di atas-nya.
Maksud-nya, saya buat script standard-nya sbg hirarki/prioritas eksekusi terendah sd tertinggi (jika ada kebutuhan customer yg spesifik).
Sehingga saya tidak perlu copas code yg sama lalu merubah yg dibutuhkan. Jadi dgn hirarki prioritas ini saya berharap bs meng-override procedure/function yg dibutuhkan saja.
Yang menjadi pertanyaan, apakah hirarki tsb menentukan prioritas ? ternyata belum tentu. Yg menentukan prioritas pertama kali adalah jika procedure pemanggilnya berada dalam satu instance, walaupun secara hirarki dia posisi tengah, bahkan semua procedure/function yg ada dlm instance posisi terakhir akan di abaikan.
Berikut dibawah hasil percobaan-nya. Dengan contoh 3 instance TfsScript, sbb:
fsGlobalScript
* -> fsStdScript
-> fsUdfScript
-> fsExecScript
*fsGlobalScript adalah internal dari FastScript (Fast-Report)
Penggunaan-nya di Delphi sbb:
// in delphi fsStdScript.Parent := fsGlobalScript; fsUdfScript.Parent := fsStdScript; fsExecScript.Parent := fsUdfScript;
Jika di dalam masing-2 script kita definisikan
// in scripting buffer fStdScript procedure DoSameName; begin ShowMessage('fStdScript'); end; begin end.
// in scripting buffer fUdfScript procedure DoSameName; begin ShowMessage('fUdfScript'); end; begin end.
// in scripting buffer fExecScript procedure DoSameName; begin ShowMessage('fExecScript'); end; procedure DoDiffName; begin ShowMessage('fExecScript Too'); end; procedure OnCaller(AIndex: integer) begin case AIndex of 0: DoSameName; 1: DoDiffName; end end; begin OnCaller(0); end.
Contoh di atas output-nya: fExecScript
, dimana prioritas dalam satu instance buffer
Jika fExecScript.DoSameName di hapus maka output-nya: fUdfScript
, begitu dan seterus-nya.
Jika procedure OnCaller di letakkan di dlm fUdfScript maka output-nya: fUdfScript
Saat ini saya hanya mencoba kedalaman hirarki parent maksimal 4 instance saja.
--
Semoga bermanfaat