SORU
30 EKİM 2008, PERŞEMBE


Kural Motoru - artıları ve eksileri

Denetim Rules Engine a ne denir kullanan bir proje yapıyorum. Kısacası, uygulama kodundan iş mantığı yansıtmak için bir yoldur.

Bu kavram benim için tamamen yeni olduğunu ve bu konuda çok şüpheciyim. Son birkaç yıldır insanlar Anemic Domain Models hakkında konuşmak dinledikten sonra, Kural Motoru Yaklaşımı sorguluyorum. Benim için harika bir yoldur gibi bir etki alanı modeli ZAYIFLATMAK gibi görünüyorlar. Örneğin söyle bir java web Kuralları Motoru ile etkileşim yapıyorum. O bir Android uygulaması aynı etki dayalı olsun istiyorum ben karar veririm. Android uygulaması Kuralları Motoru ile etkileşim istiyorum sürece, ne olursa olsun, iş mantığı zaten yazılmıştır kaçırmak zorunda kalacağım.

Onlarla herhangi bir deneyimi henüz, sadece merak yok, ilgi artılarını ve eksilerini bir Kurallar Motoru kullanarak duydum? Aklıma gelen tek pro sadece bazı iş kuralı (ama gerçekten, kaç apps çok fazla bir değişiklik var mı?) değiştirmek için tüm Uygulama yeniden gerek yok. Ama Kurallar Motoru sorun bu tür çözmek için kullanarak av tüfeği bir yara üzerinde bir yara bandı koymak gibi geliyor bana.

GÜNCELLEME - bu yazı beri, Tanrı'nın kendisi, Martin Fowler, blogged about using a Rules engine.

CEVAP
31 EKİM 2008, Cuma


Gördüğüm en kural motorları, sistem kod ile siyah bir kutu olarak görülüyor. Eğer bir etki alanı modeli oluşturmak için olsaydı, muhtemelen bazı iş kuralları bir nesne geçersiz değerler olduğunda bana söyle bu etki alanı modeli, örneğin iş kuralları kendine özgü olmasını isterim. Bu sistemler birden çok iş mantığı çoğaltmak olmadan etki alanı modeli paylaşmanızı sağlar. Her sistem aynı kural servis benim etki alanı modeli doğrulamak için kullanmak olabilir, ama bu benim etki alanı modeli söz konusu olduğuna işaret edildi () zayıflatmak gibi görünüyor. Neden? Yerine sürekli olarak tüm sistemi içerisinde benim iş kurallarını uygulamak için iş kuralları uygulanmalıdır belirlemek için sistem programcıları (kural hizmetini arayarak) güveniyorum. Bu olmayabilir bir sorun varsa etki modeli geliyor tamamen doldurulmuş, ama olabilir sorunlu eğer karşınıza alıyorsunuz bir kullanıcı arayüzü ya da sistem değişiklikleri değerleri etki alanı modeli üzerinde ömrünü.

İş kuralları, başka bir sınıf var: karar verme. Örneğin, bir sigorta şirketi bir başvuru sahibi, teknik riskini sınıflandırmak ve bir premium varmak gerekebilir. Etki alanı modeli iş kuralları bu tür bir yer olabilir, ama bu gibi senaryolar için merkezi bir karar genellikle arzu edilir ve, aslında, oldukça iyi servis odaklı bir mimari içine sığacak. Bu motor ve sistem kod neden sorusu geliyor. Kural bir motor daha iyi bir seçim olabilir yeri iş kuralları karardan sorumlu zamanla başka cevaplar belirttiği gibi () değişecek.

Kural motorları genellikle değiştirmenize olanak sağlayan kurallar olmadan yeniden sistem veya dağıtımı yeni çalıştırılabilir kod (ne olursa olsun ne vaat aldığınız bir satıcı, emin olun test değişiklikleri olmayan bir üretim ortamı nedeniyle, bile kural motoru kusursuz, insanlar hala değişen kurallar). Eğer "değişim", haklısın. değerlerini depolamak için bir veritabanı kullanarak bunu yapabileceğimi düşünüyorum, eğer Kural bir motor yeni bir şey yok, sihirli bir kutu değildir . Az tekerleği yeniden icat odaklanmak böylece daha yüksek bir soyutlama düzeyi sağlar bir araç olarak tasarlanmıştır. Birçok üretici, bir adım daha bu iş kullanıcıları boşlukları doldurmak böylece şablonları oluşturmak izin vermek yerine, kural bir dil öğrenerek alın. Şablonları hakkında bir ayrılık uyarı: asla şablonlar şablon, çıplak en azından, kural tanımlamak gerekir, çünkü bir şablon olmadan bir kural yazma daha az zaman alabilir. Plan için daha yüksek bir Başlangıç maliyeti (aynı gibi olduğun için yapı sisteminde kullanılan bir veritabanı deposu değerleri değiştirmek vs yazma kurallarını doğrudan sistem kodu) - ROI çünkü seni kurtarmak gelecekteki bakım sistemi kod.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • expertvillage

    expertvillag

    5 NİSAN 2006
  • karneson

    karneson

    23 Temmuz 2006
  • snookie77

    snookie77

    2 Mart 2006