Kodsuz Tarih Filtreli Liste Ekran Uygulaması Geliştiriyoruz
Bu makalemde hiç kod yazmadan şema ve kurallar ile tarih filtreli bir liste ekranı uygulaması geliştirmeyi anlatıyorum. Bu uygulama bir gelen kutusu uygulaması olacak ve kullanıcılar kendilerine gelen iş akışlarını görüntüleyebilecek ve istelerse detaylarına girebileceklerdir. Ekran tasarımları OrchestraHCM de sürükle/bırak ile yapıldığından sadece şema yazma kısmına odaklanıyorum.
Tarih Filtreli Liste Raporları
Örnek Koşul Yazımları
Tekli Koşul Örnekleri
// Task adında "APPROVE" geçenler
{"field": "TASKNAME", "operator": "LIKE", "value": "%APPROVE%"}// Büyük/küçük harf duyarsız arama
{"field": "WFNAME", "operator": "ILIKE", "value": "%employee%"}// Belirli tarihten sonraki kayıtlar
{"field": "CREATEDON", "operator": ">=", "value": "2024-12-01"}// Tarih aralığı filtrelemesi
{"field": "DEADLINE", "operator": "BETWEEN", "values": ["2024-01-01", "2024-06-30"]}// Çoklu değer seçimi
{"field": "PRIORITY", "operator": "IN", "values": ["H", "M"]}Çoklu Koşul Örnekleri
// Tarih aralığı + Durum filtresi (AND logic)
{
"conditions": [
{
"field": "CREATEDON",
"operator": "BETWEEN",
"values": ["2024-01-01", "2024-06-30"]
},
{
"field": "CURRENTSTATUS",
"operator": "IN",
"values": ["PENDING", "ACTIVE"]
}
],
"logic": "AND"
}// Yüksek öncelik VEYA yakın deadline (OR logic)
{
"conditions": [
{
"field": "PRIORITY",
"operator": "=",
"value": "H"
},
{
"field": "DEADLINE",
"operator": "<=",
"value": "2024-12-31"
}
],
"logic": "OR"
}// Karmaşık filtreleme: Tarih + Durum + Task adı
{
"conditions": [
{
"field": "CREATEDON",
"operator": ">=",
"value": "2024-12-01"
},
{
"field": "CURRENTSTATUS",
"operator": "!=",
"value": "COMPLETED"
},
{
"field": "TASKNAME",
"operator": "LIKE",
"value": "%APPROVAL%"
}
],
"logic": "AND"
}Desteklenen Operatörler
Karşılaştırma
=Eşittir!=, <>Eşit değil>, <Büyük/Küçük>=, <=Büyük-Eşit/Küçük-Eşit
Özel
BETWEENAralıkIN, NOT INListeLIKEMetin aramaILIKEBüyük/küçük harf duyarsız
Örnek Şema Tanımı
Gelen kutusu uygulaması için örnek şema yapısı:
| Line | Function | Par1 | Par2 | Par3 | Par4 | D | Comment |
|---|---|---|---|---|---|---|---|
| 000010 | COM | INBOX Uygulaması | |||||
| 000020 | COM | HRSP 23122025 | |||||
| 000030 | INBOX | {"field":"PRIORITY","oper... | Yüksek öncelikli taskları getir | ||||
| 000040 | SETDATA | tblInbox | =container.TableData.INBOX | INBOX verilerini tabloya aktar | |||
| 000050 | MESSAGE | Bilgi | Gelen kutusu yüklendi | false | {"==": [1, 1]} | Başarı mesajı göster |
Şema Açıklaması:
- 10-20: Yorum satırları (COM)
- 30: INBOX fonksiyonu ile veri getir
- 40: Veriyi sayfa tablosuna aktar
- 50: Kullanıcıya bilgi mesajı göster
Dinamik Değer Kullanımı
INBOX koşullarında sabit değerler yerine sayfa elementlerinden veya container verilerinden dinamik değerler kullanabilirsiniz.
Placeholder Syntax
Sayfa Elementi Değeri:
{
"field": "PRIORITY",
"operator": "=",
"value": "${page.txtPriority}"
}Sayfadaki "txtPriority" elementinin değerini kullanır
Container Verisi:
{
"field": "SPERNR",
"operator": "=",
"value": "${container.UserPernr}"
}Container'daki UserPernr değerini kullanır
Tarih Aralığı Filtresi:
{
"conditions": [
{
"field": "CREATEDON",
"operator": ">=",
"value": "${page.dateFrom}"
},
{
"field": "CREATEDON",
"operator": "<=",
"value": "${page.dateTo}"
},
{
"field": "CURRENTSTATUS",
"operator": "=",
"value": "${container.SelectedStatus}"
}
],
"logic": "AND"
}Sayfa elementlerinden tarih aralığı ve container'dan status filtresi
Tablo Verisi Kullanımı:
{
"field": "RESOTYPE",
"operator": "IN",
"values": [
"${container.TableData.ROLES[0].TYPE}",
"${container.TableData.ROLES[1].TYPE}"
]
}Container'daki ROLES tablosundan TYPE değerlerini kullanır
Desteklenen Placeholder Türleri
| Tür | Syntax | Açıklama |
|---|---|---|
| Sayfa Elementi | ${page.elementId} | Sayfa elementinin DefaultValue değerini alır |
| Container Özellik | ${container.property} | Container'daki herhangi bir özelliği alır |
| Tablo Verisi | ${container.TableData.table[0].field} | Tablodaki belirli satır ve kolondan değer alır |
| Değişken | ${variable.name} | Kullanıcı tanımlı değişkenlerden değer alır |
🔧 Faydaları:
- • Dinamik filtreleme imkanı
- • Kullanıcı girdilerine dayalı sorgular
- • Runtime'da değişken koşullar
- • Sayfa elementi ve container verisi entegrasyonu