Domain: tekrar eden alan tanımını tek yerde toplamak

Bir uygulamada "müşteri adı" gibi bir alan onlarca ekranda, raporda ve tablo kolonunda tekrar tekrar tanımlanabilir — uzunluk, formatlama, açıklama her yerde ayrı ayrı girilirse bir gün birinde unutulur. TROIA'da bu sorunu çözmek için Domain kavramı vardır: bir kontrolün, tablo alanının ya da veritabanı kolonunun temel özelliklerini tek bir yerde saklayan, yeniden kullanılabilir bir veri tanımı.

Bir domain neleri saklar

  • Field Type / Field Length / Field Decimal: alanın veri tipi, uzunluğu, ondalık basamağı
  • Check Table / Zoom Dialog: alana bağlı zoom (arama) davranışı
  • Read Only / Zoom Only: alanın düzenlenebilirlik durumu
  • Case Sensitivity: büyük/küçük harf duyarlılığı
  • Field Picture: sanal kolonlar için formatlama
  • SLabel / MLabel / LLabel / HLabel: farklı uzunluklarda başlık/etiket seçenekleri
  • Options: combobox için sabit seçenek listesi
  • Tooltip: kullanıcıya gösterilecek yardım metni

Event, transfer ve validasyon kodları

Bir domain'e, o alanı kullanan her kontrol için otomatik çalışacak kod da bağlanabilir:

  • Event kodları: TEXTCHANGED, ZOOMBEFORE, ZOOMAFTER, LOSEFOCUS, GAINFOCUS, RIGHTCLICKMENU, DRAG, DROP, PASTE
  • Transfer kodları: client-server arasında veriyi dönüştürür (ters yönü de ayrıca tanımlanmalıdır)
  • Validasyon kodu: veri geçerliyse 1, geçersizse 0 döner

Nerede saklanır

Domain tanımları SYSDOMAINS, SYSDOMAINSX, SYSDOMAINSTXT, SYSDOMAINLINK, SYSDOMAINLINKX tablolarında tutulur — dialog'ların SYSDIALOGS/SYSCONTROLS ile saklanmasına benzer bir mantık.

Sonuç

Domain'i "bir alanın DNA'sı" gibi düşünebilirsiniz: uzunluk, formatlama, validasyon kuralı bir kere tanımlanır, sonra o domain'e bağlanan her kontrol ve kolon aynı davranışı otomatik miras alır. Aynı alanı elle onlarca yerde tekrar tanımlamaktan çok daha güvenlidir.