Ana içeriğe geç

Execute Script

Execute Script
Inputs: 1
Outputs: 1
Kategori: trexMes service

Belirli bir form üzerinde özel script kodu çalıştırır. Panel tarafında script motorunu tetikleyerek karmaşık UI manipülasyonlarını gerçekleştirir.

Property Tablosu

Alan Tip Varsayılan Açıklama
name string Canvas üzerinde gösterilecek ad
formname string (boş) Script'i çalıştıracak form
script string (boş) Script kodu

Dinamik Script (msg.script)

Eğer akış içinde msg.script değişkeni set edilmişse, node bu değeri statik script alanı yerine kullanır:

let script = msg.script;
if (script === undefined || script === null) {
    script = node.script;  // fallback
}

Bu sayede script içeriği akış içinde dinamik olarak üretilebilir.

Çıkış Mesajı

{
  "operationtype": "ExecuteScript",
  "receiveddata": { /* event data */ },
  "name": "OrderForm",
  "message": "if(value > 100) { btnAlert.Visible = true; }"
}

Tipik Akış

flowchart LR
    A[Business Events] --> B[function<br/>Script üret]
    B --> C[Execute Script<br/>OrderForm]
    C --> D[Responser]

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

Örnek Script'ler

Koşullu Görünürlük

if (txtQty.Text != "" && int.Parse(txtQty.Text) > 100) {
    lblWarning.Visible = true;
    lblWarning.Text = "Yüksek miktar uyarısı!";
} else {
    lblWarning.Visible = false;
}

Toplam Hesaplama

decimal toplam = decimal.Parse(txtBirimFiyat.Text) * decimal.Parse(txtAdet.Text);
txtToplam.Text = toplam.ToString("N2");

Renk Değiştirme

if (cmbStatus.SelectedItem.ToString() == "Acil") {
    pnlMain.BackColor = Color.Red;
} else {
    pnlMain.BackColor = Color.White;
}

Önemli Notlar

Script dili paneldedir

Bu node script içeriğine dokunmaz; sadece panele iletir. Script dili (genellikle C# veya VB.NET) ve sentaks panel'in script motoruna bağlıdır.

Form aktif olmalı

Script'in çalışacağı form panel üzerinde açık olmalıdır. Aksi takdirde panel script'i çalıştıramaz.

Güvenlik

Script içeriğini kullanıcı girdisinden oluşturuyorsanız (örn. form alanından) enjeksiyon riski vardır. Mutlaka sanitize edin.

Sık Karşılaşılan Hatalar

Script çalışmıyor

  • formname doğru mu girildi?
  • Hedef form gerçekten açık mı?
  • Script sentaks hatası içeriyor olabilir — panel logunu kontrol edin.

msg.script ile script alanı çelişiyor

Her ikisi de doluysa msg.script öncelik kazanır. Statik alan değişmiyor görünebilir.

İpuçları

Script şablonu

Karmaşık script'leri akış içinde function node ile parametre değerlerine göre dinamik üretin:

msg.script = `lbl1.Text = "${msg.payload.title}";
              txt2.Text = "${msg.payload.value}";`;
return msg;

Birden fazla satır

Script çok satırlı olabilir; node düz string olarak gönderir. Panel tarafı satır sonlarını da işler.

İlgili