Ana içeriğe geç

Karar Tablosu

İş mantığının komut dizisi 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çıklayan herhangi bir metin olabilecek 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 dizi girdi girdisinden oluşur.
  • Bir çıktı kümesi (bir veya daha fazla). Tek bir çıktının adı değil, yalnızca değeri vardır. İki veya daha fazla çıktıya çıktı değişkenleri denir. Her çıktı değişkeninin bir adı vardır ve tüm çıktı girdilerine çıktı koşulu denir.
  • Tablo satırlarındaki bir veya daha fazla kuralın listesi.

Girdileri, çıktıları ve kural satırlarını gösteren karar tablosu düzenleyicisi.

Karar tablosu, girdileri tablo hücrelerine yerleştirerek kuralları kısa gösterimle sunar. Bu gösterimde tüm kuralların girdileri aynı sırada gösterilir; böylece okunabilirlik ve doğrulama açısından çeşitli avantajlar sağlanır.

Örneğin:

Müşteri Kategorisi Sipariş büyüklüğü İndirim
"İşletme" <10 0.10

şöyle okunur:

1
If CustomerCategory = "Business" and OrderSize < 10 then Discount = 0.10

Bir girdi ifadesinin değeri, girdi girdisine eşitse veya girdi girdisinin belirttiği değerler listesine (ör. bir liste ya da aralık) dahilse bu girdi girdisini karşılar. Girdi girdisi ‘-’ (önemsiz anlamında) ise girdi ifadesinin her değeri girdi girdisini karşılar ve belirtilen kuralda ilgili 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 "-" (önemsiz anlamında) ise girdi ifadesinin her değeri bu girdi girdisini karşılar.

Kurallar çakışırsa birden fazla kural eşleşebilir; isabet ilkesi bu çoklu eşleşmelerin 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. Girdiler, karar tablosu yürütülmeden önce bu ifadeye göre doğrulanır. Örneğin "Status" girdisi, girdi değerleri olarak "VALID" ve "INVALID" değerlerini kullanabilir. 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

Bir kuralın çıktı girdisi de bir FEEL ifadesidir. Herhangi bir çıktı girdisi belirtilmezse çıktı ifadelerinde varsayılan bir değer de bulunur.

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 belirtmiyorsa çıktı için kullanılacak varsayılan değeri isteğe bağlı olarak 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ığı, yani girdi verileriyle birden fazla kuralın eşleştiği durumlarda karar tablosunun sonucunu belirtir. Açıklık sağlamak için isabet ilkesi, ilke adının ilk harfiyle özetlenir.

Tek ve çoklu isabet tabloları

Tek isabetli bir tabloda çakışan kurallar bulunabilir veya bulunmayabilir; 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.

Çoklu isabetli bir tablo, birden fazla kuralın çıktısını veya çıktıların bir işlevini (ör. değerlerin toplamını) döndürebilir.

Tekli İsabet İlkeleri

  • Benzersiz: çakışma olasılığı yoktur ve kurallar ayrık kümelerdir. Yalnızca tek bir kural eşleşebilir. Bu, varsayılan isabet ilkesi değeridir. Verilen girdi birden fazla kuralla eşleşirse isabet ilkesi yanlıştır ve MultipleHitViolation hatası oluşturulur.
  • Herhangi: örtüşme olabilir; ancak hangi eşleşme kullanılırsa kullanılsın, 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 yanlıştı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 (örtüşen) 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ığına ilişkin net bir genel bakış sunmadıkları için iyi bir uygulama olarak değerlendirilmez.

Çoklu İsabet İlkeleri

  • ÇıktıSırası: tüm isabetleri azalan çıktı önceliği sırasına göre döndürür.
  • KuralSırası: tüm isabetleri kural sırasına göre döndürür. Bu nedenle kural dizisine bağlı olabilir.
  • Topla: tüm isabetleri rastgele bir sırayla döndürür. Çıktılara basit bir işlev uygulamak için bir operatör eklenebilir. Operatör belirtilmezse sonuç, tüm çıktı girdilerinin listesidir.

Toplama operatörleri şunlardır:

  • sum (+): tüm farklı çıktıların toplamı
  • min (<): tüm çıktıların en küçük değeri
  • max (>): tüm çıktıların en büyük değeri
  • count (#): farklı çıktıların sayısı

Öncelik ve Çıktı Sırası isabet ilkelerinde, çıktı değerleri belirtilmiş tüm çıktılar için öncelik bileşik çıktı tablolarında belirlenir. Her çıktının önceliği, çıktı değerlerinin önceliği azalan sırada düzenlenmiş listesinde belirtilir. Genel öncelik, yatay tablolarda (yani soldaki sütunların sağdakilere üstün geldiği) soldan sağa veya dikey tablolarda yukarıdan aşağıya sıralı çıktılar dikkate alınarak belirlenir. Çıktı değerleri belirtilmeyen çıktılar sıralamada dikkate alınmaz; ancak çı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)
Bölüm İ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"