วิธีการใช้ตารางการตัดสินใจในรูปแบบ Drools สเปรดชีตเพื่อดำเนินการกฎ?

รหัสตัวอย่างต่อไปนี้จะอธิบายขั้นตอนของการใช้ตารางการตัดสินใจที่จะดำเนินการ rules.There สองวิธีคือ

a) ใช้ APIs แผ่นกระจายโดยตรงในการดำเนินการกฎ.
ข) แปลง Excel แผ่นกระจายเป็นไฟล์ DRL แล้วรันกฎ.

ฉันจะอธิบายขั้นตอนที่สอง (ข).







** เรียน java หลักคือ 'DroolExcelDemo.java'. ก่อนจะแปลงเป็น excel แผ่น (.DRL) ยื่นแล้วรันกฎ.




package DROOLS;

java.io.BufferedWriter นำเข้า;
นำเข้า java.io.FileInputStream;
java.io.FileNotFoundException นำเข้า;
java.io.FileWriter นำเข้า;
java.io.IOException นำเข้า;
นำเข้า java.io.InputStream;
java.util.Collection นำเข้า;

org.drools.KnowledgeBase นำเข้า;
org.drools.KnowledgeBaseFactory นำเข้า;
org.drools.builder.KnowledgeBuilder นำเข้า;
org.drools.builder.KnowledgeBuilderFactory นำเข้า;
นำเข้า org.drools.builder.ResourceType;
org.drools.decisiontable.InputType นำเข้า;
org.drools.decisiontable.SpreadsheetCompiler นำเข้า;
นำเข้า org.drools.definition.KnowledgePackage;
org.drools.event.rule.DebugAgendaEventListener นำเข้า;
org.drools.event.rule.DebugWorkingMemoryEventListener นำเข้า;
org.drools.io.ResourceFactory นำเข้า;
org.drools.runtime.StatefulKnowledgeSession นำเข้า;

/**
* ชั้นนี้จะสร้างไฟล์ DRL จาก excel แผ่น
* แล้วรันกฎ.
*/
ประชาชน DroolExcelDemo ชั้น {
ประชาชนเป็นโมฆะคงหลักสุดท้าย(สุดท้าย String[] args) {
// สร้างความรู้สร้าง
สุดท้าย KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// สร้างไฟล์ DRL จาก excel แผ่น
InputStream คือ = null;
ดู {
= new FileInputStream เป็น(“D:/พื้นที่ทำงาน / DroolsDemo / src / Drools / DroolExcel.xls”);

} จับ (e FileNotFoundException) {
e.printStackTrace();
}
// สร้างตัวอย่างคลาสคอมไพเลอร์
SpreadsheetCompiler sc = SpreadsheetCompiler ใหม่();

// รวบรวม Excel เพื่อสร้าง (.DRL) ไฟล์
StringBuffer DRL = StringBuffer ใหม่(sc.compile(เป็น, InputType.XLS));

// แทรกค่าลงในไฟล์ภาษา DRL
drl.insert(drl.indexOf(“Drools”)+40,”ภาษา ” mvel””+”\n”);

// ให้ตรวจสอบไฟล์ที่สร้าง DRL
System.out.println(“ไฟล์สร้าง DRL มีการแสดงด้านล่าง–: “);
System.out.println(DRL);

// เขียนสตริงเป็นไฟล์ DRL
ดู {
BufferedWriter ออก BufferedWriter ใหม่ =(FileWriter ใหม่(“D:/พื้นที่ทำงาน / DroolsDemo / src / Drools / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
จับ (e IOException){
System.out.println(“ข้อยกเว้น “);
}
// รอก่อนที่จะใช้ไฟล์ DRL ในส่วนถัดไป.
ดู {
Thread.sleep(10000);
} จับ (e InterruptedException) {
e.printStackTrace();
}
// สร้างจุดสิ้นสุดของแฟ้ม DRL จาก excel แผ่น

// การใช้ไฟล์ DRL
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// ตรวจสอบหาข้อผิดพลาดสร้าง
ถ้า ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder มีข้อผิดพลาด”);
System.out.println( kbuilder.getErrors().toString());
}
// รับแพคเกจที่รวบรวม (ซึ่งเป็น serializable)
คอลเลกชัน PKGS สุดท้าย kbuilder.getKnowledgePackages =();

// เพิ่มแพ็กเกจเพื่อความรู้ (ปรับใช้แพคเกจความรู้).
สุดท้ายความรู้ KBase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(PKGS);

// สร้างเซสชั่น stateful
ksession StatefulKnowledgeSession สุดท้าย kbase.newStatefulKnowledgeSession =();

// ตั้งฟังเหตุการณ์
ksession.addEventListener(DebugAgendaEventListener ใหม่());
ksession.addEventListener(DebugWorkingMemoryEventListener ใหม่());

// สร้างข้อความ
DroolMessage messagetxt = DroolMessage ใหม่();
messagetxt.setMessage(“เที่ยวบินหมายเลข”);

DroolMessage messagetxt1 = DroolMessage ใหม่();
messagetxt1.setMessage(“FlightCode”);

// แทรกเข้าไปในเซสชั่นกฎและไฟ
System.out.println(“แทรกเข้าไปในเซสชั่น”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“ก่อนที่จะยิงกฎ”);
ksession.fireAllRules();
System.out.println(“หลังจากยิงกฎ”);
ksession.dispose();
System.out.println(“หลังจากทิ้ง”);
}
}








* *ไฟล์ที่สองคือ 'DroolMessage.java’ ชั้น pojo. มันเก็บค่าที่กำหนดโดยระดับ java หลักที่อธิบายข้างต้น.

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;

// ผู้ก่อสร้าง
DroolMessage ประชาชน() {
System.out.println(“เริ่มต้นข้อความ”);
}
// วิธีการ setter และ getter
ประชาชน GetMessage String() {
กลับข้อความ;
}
โมฆะสาธารณะ setMessage(ข้อความ String) {
ข้อความ this.message =;
}
// วิธีการทดสอบเพื่อทดสอบการดำเนินการตามกฎ
การทดสอบโมฆะสาธารณะ(การทดสอบสตริง) {
System.out.println(“เริ่มต้นการแยกและตำแหน่งสิ้นสุด: “+ทดสอบ);
}
}

