Ưu và nhược điểm của các công cụ quy tắc Java [đã đóng]


108

Ưu và nhược điểm của việc áp dụng các công cụ quy tắc Java JESSDrools là gì? Có người chơi nào khác không?

Tôi hiểu rằng Drools là Mã nguồn mở còn JESS thì không, nhưng 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?

Câu trả lời:


128

Ư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).


1
câu trả lời của bạn có vẻ tốt. Bạn có thể vui lòng cho tôi biết nơi sử dụng nước dãi và nơi để Jess? Về cơ bản, tôi đang mong đợi câu trả lời khác có liên quan hơn. b / w nước dãi và Jess.
Tony,

7
Chà, @Pascal, ví dụ về số lượng sản phẩm / chiết khấu là một WTF thực. Giả sử số lượng là 5.000. IF đầu tiên được đánh giá là true, các IF ELSE không bao giờ được đánh giá. Đưa loại logic kinh doanh đó vào công cụ quy tắc sẽ không giúp được gì, mặc dù nó có thể khiến việc tìm ra lỗi trở nên khó khăn hơn.
DOK

Trong lời bào chữa của mình, ví dụ đó là từ bài báo đầu tiên đó. Không chắc chắn mức độ đáng tin cậy của một người nhìn nữa ... :)
Jeb

6
Đây chỉ là một ví dụ điển hình về sự nguy hiểm của việc đặt quyền kiểm soát các quy tắc vào tay không có kỹ thuật.
Nhịp độ

1
Tại sao sử dụng Rule Engine? là tốt nhất trong số các liên kết được liệt kê
Aravind Yarram

16

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.


19
Drools cũng hỗ trợ các quy tắc được chỉnh sửa trong Excel và thông qua giao diện web.
viết tắt

7

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ó:

  • Logic kinh doanh mà bạn nghĩ đang trở nên lộn xộn với nhiều điều kiện if do nhiều tình huống khác nhau
  • Bạn sẽ có nhu cầu ngày càng tăng về mức độ phức tạp
  • Sự thay đổi logic kinh doanh sẽ thường xuyên (1-2 lần một năm cũng sẽ thường xuyên)
  • Máy chủ của bạn có đủ bộ nhớ vì nó là một công cụ đói bộ nhớ, nó cung cấp hiệu suất với chi phí bộ nhớ

Xem thêm chi tiết tại URL sau


3

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.


2
Roolie nói rằng đó là MIT được cấp phép trên SourceForge, nhưng mã báo cáo LGPLv3. Về cơ bản, điều này có nghĩa là việc sử dụng nó trong bất kỳ sản phẩm thương mại nào (và trong một số sản phẩm Nguồn mở cũng không rõ ràng). Xem nmav.gnutls.org/2013/03/the-perils-of-lgplv3.html .
ingyhere

2

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.


6
Công cụ quy tắc sử dụng các thuật toán được thiết lập tốt (chẳng hạn như chuỗi chuyển tiếp và thuật toán Rete) để mở rộng quy mô các vấn đề không nhỏ. Nếu bạn chỉ đơn giản là đánh giá các biểu thức, một thư viện hiện có như MVEL có thể hữu ích.
jevon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.