Business Rule Engine (BRE) nedir?
Merhaba, ben Ege. Checkbox Consultancy’de Jr. Software Developer olarak çalışıyorum. Sizlere BRE özelinde önemli bilgiler aktarmak, BRE hakkında 1 seneyi geçen tecrübelerimi sizlerle paylaşmak istiyorum.
Öncelikle BRE nedir sorusunu kısaca cevaplayalım. BRE, müşterinin kullanmış olduğu ürünle ilişkili olan iş kurallarının koda müdahale edilmeden kontrol edilmesini sağlar. Bu yöntemin en önemli avantajı değişen iş kurallarının, geliştirmelerinin kolay bir şekilde yapılması ve kod içerisinde ye alan katı kuralların hızlıca değiştirilmesidir.
Burada kendi tecrübeme yer ayırmak istiyorum. Müşterinin uygulama üzerindeki iş kurallarını dönem dönem değiştirme isteği sıklaşabiliyor. Bu istek bizleri bir çıkmaza sokabiliyor. Back-end tarafında yapılan geliştirmelerin içerisinde yer alan kodların esnetilmesi, değiştirilmesi, hatta yeni alanlar eklenmesi, kodun tekrardan geliştirilmesine ve tekrardan test sürecine geçmesine sebep oluyor. Burada BRE’nin development hızı ve hızlıca test edilebilmesi, agile koşan bir ekip açısından oldukça kritik bir önem taşıyor.
Proje oluştururken BRE içinde yer alan temel yapıtaşlarından söz edelim.
XOM(Executive Object Model) Java veya XML ile yazılabilen içerisinde nesnelerin ve metodların olduğu, kuralların uygulandığı ayrı bir projede saklanan Rule Project’in bir parçası olmayarak karşımıza çıkar. Rule Project’in içine XOM aktarılabilir kurallarla ilişkilendirebiliriz.
BOM(Business Object Model) ise ben aslında bunu malzeme listesi olarak tanımlıyorum. Daha açık olarak belirtmek gerekirse RuleSet parametrelerinin tanımlandığı, verbalization oluşturulduğu ve hangi nesnelerin kural motoruna geçirildiğine hangi nesnelerin uygulamaya döndürüldüğü model olarak açıklanabilir. BOM’da yer alan nesneler XOM’da da tanımlanması altın kuralımızdır. XOM ve BOM oluşturulduktan sonra Decision Operation ve signature dizaynı ile beraber iş kurallarının yazımı için uygun geçiş yapılabilir.
Verbalization konusunu sizlere biraz açmak istiyorum. BOM’da yer alan alanların sözlü olarak ifade edilmesine yarayan bir kavram olarak karşımıza çıkıyor. Sözlü olarak ifade edilirken dikkat edilen nokta tanımların anlaşılır olunmasına dikkat edilmelidir.
Proje tasarımı yapılırken İş kurallarının yazıldığı yer olan Decision Table; satırlarca yazılabilen kuralların bir dizi eylemi görüntülemek ve yönetmenin kısa yolu olarak adlandırılabilir. Birden fazla, tekdüze veya farklı kuralların setlenmesini temsil etmek için uygundur. Ek olarak boşlukları görmemize yardımcı olurken hatayı hızlı bulmamızı da kolaylaştırır. Sütun şeklinde koşullar ve aksiyonlar tanımlanır her satır bir kuraldır.
Ruleflows projede yer alan Decision Table’ların sırayla çalışmasını sağlayan diyagramlardır. Diyagram elementlerden oluşur bunlar:
- Başlangıç ve bitiş düğümleri (Start&End node),
- Kural akışında yürütülen kurallar kümesi RuleTask,
- BAL veya IRL kodunda kuralın yürütüldüğünde eylemi yürüten ActionTask,
- Başka bir Ruleflow’dan referans yapabilen SubflowTask’den oluşur.
BRE’nin belirtilmesi gereken daha pek çok bileşeni var olmakla beraber burada benim amacım sizleri BRE hakkında temel bilgi sahibi etmekti. Üstte anlattıklarımı özetlemek gerekirse BRE; iş kurallarının yoğun olarak kullanıldığı yerlerde hızlı dinamik ve esnek yapısı, bir soruna birden fazla çözüm yolu sunabilmesi iş dünyasında rağbetini artırmaktadır.
Sizlere BRE’de öğrendiklerimi aktarmaya çalışmak, birikimlerimi paylaşmak istedim. Bu süreçte yardımlarını hiç esirgemeyen başta Enise Ezgi Taşdemir’e ve Checkbox Ailesine teşekkür eder yeni bir yazılım diliyle karşınıza sabırsızlıkla çıkmayı belirtirim. 😊