Karar Tablosu¶
İş mantığının betik yazmak yerine satır ve sütunlarla ifade edilmesi gerektiğinde karar tablolarını kullanın. Karar tablosu, bir çıktıyı belirlemek için gereken girdileri ve bu girdileri sonuçlara eşleyen kuralları içerir.
Bir karar tablosu şunlardan oluşur:
- Çıktıyı açıklamak için herhangi bir metin olabilen bir çıktı etiketi. Karar tablosunun sonucuna başka bir ifadede çıktı etiketiyle değil, karar adıyla başvurulmalıdır.
- Bir girdi kümesi (sıfır veya daha fazla). Her girdi, bir girdi ifadesinden ve bir veya daha fazla girdi girdisinden oluşur.
- Bir çıktı kümesi (bir veya daha fazla). Tek bir çıktının adı yoktur, yalnızca bir değeri vardır. İki veya daha fazla çıktıya çıktı değişkenleri denir. Her çıktı değişkeninin adı vardır ve tüm çıktı girdilerine çıktı yan tümcesi olarak başvurulur.
- Tablo satırlarında bir veya daha fazla kural listesi.

Karar tablosu, girdileri tablo hücrelerinde düzenleyerek kuralları kısa gösterimle sunar. Bu gösterim, her kuraldaki tüm girdileri aynı sırayla gösterir ve böylece okunabilirlik ile doğrulamayı kolaylaştırır.
Örneğin:
| Müşteri Kategorisi | Sipariş büyüklüğü | İndirim |
|---|---|---|
| "Kurumsal" | <10 | 0.10 |
şöyle okunur:
1 | |
Bir girdi ifadesinin değeri, girdi girdisine eşitse veya girdi girdisinin belirttiği değer listesinde (ör. bir liste veya aralık) yer alıyorsa girdi girdisini karşılar. Girdi girdisi ‘-’ ise (önemsiz anlamında), girdi ifadesinin her değeri girdi girdisini karşılar ve belirtilen kuralda söz konusu girdi önemsizdir.
Genel olarak tablo şu şekilde ifade edilebilir:
| Girdi ifadesi 1 | Girdi ifadesi 2 | Çıktı ifadesi |
|---|---|---|
| girdi girdisi a | girdi girdisi b | çıktı girdisi c |
Girdi girdisi "-" ise (önemsiz anlamında), girdi ifadesinin her değeri bu girdi girdisini karşılar.
Kurallar çakışırsa birden fazla kural eşleşebilir; isabet ilkesi, birden fazla eşleşmenin nasıl ele alınacağını belirtir.
Girdi İfadeleri¶
Girdi ifadeleri genellikle basit FEEL ifadeleridir. Girdi ifadelerinin sırası herhangi bir yürütme sırasıyla ilişkili değildir.
Her girdi ifadesi aşağıdaki özelliklere sahiptir:
İfade¶
Girdi değeri ifadesini belirtir. (Örnek: Name, BirthDate veya Person.Name)
Etiket¶
İsteğe bağlı olarak girdinin görüntüleme etiketini belirtir. Belirtilmezse, girdiyi görüntülemek için ifade kullanılır.
Girdi Değerleri¶
İsteğe bağlı olarak girdinin geçerli aralığını belirtir. Verilen girdiler, karar tablosu yürütülmeden önce bu ifadeyle doğrulanır. Örneğin, "Status" girdisi için girdi değerleri olarak "VALID" ve "INVALID" kullanılabilir. Diğer tüm değerler karar tablosu tarafından reddedilir.
10'dan küçük değerleri kabul etmek için "<10" gibi aralık karşılaştırma ifadeleri de kullanılabilir.
Tür¶
İsteğe bağlı olarak girdi ifadesinin türünü belirtir. Tür belirtildiğinde, karar tablosu düzenleyicisinin bazı özellikleri girdi türüne göre etkinleştirilir.
Çıktı İfadeleri¶
Kuralın çıktı girdisi de bir FEEL ifadesidir. Çıktı girdisi belirtilmemişse çıktı ifadelerinin de varsayılan bir değeri olur.
Ad¶
Çıktı değerinin adını belirtir.
Etiket¶
İsteğe bağlı olarak çıktının görüntüleme etiketini belirtir. Belirtilmezse çıktıyı görüntülemek için ifade kullanılır.
Varsayılan¶
Karar tablosu kuralı bir değer belirtmediğinde, isteğe bağlı olarak çıktının varsayılan değerini belirtir.
Tür¶
İsteğe bağlı olarak girdi ifadesinin türünü belirtir. Tür belirtildiğinde, karar tablosu düzenleyicisinin bazı özellikleri girdi türüne göre etkinleştirilir.
İsabet İlkesi¶
İsabet ilkesi, kuralların çakıştığı durumlarda, yani girdi verileriyle birden fazla kural eşleştiğinde karar tablosunun sonucunun ne olacağını belirtir. Açıklık sağlamak için isabet ilkesi, ilke adının ilk harfiyle özetlenir.
Tekli ve çoklu isabet tabloları
Tek isabetli tabloda çakışan kurallar bulunabilir de bulunmayabilir de; ancak yalnızca bir kuralın çıktısını döndürür. Kurallar çakıştığında isabet ilkesi, eşleşen kurallardan hangisinin seçileceğini belirtir.
Çok isabetli bir tablo, birden fazla kuralın çıktısını veya çıktılar üzerinde bir işlevi döndürebilir. Örneğin, değerlerin toplamını.
Tekli İsabet İlkeleri¶
- Benzersiz: Çakışma mümkün değildir ve kurallar birbirinden ayrıdır. Yalnızca tek bir kural eşleşebilir. Bu, isabet ilkesinin varsayılan değeridir. Verilen girdi birden fazla kuralla eşleşirse isabet ilkesi hatalıdır ve MultipleHitViolation hatası oluşturulur.
- Herhangi biri: Çakışma olabilir; ancak kullanılabilecek herhangi bir eşleşme olması için eşleşen tüm kuralların her çıktı için aynı çıktı girdisi değerlerine sahip olması gerekir. Çıktı girdileri eşit değilse isabet ilkesi hatalıdır ve sonuç tanımsızdır.
- Öncelik: Farklı çıktı girdilerine sahip birden fazla kural eşleşebilir. Bu ilke, eşleşen kurallar arasından çıktı önceliği en yüksek olanı döndürür. Öncelikler kural sırasından bağımsızdır.
- İlk: Farklı çıktı girdilerine sahip birden fazla (çakışan) kural eşleşebilir. Kural sırasına göre ilk isabet döndürülür ve değerlendirme durdurulur. İlk isabet tabloları, karar mantığının net bir görünümünü sunmadıkları için iyi bir uygulama olarak kabul edilmez.
Çoklu İsabet İlkeleri¶
- Çıktı Sırası: Tüm isabetleri azalan çıktı önceliği sırasına göre döndürür.
- Kural Sırası: Tüm isabetleri kural sırasına göre döndürür. Dolayısıyla kuralların sırasına bağlı olabilir.
- Topla: Tüm isabetleri rastgele bir sırada döndürür. Çıktılara basit bir işlev uygulamak için bir işleç eklenebilir. İşleç belirtilmezse sonuç, tüm çıktı girdilerinin listesidir.
Toplama işleçleri şunlardır:
sum (+): tüm benzersiz çıktıların toplamımin (<): tüm çıktıların en küçük değerimax (>): tüm çıktıların en büyük değericount (#): benzersiz çıktıların sayısı
Öncelik ve Çıktı Sırası isabet ilkelerinde, bileşik çıktı tablolarında öncelik, çıktı değerleri sağlanmış tüm çıktılar üzerinden belirlenir. Her çıktının önceliği, çıktı değerlerinin azalan öncelik sırasına göre sıralanmış listesinde belirtilir. Genel öncelik, yatay tablolarda sıralı çıktılar soldan sağa (yani soldaki sütunlar sağdakilere göre önceliklidir), dikey tablolarda ise yukarıdan aşağıya değerlendirilerek belirlenir. Çıktı değeri belirtilmemiş çıktılar sıralamada dikkate alınmaz; ancak bu çıktılara ait çıktı girdileri sıralı bileşik çıktıya dahil edilir.
Örneğin; Age=17, Risk Category="HIGH" ve Dept Review=true değerleriyle çağrıldığında, aşağıdaki tablo dört kuralın çıktısını 2, 4, 3, 1 sırasıyla verir.
| Ç | Yaş | Risk Kategorisi (Düşük, Orta, Yüksek) | Birim İncelemesi | Yönlendirme (REDDET, YÖNLENDİR, KABUL ET) | İnceleme Düzeyi (DÜZEY2, DÜZEY1, YOK) |
|---|---|---|---|---|---|
| 1 | - | - | - | "KABUL ET" | "YOK" |
| 2 | <18 | - | - | "REDDET" | "YOK" |
| 3 | - | "YÜKSEK" | - | "YÖNLENDİR" | "DÜZEY 1" |
| 4 | - | - | true | "YÖNLENDİR" | "DÜZEY 2" |