Jawaban:
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).
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.
Kami memiliki pertanyaan serupa dengan kami, kami akhirnya mengambil Drools, seseorang harus menggunakan air liur jika Anda memiliki berikut ini:
Dapatkan detail lebih lanjut di URL berikut
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.
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.