** ต่อไปนี้เป็นไฟล์กฎที่สร้างขึ้นโดย 'DroolExcelDemo.java’ ชั้น.

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

// ค่ากฎที่ B13, ส่วนหัวที่ B7
กฎ “DroolExcelRule_13”
เมื่อ
msg:DroolMessage(ข้อความ == “FlightCode”)
แล้วก็
msg.test(“7,8”);
ปลาย

** ต่อไปนี้เป็นข้อมูลแฟ้ม Excel กฎที่ใช้ในการ 'DroolExcelDemo.java’ ชั้นบน.


15 thoughts on “วิธีการใช้ตารางการตัดสินใจในรูปแบบ Drools สเปรดชีตเพื่อดำเนินการกฎ?

    1. kaushik Post author

      Hi Daniel,

      Thanks for your interest. Please let me know your exact requirement. I will send you the excel sheet.

      Cheers
      /KP

    1. kaushik Post author

      Hi Aakash,

      Please send me your exact requirement. I will try my best to help you out.

      Thanks,
      Techalpine

  1. Manideepa

    Hi,
    Can you please share the DroolExcel.xls file?
    I wanted to execute this program. I am new to Drools and wanted to understand how it works.
    My email address: b4umani2003@gmail.com

    Thanks,
    Mani

  2. kaushik Post author

    Hi Manideepa,

    The excel sample is already shown in the post. You can use it as it is. If you have some other requirement, do let me know. I would love to help you sort the issues.

    Thanks
    /KP

  3. Nithya Kathiresan

    Hi,
    คุณรู้วิธีการใช้แผ่นกระจาย APIs โดยตรงในการดำเนินการกฎ?

    Thanks,
    Nithya

  4. Deepak

    คุณสามารถส่งไฟล์ Excel ,ฉันต้องการที่จะทำงานและได้รับผล ..??

  5. sunil

    คุณจะกรุณ​​าให้เป็นตัวอย่างที่ DRL ที่ฉันจะได้รับข้อมูลจากฐานข้อมูลและการปรับปรุงความเป็นจริง .

    1. kaushik Post author

      สวัสดีนิล,

      คุณสามารถใช้โปรแกรมเช่นเดียวกันกับการปรับเปลี่ยนเล็ก ๆ น้อย ๆ.

      กรุณาติดต่อฉัน @ techalpineit@gmail.com สำหรับความช่วยเหลือเพิ่มเติม.

      Thanks
      /KP

  6. อนัญญา

    Hi,

    คุณจะกรุณ​​าแบ่งปันโปรแกรม Excel ? ฉันต้องการเพื่อให้ตรงกับสตริงของตัวเลขหรือมากกว่าค้นหาสตริงในสตริงอื่น

    Thanks

    1. kaushik Post author

      สวัสดีอนัญญา,

      คุณสามารถใช้ข้อมูลเดียวกันตามที่ปรากฏในไฟล์ตัวอย่างและให้หนึ่งสำหรับตัวเอง.

      กรุณาส่งอีเมลฉัน @ techalpineit@gmail.com สำหรับความช่วยเหลือเพิ่มเติม.

      Thanks
      /KP

  7. Shekhar ชอว์

    สวัสดี,
    ในขณะที่ฉันพยายามที่จะดำเนินการ, มันจะเพิ่มข้อผิดพลาดไม่พบไฟล์ในขณะที่การประมวลผลที่ต่ำกว่าเส้น.

    // การใช้ไฟล์ DRL
    kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );

    คุณจะกรุณ​​าแนะนำอะไรที่ฉันต้องทำ.

    ขอแสดงความนับถือ,
    Shekhar ชอว์

    1. kaushik Post author

      สวัสดี Shekhar,

      คุณต้องให้แน่ใจว่าทั้ง .drl และไฟล์ .class ที่มีอยู่. กรุณาตรวจสอบและแจ้งให้เราทราบหากคุณประสบปัญหาใด ๆ.

      กรุณาส่งอีเมลฉัน @ techalpineit@gmail.com

      Thanks
      Kaushik

  8. ราหุล Pandey

    สวัสดี
    มันเป็นอย่างบล็อกที่ดีผมดำเนินการ. แต่ผมต้องการสร้างแฟ้มแม่แบบกฎโดยอัตโนมัติโดยไม่ต้องเพิ่มไฟล์กฎใด ๆ.

============================================= ============================================== ซื้อหนังสือ techalpine ที่ดีที่สุดใน Amazon,en,ช่างไฟฟ้า CT Chestnutelectric,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share