Làm thế nào để sử dụng bảng quyết định chảy nước miếng ở định dạng bảng tính để thực hiện các quy tắc?

Đ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.


15 Những suy nghĩ trên "Làm thế nào để sử dụng bảng quyết định chảy nước miếng ở định dạng bảng tính để thực hiện các quy tắc?

    1. kaushik bài viết tác giả

      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.


      /KP

    1. kaushik bài viết tác giả

      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

  1. Manideepa

    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

  2. kaushik bài viết tác giả

    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

  3. Nithya Kathiresan

    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

  4. sunil

    Ô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ế .

  5. Ananya

    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ờ

    1. kaushik bài viết tác giả

      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

  6. Shekhar Shaw

    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

    1. kaushik bài viết tác giả

      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

  7. Rahul Pandey

    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.

============================================= ============================================== Mua sách Techalpine tốt nhất trên Amazon,en,Thợ điện CT Hạt dẻ,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Thưởng thức blog này,,en,làm ơn mở rộng vốn từ,,en,techalpine.com/apache-mahout-and-machine-learning,,en? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share