Pro dan kontra dari mesin aturan Java [ditutup]

108

Apa pro dan kontra untuk mengadopsi mesin aturan Java JESS dan Drools ? Apakah ada pemain lain?

Saya memahami bahwa Drools adalah Open Source dan JESS tidak, tetapi bagaimana perbandingannya di area lain seperti kemudahan penggunaan, kinerja, tingkat integrasi dengan kode Anda?

brabster
sumber

Jawaban:

128

Apa pro dan kontra untuk mengadopsi mesin aturan Java JESS dan Drools?

Gunakan mesin aturan jika Anda perlu memisahkan aturan bisnis dari logika aplikasi. Artikel Apakah Proyek Anda Membutuhkan Mesin Aturan memiliki contoh yang bagus:

Misalnya, sistem etalase khas mungkin melibatkan kode untuk menghitung diskon:

if (product.quantity > 100 && product.quantity < 500) {
  product.discount = 2;
} else if (product.quantity >= 500 && product.quantity < 2000) {
  product.discount = 5;
} else if (product.quantity >= 2000) {
  product.discount = 10;
}

Mesin aturan menggantikan yang di atas dengan kode yang terlihat seperti ini:

ruleEngine.applyRules(product);

Terserah Anda untuk memutuskan apakah meletakkan aturan konsol admin di tangan orang non-teknis adalah hal yang baik atau tidak :)

Detail selengkapnya di Haruskah saya menggunakan Mesin Aturan? , Mengapa menggunakan Rule Engine? , Beberapa Panduan Untuk Memutuskan Apakah Akan Menggunakan Mesin Aturan dan di Google .

Apakah ada pemain lain?

Pemain lain termasuk JRules, Corticon (JRules adalah IMO paling terkenal - yang tidak berarti yang terbaik).

bagaimana perbandingannya di area lain seperti kemudahan penggunaan, kinerja, tingkat integrasi dengan kode Anda?

Tidak dapat memberi tahu Anda secara tepat, saya hanya memiliki sedikit pengalaman (positif) dengan Drools. Tetapi Anda akan mendapatkan beberapa umpan balik dari posting blog seperti JBoss Drools vs ILog JRules - sebuah cerita anekdot (pastikan untuk membacanya) atau Bekerja dengan Drools dari perspektif JRules . Saya yakin Anda dapat menemukan lebih banyak dari mereka di Google (tapi saya akan mencoba Drools).

Pascal Thivent
sumber
1
jawaban Anda terlihat bagus. Bisakah Anda memberi tahu saya di mana menggunakan air liur dan ke mana harus Jess? Pada dasarnya, saya mengharapkan jawaban diff yang lebih terkait. b / w ngiler dan Jess.
Tony
7
Wow, @Pascal, contoh kuantitas / diskon produk itu adalah WTF nyata. Katakanlah jumlahnya 5.000. IF pertama dievaluasi menjadi true, IF ELSE tidak pernah dievaluasi. Menempatkan logika bisnis semacam itu di mesin aturan tidak akan membantu apa pun, meskipun mungkin akan lebih sulit untuk menemukan bug.
DOK
Dalam pembelaannya, contoh itu berasal dari artikel pertama itu. Tidak begitu yakin seberapa kredibel penampilan yang satu itu lagi ... :)
Jeb
6
Hanya contoh yang baik tentang bahaya menempatkan kendali peraturan di tangan non-teknis.
Langkah
1
Mengapa menggunakan Rule Engine? adalah yang terbaik di antara tautan yang terdaftar
Aravind Yarram
16

Kami sedang mengevaluasi aturan sekarang untuk digunakan dengan server aplikasi kami. Kami telah menemukan OpenRules , yang mudah diintegrasikan dengan Java dan, sejauh pengujian kami menunjukkan, cukup cepat. Keuntungan utama OpenRules di atas yang lain adalah cara aturan diubah dan ditangani. Itu semua terjadi di tabel Excel, yang merupakan cara termudah untuk non-programmer. Semua orang yang terlibat, bahkan orang non-teknis, memahami semuanya dengan sempurna :-)

Kami juga memiliki drool yang terintegrasi, tetapi aturannya jauh lebih rumit untuk dipahami karena ini adalah pendekatan yang lebih terprogram. Itulah mengapa kami - kemungkinan besar - akan tetap menggunakan OpenRules.

Dominik Sandjaja
sumber
19
Drools juga mendukung aturan yang diedit di Excel, dan melalui antarmuka web.
retronim
7

Kami memiliki pertanyaan serupa dengan kami, kami akhirnya mengambil Drools, seseorang harus menggunakan air liur jika Anda memiliki berikut ini:

  • Logika bisnis yang menurut Anda semakin berantakan dengan beberapa kondisi if karena berbagai skenario
  • Anda akan memiliki tuntutan peningkatan kompleksitas
  • Perubahan logika bisnis akan sering terjadi (1 - 2 kali setahun juga akan sering terjadi)
  • Server Anda memiliki cukup memori karena ini adalah alat yang haus memori, ini memberikan kinerja dengan biaya memori

Dapatkan detail lebih lanjut di URL berikut

Sachin Thapa
sumber
3

Hanya menambahkan bahwa banyak orang mencari sesuatu yang lebih mirip dengan mengelola apakah kondisi tertentu terpenuhi untuk mengaktifkan atau menonaktifkan fitur tertentu dalam aplikasi.

Saya bosan menerapkan kembali pola yang sama berulang kali ke mana pun saya pergi, jadi saya memutuskan untuk membuat proyek OSS untuknya yang disebut Roolie http://sourceforge.net/projects/roolie/

Saya baru saja mengubahnya dan karena tidak ada bug yang dilaporkan sejak 2010 ketika dirilis, saya memutakhirkannya ke v 1.0 tanpa ada perubahan selain yang diperlukan untuk menyimpannya di Maven Central (yang sedang saya lakukan ).

Pada dasarnya JSR-94 berlebihan untuk banyak hal, dan ada kurva pembelajaran dan overhead yang sangat besar yang sejalan dengan penawaran saat ini. Tidak apa-apa jika itu yang Anda inginkan. Tetapi jika Anda hanya ingin merangkai aturan sederhana yang ditulis di Java bersama dengan XML untuk mempertahankan pengujian status Anda, Roolie adalah cara yang sangat cepat untuk melakukannya. Tidak ada ketergantungan dan tidak ada kurva belajar.

RK
sumber
2
Roolie menyatakan bahwa MIT berlisensi SourceForge, tetapi kode melaporkan LGPLv3. Ini pada dasarnya berarti meragukan untuk menggunakannya dalam produk komersial apa pun (dan di beberapa produk Open Source, juga). Lihat nmav.gnutls.org/2013/03/the-perils-of-lgplv3.html .
ingyhere
2

Ketika kami membutuhkan mesin aturan, kami memutuskan untuk meluncurkannya sendiri, karena yang tersedia terlalu rumit untuk tugas-tugas sederhana kami. Jika Anda bahkan sangat berpengalaman dengan ekspresi parsing yang mungkin dimasukkan pengguna, ini tidak terlalu sulit untuk dilakukan. Dalam kasus kami, sebagian besar spesifikasi ditangani oleh XSD dan hanya beberapa bidang yang diuraikan lebih lanjut.

Kebingungan
sumber
6
Mesin aturan menggunakan algoritme yang mapan (seperti algoritme forward chaining dan algoritme Rete) untuk meningkatkan masalah yang tidak sepele. Jika Anda hanya mengevaluasi ekspresi, pustaka yang ada seperti MVEL mungkin berguna.
jevon