Ana içeriğe geç

Olay (Event) Nodları — Genel Bakış

Paket, trexMes panellerinden gelen olayları yakalamak için 8 ayrı event node tipi sağlar. Hepsi event-subscribers.js dosyasında tanımlanmış olup aynı altyapıyı paylaşır; yalnızca kategori amacıyla ayrılmıştır.

Olay Node Listesi

Node Tipik Kullanım
Business Events İş akışı olayları (sipariş başlama, üretim bitirme, vardiya değişimi…)
System Events Sistem seviyesi olaylar (boot, login, shutdown, lock)
Communication Events İletişim katmanı olayları (PLC, OPC, modbus, sensör)
Display Events UI üzerindeki gösterim olayları
Form Events Form etkileşim olayları (button click, focus, validate)
Display Methods Ana form metod tetikleyicileri
Method Returns Method invocation cevapları

Tüm event node'ları temelde aynıdır

Pakete bakıldığında 8 farklı event tipi olmasına rağmen kod tarafında hepsi EventSubscribers adlı tek bir fonksiyon ile oluşturulmuştur. Aralarındaki tek fark palette üzerindeki kategori adıdır. Bu sayede akışınızda hangi olayın hangi gruba ait olduğunu görsel olarak ayırt edebilirsiniz.

Ortak Özellikler

I/O

Tüm event node'ları: 0 giriş, 1 çıkış

Renk

Business Events Açık yeşil — Servis kategorisi.

Property Tablosu (Ortak)

Alan Tip Varsayılan Açıklama
name string Node-RED canvas üzerinde gösterilecek ad
method string get HTTP method (otomatik)
event string (boş) Panel'in çağıracağı HTTP path
ishandled boolean false Bu olay Node-RED tarafından mı handle edilecek?
suffix string (Sadece Business Events) Event ismine eklenecek son ek

Çalışma Mantığı

sequenceDiagram
    participant Panel as trexMes Panel
    participant Conn as Node-RED Connector
    participant Ev as Business Events
    participant Flow as Akış
    participant Resp as Responser

    Panel->>Conn: Event tetiklendi
    Conn->>Ev: GET /OrderStartEvent + payload
    Ev->>Flow: msg.payload (event verisi)
    Flow->>Resp: ...işlenmiş payload
    Resp-->>Conn: HTTP 200
    Conn-->>Panel: İşlem tamamlandı

Olay Kayıt Listesi (Subscription)

Deploy anında her event node, trex Subscriber'ın çağrısı üzerinden otomatik tespit edilir. Panel tarafına gönderilecek listenin yapısı:

RED.nodes.eachNode(function (n) {
    if (eventTypes.has(n.type)) {
        let runtimeNode = RED.nodes.getNode(n.id);
        let eName = runtimeNode.event.replace(/\//g, "");
        matchingNodes.push(eName);
        if (runtimeNode.ishandled === true) {
            matchingHandlers.push(eName + "|handled");
        }
    }
});

eventTypes Set'i (JS tarafından)

const eventTypes = new Set([
    "Business Events",
    "System Events",
    "Communication Events",
    "Display Events",
    "Form Events",
    "Display Methods",
    "Method Returns"
]);

Tipik Akış Yapısı

flowchart LR
    A[Business Events] --> B[Custom Form]
    B --> C[Form Bind Controls]
    C --> D[Control Properties]
    D --> E[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
    style E fill:#ccffcc,color:#000

Giriş Mesajı (msg)

Olay tetiklendiğinde aşağıdaki yapıda mesaj üretilir:

{
  "_msgid": "abc123",
  "req": { /* Express HTTP request */ },
  "res": { /* HTTP response wrapper */ },
  "payload": { /* Panel'den gelen ham olay verisi */ }
}
Alan Açıklama
req Express Request nesnesi — IP, headers, query bilgileri
res Cevap wrapper — Responser bunu kullanır
payload Panel'in gönderdiği query/body verisi

ishandled Kavramı

Olay tipi panel tarafında varsayılan bir işleyiciye sahip olabilir. Node-RED akışınız bu olayı yakaladığında panele:

  • ishandled = true → "Bu olayı ben işledim, sen de işleyiciyi tetikleme."
  • ishandled = false → "Sen kendi işleyicini de çalıştır."

Bu davranışı akış ortasında dinamik değiştirmek için Handle Setter kullanın.

Notlar

Event isminde slash

event alanına /OrderStart veya OrderStart yazabilirsiniz. Node otomatik olarak başına / ekler. Panel kayıt listesinde slash'lar kaldırılarak gönderilir.

Aynı event ismi tekrar etmemeli

Aynı event ismine sahip birden fazla node varsa HTTP path çakışması olur. Farklı kategorilerde olsalar bile aynı ismi kullanmayın.

Form Events'te formname

Form Events node'unda ishandled yerine formname alanı vardır. Hangi forma ait olduğunu belirtir.

Hızlı Karşılaştırma

Node Özel Alan Tipik Path Örneği
Business Events suffix /OrderStartEvent
System Events /SystemBootEvent
Communication Events /PLCConnectionLost
Display Events /DisplayRefresh
Form Events formname /MainForm_ButtonClick
Display Methods /GetCurrentOrder
Method Returns methodname /OrderCreated

Sonraki Adım

Her event tipinin kendi sayfasında özel kullanım örnekleri bulunur. Sol menüden istediğinizi seçin.