Ana içeriğe geç

Form Bind Controls

Form Bind Controls
Inputs: 1
Outputs: 1
Kategori: trexMes service

Custom Form üzerindeki kontrolleri (textbox, label, checkbox vs.) veriye bağlar. Hangi kontrolün hangi veri alanına bağlanacağını tanımlar ve panele bağlama bilgisini gönderir.

Property Tablosu

Alan Tip Varsayılan Açıklama
name string Canvas üzerinde gösterilecek ad
formname string (boş) Hangi formun kontrollerine bağlanacak?
formainform boolean false Ana form (AppForm) mı?
props array [] Bağlama listesi: {p: controlName, v: fieldName}
data string (boş) Veriyi nereden okuyacağız (path)
dataType string Kaynak: msg, flow, global, vs.

props Yapısı

Editör arayüzünde her satır iki sütundan oluşur:

Sütun Anahtar Açıklama
Property (p) Kontrol adı XML'deki name attribute'u (örn. txtOrderNo)
Value (v) Field adı Verinin içindeki property adı (örn. orderNo)
[
  { "p": "txtOrderNo",  "v": "orderNo" },
  { "p": "txtCustomer", "v": "customer" },
  { "p": "txtQty",      "v": "qty" }
]

Veri Kaynağı (data + dataType)

dataType ile değer şu kaynaklardan okunabilir:

dataType data örneği Anlamı
msg payload.order msg.payload.order
flow currentOrder flow.get("currentOrder")
global defaultUser global.get("defaultUser")

Tüm dataType seçenekleri →

Çıkış Mesajı

{
  "operationtype": "BindControl",
  "receiveddata": { /* event data */ },
  "name": "OrderForm",
  "bindcontrols": [
    { "Name": "txtOrderNo",  "FieldName": "orderNo" },
    { "Name": "txtCustomer", "FieldName": "customer" },
    { "Name": "txtQty",      "FieldName": "qty" }
  ],
  "value": {
    "orderNo": "ORD-001",
    "customer": "ACME",
    "qty": 100
  }
}

formainform Davranışı

Değer formname Otomatik Senaryo
false Kullanıcı tanımlı Custom dialog'a bağlama
true "AppForm" Ana form'a bağlama
var formname = node.formname;
if (n.formainform == true) {
    formname = "AppForm";
}

Tipik Akış

flowchart LR
    A[Business Events<br/>OrderStartEvent] --> B[Custom Form<br/>OrderForm]
    B --> C[Form Bind Controls<br/>txt* → orderNo,...]
    C --> D[Responser]

    style A fill:#ccffcc,color:#000
    style B fill:#ccffcc,color:#000
    style C fill:#ccffcc,color:#000
    style D fill:#ccffcc,color:#000

Önemli Konular

value Hesaplama Mantığı

value alanı tek bir nesne olarak gönderilir; panel her kontrol için kendi FieldName'i bu nesneden okur.

Eğer data boş bırakılırsa value: null olur ve panel receiveddata'yı kullanır.

Birden Fazla Form

Her form için ayrı bir Form Bind Controls node'u kullanın. Aynı node birden fazla formu yönetemez.

Sık Karşılaşılan Hatalar

Form alanları boş kalıyor

  • Kontrol adları (p) XML'deki name ile birebir eşleşiyor mu? (Büyük/küçük harf duyarlı)
  • dataType doğru mu? msg seçtiniz ama data yolu yanlış olabilir.
  • Akışta Custom Form Form Bind Controls'tan önce geliyor mu?

Veri yapısı uyumsuz

value nesnesinde FieldName ile eşleşen property olmalı. Örnek: bindcontrol {Name: "txtA", FieldName: "a"} ise value.a mevcut olmalı.

İpuçları

JSONata ile dönüştürme

Veriyi olduğu gibi bağlamak yerine dönüştürmek istiyorsanız:

  1. Önce bir function veya change node ile veriyi şekillendirin
  2. Sonuçları flow context'e koyun
  3. Form Bind Controls'ta dataType: flow kullanın

Kontrol isimlendirme standartı

XML form tasarımında kontrol isimlerini tip prefix'leriyle adlandırın (txt* textbox, chk* checkbox, cb* combobox). Bu, debug'ı kolaylaştırır.

İlgili