Drools - Cú pháp quy tắc
Như bạn đã thấy .drl (tệp quy tắc) có cú pháp riêng của nó, hãy để chúng tôi trình bày một số phần của cú pháp Quy tắc trong chương này.
Điều kiện trong Quy tắc
Một quy tắc có thể chứa nhiều điều kiện và mẫu như:
- Tài khoản (số dư == 200)
- Khách hàng (tên == “Vivek”)
Các điều kiện trên kiểm tra xem Số dư tài khoản là 200 hay Tên khách hàng là “Vivek”.
Các biến trong quy tắc
Tên biến trong Drools bắt đầu bằng ký hiệu Dollar ($).
- $ account - Tài khoản ()
- $ account là biến cho lớp Account ()
Drools có thể hoạt động với tất cả các kiểu Java gốc và thậm chí cả Enum.
Nhận xét trong Quy tắc
Các ký tự đặc biệt, # hoặc //, có thể được sử dụng để đánh dấu các nhận xét một dòng.
Đối với nhận xét nhiều dòng, hãy sử dụng định dạng sau:
/*
Another line
.........
.........
*/
Biến toàn cục
Biến toàn cục là các biến được gán cho một phiên. Chúng có thể được sử dụng vì nhiều lý do như sau:
Đối với các tham số đầu vào (ví dụ: các giá trị không đổi có thể được tùy chỉnh từ phiên này sang phiên khác).
Đối với các tham số đầu ra (ví dụ: báo cáo — một quy tắc có thể ghi một số thông báo vào một biến báo cáo chung).
Điểm truy cập cho các dịch vụ như ghi nhật ký, có thể được sử dụng trong các quy tắc.
Chức năng trong Quy tắc
Chức năng là một tính năng tiện lợi. Chúng có thể được sử dụng trong các điều kiện và hậu quả. Các hàm đại diện cho một sự thay thế cho các lớp tiện ích / trợ giúp. Ví dụ,
function double calculateSquare (double value) {
return value * value;
}
Phương ngữ
Phương ngữ chỉ định cú pháp được sử dụng trong bất kỳ biểu thức mã nào nằm trong điều kiện hoặc hệ quả. Nó bao gồm các giá trị trả về, dấu hiệu, dấu hiệu nội dòng, vị từ, biểu thức phục hồi, hệ quả, v.v. Giá trị mặc định làJava. Drools hiện hỗ trợ thêm một phương ngữ gọi làMVEL. Phương ngữ mặc định có thể được chỉ định ở cấp độ gói như sau:
package org.mycompany.somePackage
dialect "mvel"
Phương ngữ MVEL
MVEL là một ngôn ngữ biểu thức cho các ứng dụng dựa trên Java. Nó hỗ trợ truy cập trường và phương thức / getter. Nó dựa trên cú pháp Java.
Salience
Khả năng phục hồi là một tính năng rất quan trọng của Cú pháp quy tắc. Khả năng phục hồi được sử dụng bởi chiến lược giải quyết xung đột để quyết định quy tắc nào sẽ kích hoạt trước. Theo mặc định, nó là tiêu chí chính.
Chúng ta có thể sử dụng khả năng phục hồi để xác định thứ tự của các quy tắc kích hoạt. Salience có một thuộc tính, nhận bất kỳ biểu thức nào trả về một số kiểu int (số dương cũng như số âm đều hợp lệ). Giá trị càng cao, thì chiến lược giải quyết xung đột càng có nhiều khả năng được chọn để kích hoạt.
salience ($account.balance * 5)
Giá trị đối tượng mặc định là 0. Chúng ta nên ghi nhớ điều này khi chỉ định giá trị đối tượng cho một số quy tắc.
Có rất nhiều tính năng / tham số khác trong Cú pháp quy tắc, nhưng chúng tôi chỉ đề cập đến những tính năng / thông số quan trọng ở đây.
Từ khóa kết quả quy tắc
Từ khoá Hệ quả của Quy tắc là những từ khoá được sử dụng trong “then”Một phần của quy tắc.
Modify - Các thuộc tính của dữ kiện có thể được sửa đổi trong then một phần của Quy tắc.
Insert - Dựa trên một số điều kiện, nếu đúng, người ta có thể chèn một dữ kiện mới vào phiên hiện tại của Rule Engine.
Retract - Nếu một điều kiện cụ thể là đúng trong một Quy tắc và bạn không muốn thực hiện bất kỳ điều gì khác với thực tế đó, bạn có thể rút lại thực tế cụ thể từ Công cụ quy tắc.
Note- Việc có một logic điều kiện (câu lệnh if) nằm trong một hệ quả quy tắc được coi là một thực hành rất xấu. Hầu hết các trường hợp, một quy tắc mới nên được tạo.