Bekir Karadeniz
Bekir Karadeniz
CTO
23 Aralık 2025

Kodsuz Tarih Filtreli Liste Ekran Uygulaması Geliştiriyoruz


OrchestraHCMGeliştirmeŞemalar

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

  • BETWEEN Aralık
  • IN, NOT IN Liste
  • LIKE Metin arama
  • ILIKE Büyük/küçük harf duyarsız

Örnek Şema Tanımı

Gelen kutusu uygulaması için örnek şema yapısı:

LineFunctionPar1Par2Par3Par4DComment
000010COMINBOX Uygulaması
000020COMHRSP 23122025
000030INBOX{"field":"PRIORITY","oper...Yüksek öncelikli taskları getir
000040SETDATAtblInbox=container.TableData.INBOXINBOX verilerini tabloya aktar
000050MESSAGEBilgiGelen kutusu yüklendifalse{"==": [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ürSyntaxAçı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
Kodsuz Tarih Filtreli Liste Ekran Uygulaması Geliştiriyoruz