Form Bind Controls¶
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") |
Çı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 |
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'dekinameile birebir eşleşiyor mu? (Büyük/küçük harf duyarlı) dataTypedoğru mu?msgseçtiniz amadatayolu yanlış olabilir.- Akışta
Custom FormForm 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:
- Önce bir
functionveyachangenode ile veriyi şekillendirin - Sonuçları
flowcontext'e koyun Form Bind Controls'tadataType: flowkullanı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¶
- Custom Form — Form tasarımı
- Control Properties — Statik özellik atama
- Mesaj Yapısı