Đoạn mã ví dụ sau đây sẽ mô tả các quá trình sử dụng bảng quyết định để thực hiện rules.There hai cách
một) Sử dụng các API tờ lây lan trực tiếp để thực hiện các quy tắc.
b) Chuyển đổi các tờ lây lan excel vào một tập tin drl và sau đó thực hiện các quy tắc.
Tôi sẽ mô tả quá trình thứ hai (b).
** Các lớp java chính là 'DroolExcelDemo.java. Đầu tiên nó sẽ chuyển đổi các bảng excel vào một (.drl) tập tin và sau đó thực hiện các quy tắc.
package DROOLS;
nhập khẩu java.io.BufferedWriter;
nhập khẩu java.io.FileInputStream;
nhập khẩu java.io.FileNotFoundException;
nhập khẩu java.io.FileWriter;
nhập khẩu java.io.IOException;
nhập khẩu java.io.InputStream;
nhập khẩu java.util.Collection;
nhập khẩu org.drools.KnowledgeBase;
nhập khẩu org.drools.KnowledgeBaseFactory;
nhập khẩu org.drools.builder.KnowledgeBuilder;
nhập khẩu org.drools.builder.KnowledgeBuilderFactory;
nhập khẩu org.drools.builder.ResourceType;
nhập khẩu org.drools.decisiontable.InputType;
nhập khẩu org.drools.decisiontable.SpreadsheetCompiler;
nhập khẩu org.drools.definition.KnowledgePackage;
nhập khẩu org.drools.event.rule.DebugAgendaEventListener;
nhập khẩu org.drools.event.rule.DebugWorkingMemoryEventListener;
nhập khẩu org.drools.io.ResourceFactory;
nhập khẩu org.drools.runtime.StatefulKnowledgeSession;
/**
* Lớp này sẽ tạo ra một tập tin drl từ excel
* và sau đó thực hiện các quy tắc.
*/
public class DroolExcelDemo {
public static final void main(cuối cùng String[] args) {
// Tạo xây dựng kiến thức
thức KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
// Tạo drl tập tin từ bảng excel
InputStream is = null;
thử {
= new FileInputStream(“D:/Workspace / DroolsDemo / src / Drools / DroolExcel.xls”);
} bắt (FileNotFoundException e) {
e.printStackTrace();
}
// Tạo dụ lớp trình biên dịch
SpreadsheetCompiler sc = new SpreadsheetCompiler();
// Biên dịch excel để tạo ra các (.drl) tập tin
StringBuffer drl = new StringBuffer(sc.compile(là, InputType.XLS));
// Chèn giá trị phương ngữ vào tập tin drl
drl.insert(drl.indexOf(“Drools”)+40,”phương ngữ ”mvel ””+”\n”);
// Kiểm tra các tập tin được tạo ra drl
System.out.println(“Tạo DRL tập tin được hiển thị dưới đây–: “);
System.out.println(drl);
// viết chuỗi vào một tập tin drl
thử {
BufferedWriter ra = new BufferedWriter(mới FileWriter(“D:/Workspace / DroolsDemo / src / Drools / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
bắt (IOException e){
System.out.println(“Ngoại lệ “);
}
// Chờ đợi trước khi sử dụng các tập tin drl trong phần tiếp theo.
thử {
Thread.sleep(10000);
} bắt (InterruptedException e) {
e.printStackTrace();
}
// End tạo ra các tập tin drl từ excel
// Sử dụng DRL tập tin
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );
// Kiểm tra các nhà xây dựng cho các lỗi
nếu ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder có lỗi”);
System.out.println( kbuilder.getErrors().toString());
}
// nhận được các gói được biên dịch (đó là serializable)
Bộ sưu tập thức pkgs = kbuilder.getKnowledgePackages();
// thêm các gói để một knowledgebase (triển khai các gói kiến thức).
thức KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);
// Tạo phiên stateful
thức StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
// Thiết lập nghe sự kiện
ksession.addEventListener(mới DebugAgendaEventListener());
ksession.addEventListener(mới DebugWorkingMemoryEventListener());
// Tạo tin nhắn văn bản
DroolMessage messagetxt = new DroolMessage();
messagetxt.setMessage(“Số chuyến bay”);
DroolMessage messagetxt1 = new DroolMessage();
messagetxt1.setMessage(“FlightCode”);
// Chèn vào quy tắc phiên và lửa
System.out.println(“chèn vào phiên”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“trước khi bắn các quy tắc”);
ksession.fireAllRules();
System.out.println(“sau khi bắn các quy tắc”);
ksession.dispose();
System.out.println(“sau khi xử lý”);
}
}
* *File thứ hai là một DroolMessage.java '’ POJO lớp. Nó chứa các giá trị được thiết lập bởi lớp java chính mô tả ở trên.
package DROOLS;
/**
* This is a POJO for messages.It will be used by the drl file.
* The message values will be set from the DroolExcelDemo class
*/
public class DroolMessage {
// Create variable
private String message;
// Builder
công DroolMessage() {
System.out.println(“khởi tạo tin nhắn”);
}
// Phương pháp setter và getter
public String getMessage() {
trở lại tin nhắn;
}
public void setMessage(String tin nhắn) {
this.message = tin nhắn;
}
// Phương pháp thử để kiểm tra việc thực hiện quy tắc
public void test(Chuỗi thử nghiệm) {
System.out.println(“Phân tích cú pháp bắt đầu và vị trí cuối: “+thử nghiệm);
}
}
** Sau đây là một tập tin quy tắc được tạo ra bởi các DroolExcelDemo.java '’ lớp.
package DROOLS;
//generated from Decision Table
dialect "mvel"
import DroolMessage;
// rule values at B12, header at B7
rule "DroolExcelRule_12"
when
msg:DroolMessage(message == "FlightNumber")
then
msg.test("1,6");
end
// quy luật giá trị ở B13, header ở B7
loại trừ “DroolExcelRule_13”
khi
msg:DroolMessage(tin nhắn == “FlightCode”)
sau đó
msg.test(“7,8”);
cuối
** Sau đây là các đầu vào sắc cai trị dựa trên tập tin với DroolExcelDemo.java '’ lớp trên.
Chào, bạn có thể gửi cho tôi tập tin DroolExcel.xls?
cảm ơn bạn!
Hi Daniel,
Cảm ơn sự nhiệt tình của bạn. Xin vui lòng cho tôi biết yêu cầu chính xác của bạn. Tôi sẽ gửi cho bạn bảng excel.
vô
/KP
Chào, bạn có thể gửi cho tôi tập tin DroolExcel.xls? Tôi chỉ muốn chạy mã này và muốn có được kết quả
email của tôi
dahalram20@gmail.com
Hi Aakash,
Xin vui lòng gửi cho tôi yêu cầu chính xác của bạn. Tôi sẽ cố gắng hết sức mình để giúp bạn ra ngoài.
Nhờ,
Techalpine
Chào,
bạn có thể vui lòng chia sẻ các tập tin DroolExcel.xls?
Tôi muốn thực hiện chương trình này. Tôi mới đến chảy nước miếng và muốn hiểu làm thế nào nó hoạt động.
Địa chỉ email của tôi: b4umani2003@gmail.com
Nhờ,
Mani
Hi Manideepa,
Các mẫu excel đã được thể hiện trong bài viết. Bạn có thể sử dụng nó như nó là. Nếu bạn có một số yêu cầu khác, làm cho tôi biết. Tôi sẽ yêu thương để giúp bạn sắp xếp các vấn đề.
Nhờ
/KP
Chào,
Bạn có biết làm thế nào để sử dụng các API bảng tính trực tiếp để thực hiện các quy tắc?
Nhờ,
Nithya
bạn có thể xin vui lòng gửi file excel ,tôi muốn chạy và nhận được kết quả ..??
Ông có thể vui lòng cung cấp một ví dụ DRL nơi tôi có thể lấy dữ liệu từ cơ sở dữ liệu và cập nhật thực tế .
Hi Sunil,
Bạn có thể sử dụng chương trình cùng với một sửa đổi nhỏ.
Hãy liên hệ với tôi @ techalpineit@gmail.com để được trợ giúp.
Nhờ
/KP
Chào,
Ông có thể chia sẻ excel ? Tôi muốn để phù hợp với một chuỗi số hoặc thay vì tìm kiếm chuỗi trong chuỗi khác
Nhờ
Dành riêng,
Bạn có thể sử dụng cùng một dữ liệu như trong file mẫu và làm cho một cho chính mình.
Vui lòng gửi cho tôi @ techalpineit@gmail.com để được trợ giúp.
Nhờ
/KP
xin chào,
Trong khi tôi đang cố gắng để thực hiện, nó được nuôi một tập tin không tìm thấy lỗi trong khi chế biến dưới đường.
// Sử dụng DRL tập tin
kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );
Ông có thể xin đề nghị gì khác tôi cần phải làm.
Trân trọng,
Shekhar Shaw
Xin chào Shekhar,
Bạn cần đảm bảo rằng cả hai .drl và các file .class có sẵn. Vui lòng kiểm tra và cho tôi biết nếu bạn gặp phải bất kỳ vấn đề.
Vui lòng gửi cho tôi @ techalpineit@gmail.com
Nhờ
Kaushik
Chào
nó là rất tốt blog tôi thực hiện. nhưng tôi muốn tạo ra file Rule mẫu tự động mà không cần thêm bất kỳ file Rule.