Saya memiliki daftar keuntungan menggunakan Rules Engine, serta beberapa alasan untuk menggunakannya, yang saya butuhkan adalah daftar alasan mengapa Anda TIDAK boleh menggunakan Rules Engine
Yang terbaik yang saya miliki sejauh ini:
Mesin aturan tidak benar-benar dimaksudkan untuk menangani alur kerja atau eksekusi proses, juga bukan mesin alur kerja atau alat manajemen proses yang dirancang untuk melakukan aturan.
Adakah alasan besar lainnya mengapa Anda tidak boleh menggunakannya?
rule-engine
BlackTigerX
sumber
sumber
Jawaban:
Saya menjadi sangat gugup saat melihat orang menggunakan kumpulan aturan yang sangat besar (misalnya, pada urutan ribuan aturan dalam satu kumpulan aturan). Ini sering terjadi ketika mesin aturan adalah tunggal yang duduk di tengah perusahaan dengan harapan menjaga aturan KERING akan membuatnya dapat diakses oleh banyak aplikasi yang memerlukannya. Saya akan menantang siapa pun untuk memberi tahu saya bahwa mesin aturan Rete dengan banyak aturan itu dipahami dengan baik. Saya tidak mengetahui adanya alat yang dapat memeriksa untuk memastikan bahwa konflik tidak ada.
Saya pikir kumpulan aturan partisi agar tetap kecil adalah pilihan yang lebih baik. Aspek bisa menjadi cara untuk berbagi kumpulan aturan umum di antara banyak objek.
Saya lebih suka pendekatan yang lebih sederhana dan lebih didorong data jika memungkinkan.
sumber
Saya akan memberikan 2 contoh dari pengalaman pribadi di mana menggunakan Mesin Aturan adalah ide yang buruk, mungkin itu akan membantu: -
Pelajaran : Mereka disebut "Aturan Bisnis" karena suatu alasan, jangan gunakan aturan ketika Anda tidak dapat merancang sistem yang dapat dengan mudah dipelihara / dipahami oleh pengguna Bisnis.
Pelajaran : Persyaratan cenderung banyak berubah selama rilis awal perubahan dan tidak menjamin penggunaan aturan. Gunakan aturan ketika bisnis Anda sering berubah (bukan persyaratan). Misalnya: - Perangkat lunak yang mengatur pajak Anda akan berubah setiap tahun karena undang-undang perpajakan berubah dan penggunaan aturan adalah ide yang bagus. Rilis 1.0 aplikasi web akan sering berubah saat pengguna mengidentifikasi persyaratan baru, tetapi akan stabil seiring waktu. Jangan gunakan aturan sebagai alternatif penerapan kode. </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> orang </s>
sumber
Saya penggemar berat Business Rules Engines, karena dapat membantu Anda membuat hidup Anda lebih mudah sebagai programmer. Salah satu pengalaman pertama yang saya alami saat mengerjakan proyek Data Warehouse adalah menemukan Prosedur Tersimpan yang berisi struktur CASE rumit yang membentang di seluruh halaman. Men-debug adalah mimpi buruk, karena sangat sulit untuk memahami logika yang diterapkan dalam struktur CASE yang begitu panjang, dan untuk menentukan apakah Anda memiliki aturan yang tumpang tindih di halaman 1 kode dan aturan lain dari halaman 5. Secara keseluruhan, kami memiliki lebih dari 300 aturan seperti itu tertanam dalam kode.
Ketika kami menerima persyaratan pengembangan baru, untuk sesuatu yang disebut Tujuan Akuntansi, yang melibatkan penanganan lebih dari 3000 aturan, saya tahu ada sesuatu yang harus diubah. Saat itu saya sedang mengerjakan prototipe yang kemudian menjadi induk dari apa yang sekarang menjadi mesin Aturan Bisnis Kustom, yang mampu menangani semua operator standar SQL. Awalnya kami telah menggunakan Excel sebagai alat penulisan dan, kemudian, kami telah membuat aplikasi ASP.net yang akan memungkinkan Pengguna Bisnis untuk menentukan aturan bisnis mereka sendiri, tanpa perlu menulis kode. Sekarang sistem berfungsi dengan baik, dengan sedikit bug, dan berisi lebih dari 7000 aturan untuk menghitung Tujuan Akuntansi ini. Saya tidak berpikir skenario seperti itu akan mungkin terjadi hanya dengan hard-coding.
Namun, ada batasan untuk pendekatan seperti itu:
Rincian lebih lanjut tentang topik ini dapat ditemukan pada posting yang saya tulis: http://dwhbp.com/post/2011/10/30/Implementing-a-Business-Rule-Engine.aspx
Secara keseluruhan, keuntungan terbesar menggunakan Mesin Aturan Bisnis adalah memungkinkan pengguna untuk mengambil kembali kendali atas definisi dan penulisan Aturan Bisnis, tanpa perlu pergi ke departemen TI setiap kali mereka perlu memodifikasi sesuatu. Ini juga mengurangi beban kerja tim pengembangan TI, yang sekarang dapat fokus pada membangun barang dengan nilai lebih.
Bersulang,
Nicolae
sumber
Satu poit yang saya anggap sebagai "pedang bermata dua" adalah:
Saya telah melihat ini bekerja dengan baik, ketika Anda memiliki satu atau dua orang jenius multidisiplin di sisi non teknis, tetapi saya juga melihat kurangnya teknik yang menyebabkan pembengkakan, lebih banyak bug, dan secara umum 4x biaya pengembangan / pemeliharaan.
Jadi, Anda perlu mempertimbangkan basis pengguna Anda dengan serius.
sumber
Saya pikir artikel Alex Papadimoulis cukup berwawasan: http://thedailywtf.com/articles/soft_coding.aspx
Ini tidak komprehensif, tapi dia punya beberapa poin bagus.
sumber
Artikel HEBAT tentang kapan tidak menggunakan aturan Mesin ... (serta kapan menggunakannya) ....
http://www.jessrules.com/guidelines.shtml
Pilihan lainnya adalah jika Anda memiliki seperangkat aturan linier yang hanya berlaku sekali dalam urutan apa pun untuk mendapatkan hasil adalah dengan membuat antarmuka yang menarik dan meminta pengembang menulis dan menerapkan aturan baru ini. Keuntungannya adalah sangat cepat karena biasanya Anda akan melewati sesi hibernasi ATAU sesi jdbc serta parameter apa pun sehingga Anda memiliki akses ke semua data aplikasi Anda tetapi dengan cara yang efisien. Dengan daftar fakta, mungkin ada banyak perulangan / pencocokan yang benar-benar dapat memperlambat sistem ..... Ini cara lain untuk menghindari mesin aturan dan dapat diterapkan secara dinamis (ya, aturan keren kami diterapkan di database dan kami tidak memiliki rekursi .... baik memenuhi aturan atau tidak). Ini hanyalah pilihan lain ..... oh dan satu lagi manfaatnya adalah tidak mempelajari sintaks aturan untuk pengembang yang masuk.
Itu sangat tergantung pada konteks Anda. Mesin aturan memiliki tempatnya dan yang di atas hanyalah opsi lain jika Anda memiliki aturan pada proyek yang mungkin ingin Anda terapkan secara dinamis untuk situasi yang sangat sederhana yang tidak memerlukan mesin aturan.
DASARNYA JANGAN menggunakan mesin aturan jika Anda memiliki kumpulan aturan sederhana dan dapat memiliki antarmuka yang asyik sebagai gantinya ..... sama seperti yang dapat diterapkan secara dinamis dan pengembang baru yang bergabung dengan tim Anda dapat mempelajarinya lebih cepat daripada bahasa drools. (Tapi itu pendapat saya)
sumber
Menurut pengalaman saya, mesin aturan bekerja paling baik jika yang berikut ini benar:
Jika salah satu dari empat ciri ini hilang, Anda mungkin masih menemukan mesin aturan bekerja untuk Anda, tetapi setiap kali saya mencobanya dengan bahkan 1 hilang, saya mengalami masalah.
sumber
Itu pasti awal yang bagus. Hal lain dengan mesin aturan adalah bahwa beberapa hal dipahami dengan baik, deterministik, dan lurus ke depan. Pemotongan gaji adalah (atau dulu) seperti itu. Anda dapat mengekspresikannya sebagai aturan yang akan diselesaikan oleh mesin aturan, tetapi Anda dapat mengekspresikan aturan yang sama sebagai tabel nilai yang cukup sederhana.
Jadi, mesin alur kerja bagus saat Anda mengekspresikan proses jangka panjang yang akan memiliki data yang persisten. Mesin aturan dapat melakukan hal serupa, tetapi Anda harus melakukan banyak kerumitan tambahan.
Mesin aturan bagus ketika Anda memiliki basis pengetahuan yang rumit dan perlu pencarian. Mesin aturan dapat menyelesaikan masalah yang rumit, dan dapat diadaptasi dengan cepat untuk mengubah situasi, tetapi menimbulkan banyak kerumitan pada implementasi dasar.
Banyak algoritme keputusan cukup sederhana untuk diekspresikan sebagai program berbasis tabel sederhana tanpa kerumitan yang disiratkan oleh mesin aturan nyata.
sumber
Saya sangat merekomendasikan mesin aturan bisnis seperti Drools sebagai open source atau Mesin Aturan Komersial seperti LiveRules.
sumber
Saya tidak begitu memahami beberapa poin seperti:
a) pelaku bisnis perlu memahami bisnis dengan sangat baik, atau;
b) perselisihan pebisnis tidak perlu tahu aturannya.
Bagi saya, sebagai orang yang baru menyentuh BRE, manfaat BRE disebut dengan membiarkan sistem beradaptasi dengan perubahan bisnis, oleh karena itu difokuskan pada adaptasi perubahan.
Apakah menjadi masalah jika aturan yang ditetapkan pada waktu x berbeda dengan aturan yang dibuat pada waktu y karena:
a) pelaku bisnis tidak memahami bisnis, atau;
b) pebisnis tidak mengerti aturan?
sumber