Câu trả lời:
Ưu và nhược điểm của việc áp dụng các công cụ quy tắc Java JESS và Drools là gì?
Sử dụng công cụ quy tắc nếu bạn cần tách các quy tắc nghiệp vụ khỏi logic ứng dụng. Bài viết Dự án của bạn có cần Rule Engine có một ví dụ điển hình:
Ví dụ: một hệ thống mặt tiền cửa hàng điển hình có thể liên quan đến mã để tính chiết khấu:
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; }
Công cụ quy tắc thay thế mã ở trên bằng mã trông giống như sau:
ruleEngine.applyRules(product);
Tùy thuộc vào bạn để quyết định xem việc đặt bảng điều khiển quản trị quy tắc vào tay những người không phải là kỹ thuật có phải là điều tốt hay không :)
Thêm chi tiết trong Tôi có nên sử dụng Công cụ quy tắc không? , Tại sao lại sử dụng Rule Engine? , Một số Nguyên tắc Để Quyết định Có Sử dụng Công cụ Quy tắc và trên Google hay không .
Có người chơi nào khác không?
Những người chơi khác bao gồm JRules, Corticon (JRules là IMO nổi tiếng nhất - không có nghĩa là tốt nhất).
làm thế nào để họ so sánh trong các lĩnh vực khác như dễ sử dụng, hiệu suất, mức độ tích hợp với mã của bạn?
Không thể nói chính xác với bạn, tôi chỉ có một chút kinh nghiệm (tích cực) với Drools. Nhưng bạn sẽ nhận được một số phản hồi từ các bài đăng trên blog như JBoss Drools vs ILog JRules - một câu chuyện mang tính giai thoại (hãy nhớ đọc nó) hoặc Làm việc với Drools từ góc độ JRules . Tôi chắc rằng bạn có thể tìm thêm chúng trên Google (nhưng tôi sẽ dùng thử Drools).
Chúng tôi hiện đang đánh giá các quy tắc để sử dụng với máy chủ ứng dụng của chúng tôi. Chúng tôi đã xem qua OpenRules , dễ dàng tích hợp với Java và theo như thử nghiệm của chúng tôi cho thấy, đủ nhanh. Ưu điểm chính của OpenRules so với các quy tắc khác là cách các quy tắc được sửa đổi và xử lý. Tất cả đều xảy ra trong bảng Excel, đây là cách dễ nhất cho những người không phải là lập trình viên. Mọi người tham gia, ngay cả những người không chuyên về kỹ thuật, đều hiểu mọi thứ một cách hoàn hảo :-)
Chúng tôi cũng có tích hợp drools, nhưng các quy tắc phức tạp hơn để hiểu vì nó là một cách tiếp cận có lập trình hơn. Đó là lý do tại sao chúng tôi - rất có thể - sẽ gắn bó với OpenRules.
Chúng tôi đã có câu hỏi tương tự với chúng tôi, cuối cùng chúng tôi đã chọn Drools, một người nên sử dụng drools nếu bạn có:
Xem thêm chi tiết tại URL sau
Chỉ cần nói thêm rằng nhiều người đang tìm kiếm một thứ gì đó giống hơn để quản lý xem liệu các điều kiện nhất định có được đáp ứng để bật hoặc tắt một số tính năng nhất định trong ứng dụng hay không.
Tôi cảm thấy mệt mỏi với việc lặp đi lặp lại cùng một mô hình ở mọi nơi tôi đến, vì vậy tôi quyết định thực hiện một dự án OSS cho nó có tên là Roolie http://sourceforge.net/projects/roolie/
Tôi vừa mới thử nghiệm nó và vì không có lỗi nào được báo cáo kể từ năm 2010 khi nó được phát hành, tôi đã nâng cấp nó lên phiên bản 1.0 mà không có thay đổi nào ngoài những thay đổi cần thiết để lưu trữ nó tại Maven Central (tôi đang trong quá trình thực hiện ).
Về cơ bản JSR-94 là quá mức cần thiết cho hầu hết mọi thứ và có một đường cong học tập và chi phí khổng lồ đi cùng với các dịch vụ hiện tại. Đó là tốt nếu đó là những gì bạn muốn. Nhưng nếu bạn chỉ muốn xâu chuỗi các quy tắc đơn giản được viết bằng Java cùng với XML để duy trì các thử nghiệm trạng thái của mình, thì Roolie là một cách rất nhanh để làm điều đó. Không phụ thuộc và không có đường cong học tập.
Khi chúng tôi cần một công cụ quy tắc, chúng tôi quyết định triển khai công cụ của riêng mình, vì những công cụ có sẵn quá phức tạp đối với các nhiệm vụ đơn giản của chúng tôi. Nếu bạn thậm chí có kinh nghiệm từ xa với các biểu thức phân tích cú pháp mà người dùng có thể đưa vào, thì điều này không khó thực hiện. Trong trường hợp của chúng tôi, hầu hết các thông số kỹ thuật được xử lý bởi XSD và chỉ một số trường được phân tích cú pháp thêm.