Senaryo
Mesaj Oluşturucu politikasında koşullu değer atama iki farklı şekilde yapılabilir:
- Satır Koşulu (Row Condition): Satırın çalışıp çalışmayacağını belirler; koşul sağlanmadığında satır atlanır.
- JEXL Ternary İfadesi: Şablon içinde
#{koşul ? 'evet' : 'hayır'} söz dizimiyle tek bir ifadede koşullu değer üretir.
Örnek 1: Satır Koşulu ile Yalnızca POST’ta Değer Atama
Yalnızca POST isteklerinde body’den orderId alanı çekilir; diğer HTTP metodlarında satır atlanır.
Satır Yapılandırması
| Alan | Değer |
|---|
| Oluşturma Modu | Form |
| Kaynak | İstek Body → JSON Path $.orderId |
| Hedef | Özel Değişken → currentOrderId |
| Varsayılan Değer | (boş) |
Satır Koşulu
| Değişken | Operatör | Değer |
|---|
| HTTP Metodu | Eşittir | POST |
Sonuç
| HTTP Metodu | currentOrderId Değeri |
|---|
| POST | Body’deki orderId değeri |
| GET, PUT, DELETE | Satır atlanır, değer atanmaz |
Örnek 2: JEXL Ternary ile Durum Etiketi
İstek body’sindeki status alanına göre okunabilir bir etiket üretilir.
Şablon
#{body.$.status == 'available' ? 'Satın Alınabilir' : body.$.status == 'pending' ? 'Beklemede' : 'Satıldı'}
Satır Yapılandırması
| Alan | Değer |
|---|
| Oluşturma Modu | Template |
| Şablon | Yukarıdaki şablon |
| Hedef | Özel Değişken → statusLabel |
| Varsayılan Değer | Bilinmiyor |
Sonuç
status Değeri | statusLabel |
|---|
available | Satın Alınabilir |
pending | Beklemede |
sold | Satıldı |
| (boş) | Bilinmiyor |
Örnek 3: Koşullu JSON Parçası (Boş / Dolu Geçiş)
Belirli bir koşul sağlandığında JSON nesnesine ilave bir alan eklenir, sağlanmadığında boş kalır.
Bu pattern üç satırla uygulanır:
Satır 1: Varsayılan Değer Atama
| Alan | Değer |
|---|
| Oluşturma Modu | Template |
| Şablon | null |
| Hedef | Özel Değişken → extraInfo |
Satır 2: Koşullu Değer Atama
| Alan | Değer |
|---|
| Oluşturma Modu | Template |
| Şablon | {"source":"premium","tier":"gold"} |
| Hedef | Özel Değişken → extraInfo |
Satır 2 Koşulu:
| Değişken | Operatör | Değer |
|---|
Header X-Account-Type | Eşittir | premium |
Satır 3: Ana Şablona Dahil Etme
{"userId":"#{body.$.userId}","name":"#{body.$.name}","extra":#{extraInfo}}
Sonuç
X-Account-Type Değeri | Üretilen Çıktı |
|---|
premium | {"userId":"123","name":"Ahmet","extra":{"source":"premium","tier":"gold"}} |
| (diğer) | {"userId":"123","name":"Ahmet","extra":null} |
JEXL Ternary vs. Satır Koşulu: Tek bir değeri dönüştürüyorsanız JEXL ternary daha kısa ve okunaksızdır. Bir satırı tamamen atlamak istiyorsanız satır koşulunu tercih edin.
Koşullu JSON parçası üretirken, hedef şablonda #{extraInfo} ifadesinin çevresine tırnak işareti koymayın; değer olduğu gibi JSON’a yerleştirilmelidir.