Bir programcı olarak hayatınızı çok daha kolay hale getirmenize yardımcı olabileceğinden, İş Kuralları Motorlarının büyük bir hayranıyım. Bir Veri Ambarı projesi üzerinde çalışırken yaşadığım ilk deneyimlerden biri, tüm sayfalara yayılan karmaşık CASE yapılarını içeren Depolanan Prosedürleri bulmaktı. Bu kadar uzun CASE yapılarında uygulanan mantığı anlamak ve kodun 1. sayfasındaki bir kural ile 5. sayfadaki bir kural arasında örtüşme olup olmadığını belirlemek çok zor olduğundan, hata ayıklamak bir kabustu. Genel olarak, Kodda gömülü olan bu tür 300'den fazla kural.
3000'den fazla kuralı işlemeyi içeren Accounting Destination adlı bir şey için yeni bir geliştirme gereksinimi aldığımızda, bir şeyin değişmesi gerektiğini biliyordum. O zamanlar bir prototip üzerinde çalışıyordum ve bu prototip daha sonra şu anda bir Özel İş Kuralı motorunun ebeveyni olacak ve tüm SQL standart operatörlerini idare edebilecek. Başlangıçta bir yazma aracı olarak Excel kullanıyorduk ve daha sonra, İş Kullanıcılarının kod yazmaya gerek kalmadan kendi iş kurallarını tanımlamalarına olanak tanıyan bir ASP.net uygulaması oluşturduk. Şimdi sistem çok az hata ile iyi çalışıyor ve bu Muhasebe Hedefini hesaplamak için 7000'den fazla kural içeriyor. Böyle bir senaryonun sadece kodlama ile mümkün olabileceğini sanmıyorum.
Yine de böyle bir yaklaşımın sınırları vardır:
- Şirket işi hakkında mükemmel bir anlayışa sahip, yetenekli iş kullanıcılarına sahip olmanız gerekir.
- Bir İş Kuralı Motoru tarafından işlenecek kurallara dönüştürülmesi mantıklı olan tüm sabit kodlanmış koşulları belirlemek için tüm sistemin (bizim durumumuzda bir Veri Ambarı) aranmasında önemli bir iş yükü vardır. Ayrıca, bu ilk şablonların İşletme Kullanıcıları tarafından tamamen anlaşılabilir olmasına da özen göstermeliydik.
- Çakışan iş kurallarının tespitine yönelik algoritmaların uygulandığı, kural yazımı için kullanılan bir uygulamaya sahip olmanız gerekir. Aksi takdirde, artık hiç kimsenin aldığı sonuçları anlamadığı büyük bir karmaşa ile karşılaşırsınız. Özel İş Kuralı Motoru gibi genel bir bileşende bir hatanız olduğunda, daha önce çalışan şeylerin şimdi de çalıştığından emin olmak için hata ayıklamak ve kapsamlı testler yapmak çok zor olabilir.
Bu konuyla ilgili daha fazla ayrıntı yazdığım bir gönderide bulunabilir: http://dwhbp.com/post/2011/10/30/Implementing-a-Business-Rule-Engine.aspx
Genel olarak, bir İş Kuralı Motorlarını kullanmanın en büyük avantajı, kullanıcıların bir şeyi değiştirmeye ihtiyaç duyduklarında BT departmanına gitmeye gerek kalmadan İş Kuralı tanımları ve yazımı üzerinde kontrolü geri almalarına izin vermesidir. Ayrıca, artık daha fazla katma değerli şeyler oluşturmaya odaklanabilen BT geliştirme ekiplerine göre iş yükünü de azaltır.
Alkış,
Nicolae