Transaction: TROIA kodunun çalışabildiği tek yapı
Bir TROIA kodu çalıştırmak için sunucu tarafında en az bir transaction açık olmalıdır. Transaction aynı zamanda bir değişkenin ulaşabileceği en geniş kapsamdır — global tanımlanan bir değişken, aynı transaction içinde çalışan her dialog ve class kodundan erişilebilir.
CALL TRANSACTION ile programatik çağrı
Bir transaction'ı menüden değil, kod içinden çağırmak için CALL TRANSACTION kullanılır:
CALL TRANSACTION DEVT11 (PARAM1, PARAM2);
Bu haliyle TROIA kodun akışını durdurmaz; çağrılan transaction, mevcut kullanıcı etkileşimi bittikten sonra açılır ve çıktı parametresi almak mümkün değildir.
WITH WAIT: sonucu bekleyip parametre almak
CALL TRANSACTION DEVT11 (PARAM1, PARAM2) WITH WAIT (OUTPUT1, OUTPUT2);
WITH WAIT kullanıldığında kod akışı durur, yeni transaction kullanıcıyla etkileşimli olarak açılır; kullanıcı kapatana kadar çağıran transaction'a geri dönülemez. Kapandığında CALL TRANSACTION'dan sonraki satırdan devam edilir ve çıktı parametreleri kullanılabilir hale gelir.
INSERVER: arayüz olmadan sunucuda çalıştırmak
Kullanıcı arayüzü açmadan, sadece sonucu almak istiyorsanız transaction'ı sunucu tarafında (arka planda) çalıştırabilirsiniz — sunucu, ilk dialog'un event'lerini kullanıcı hiç görmeden simüle eder:
CALL TRANSACTION DEVT11 (PARAM1) INSERVER (OUTPUT1);
Giriş parametreleri ve TRANSCALLED event'i
CALL TRANSACTION komutuna giriş parametresi verilirse, çağrılan transaction'ın ilk dialog'unda AFTER event'inden sonra TRANSCALLED event'i tetiklenir. Parametre gönderilmediyse TRANSCALLED hiç çalışmaz; dialog bu event'i tanımlamak zorunda da değildir.
Batch transaction: zamanlanmış görevler
TROIA'da zamanlanmış (scheduled) bir görev çalıştırmak için de bir transaction açmak gerekir — buna batch transaction denir. Batch kod, "SYST00 - System Transactions & Gadgets" ekranındaki "Batch Code" sekmesinde tanımlanır ve transaction normal açılışını yaptıktan sonra bu kod ayrıca çalıştırılır. Zamanlamanın kendisi TROIA'da değil, işletim sisteminin görev zamanlayıcısında (Windows Task Scheduler, cron vb.) yapılır.
Sonuç
Üç CALL TRANSACTION varyasyonunun (normal, WITH WAIT, INSERVER) farkını bilmek, hangi senaryoda kullanıcı arayüzü açılacağını ve kodun ne zaman "beklediğini" öngörmenizi sağlar.
Yorumlar (0)
Yorum Yaz