Bagaimana untuk menggunakan drools jadual keputusan dalam format spreadsheet untuk melaksanakan peraturan?

Kod contoh berikut akan menerangkan proses menggunakan jadual keputusan untuk melaksanakan rules.There dua cara

satu) Gunakan API lembaran penyebaran secara langsung untuk melaksanakan peraturan.
b) Tukar lembaran excel penyebaran ke dalam fail drl dan kemudian melaksanakan peraturan.

Saya akan menerangkan proses kedua (b).







** Kelas java utama adalah 'DroolExcelDemo.java'. Pertama, ia akan menukar lembaran cemerlang ke (.drl) memfailkan dan kemudian melaksanakan peraturan.




package DROOLS;

java.io.BufferedWriter import;
mengimport java.io.FileInputStream;
java.io.FileNotFoundException import;
java.io.FileWriter import;
java.io.IOException import;
mengimport java.io.InputStream;
java.util.Collection import;

import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
mengimport org.drools.builder.ResourceType;
org.drools.decisiontable.InputType import;
import org.drools.decisiontable.SpreadsheetCompiler;
mengimport org.drools.definition.KnowledgePackage;
org.drools.event.rule.DebugAgendaEventListener import;
org.drools.event.rule.DebugWorkingMemoryEventListener import;
import org.drools.io.ResourceFactory;
org.drools.runtime.StatefulKnowledgeSession import;

/**
* Kelas ini akan mewujudkan fail drl dari lembaran excel
* dan kemudian melaksanakan peraturan.
*/
awam kelas DroolExcelDemo {
akhir awam statik tidak sah utama(Rentetan akhir[] args) {
// Buat pembina pengetahuan
akhir KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Mencipta fail drl dari lembaran excel
InputStream adalah = null;
cuba {
= baru FileInputStream(“D:/Workspace / DroolsDemo / src / DROOLS / DroolExcel.xls”);

} menangkap (FileNotFoundException e) {
e.printStackTrace();
}
// Buat pengkompil contoh kelas
SpreadsheetCompiler sc = baru SpreadsheetCompiler();

// Menyusun cemerlang untuk menjana (.drl) file
StringBuffer drl = baru StringBuffer(sc.compile(adalah, InputType.XLS));

// Masukkan nilai dialek ke dalam fail drl
drl.insert(drl.indexOf(“DROOLS”)+40,”dialek ”mvel ””+”\n”);

// Semak fail drl dijana
System.out.println(“Menjana fail drl menunjukkan di bawah–: “);
System.out.println(drl);

// menulis rentetan ke dalam fail drl
cuba {
BufferedWriter keluar = BufferedWriter baru(FileWriter baru(“D:/Workspace / DroolsDemo / src / DROOLS / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
menangkap (IOException e){
System.out.println(“Pengecualian “);
}
// Tunggu sebelum menggunakan fail drl dalam seksyen seterusnya.
cuba {
Thread.sleep(10000);
} menangkap (InterruptedException e) {
e.printStackTrace();
}
// Akhir penciptaan fail drl dari lembaran excel

// Menggunakan fail drl
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Semak pembina untuk kesilapan
jika ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder mempunyai kesilapan”);
System.out.println( kbuilder.getErrors().toString());
}
// mendapatkan pakej disusun (yang serializable)
bungkus Koleksi akhir = kbuilder.getKnowledgePackages();

// menambah pakej kepada pengetahuan (menggunakan pakej pengetahuan).
akhir Knowledgebase KBase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(bungkus);

// Buat sesi stateful
ksession StatefulKnowledgeSession akhir = kbase.newStatefulKnowledgeSession();

// Tetapkan pendengar acara
ksession.addEventListener(DebugAgendaEventListener baru());
ksession.addEventListener(DebugWorkingMemoryEventListener baru());

// Membuat mesej teks
DroolMessage messagetxt = baru DroolMessage();
messagetxt.setMessage(“Bilangan Penerbangan”);

DroolMessage messagetxt1 = baru DroolMessage();
messagetxt1.setMessage(“FlightCode”);

// Masukkan ke dalam sesi dan kebakaran peraturan
System.out.println(“masukkan ke dalam sesi”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“sebelum menembak peraturan”);
ksession.fireAllRules();
System.out.println(“selepas tembakan peraturan”);
ksession.dispose();
System.out.println(“selepas melupuskan”);
}
}








* *Fail kedua adalah DroolMessage.java '’ pojo kelas. Ia memegang nilai-nilai yang ditetapkan oleh kelas java utama yang dihuraikan di atas.

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
awam DroolMessage() {
System.out.println(“Memulakan Mesej”);
}
// Setter dan kaedah terbanyak
awam String getMessage() {
kembali mesej;
}
awam tidak sah setMessage(Mesej String) {
this.message = mesej;
}
// kaedah ujian untuk menguji pelaksanaan peraturan
terbatal ujian awam(Ujian String) {
System.out.println(“Permulaan Parsing dan kedudukan akhir: “+ujian);
}
}

** Berikut adalah fail peraturan yang dijana oleh DroolExcelDemo.java '’ kelas.

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

// nilai pemerintahan di B13, header pada B7
memerintah “DroolExcelRule_13”
apabila
msg:DroolMessage(mesej == “FlightCode”)
kemudian
msg.test(“7,8”);
akhir

** Berikut adalah input cemerlang fail pemerintahan berasaskan kepada DroolExcelDemo.java '’ kelas atas.


15 thoughts on “Bagaimana untuk menggunakan drools jadual keputusan dalam format spreadsheet untuk melaksanakan peraturan?

    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,
    Do you know how to use the spread sheet APIs directly to execute the rules?

    Thanks,
    Nithya

  4. sunil

    Could you please provide a DRL example where I could get the data from Database and update the fact .

  5. Ananya

    Hi,

    Could you please share the excel ? I want to match a string of numbers or rather search string in another string

    Thanks

  6. Shekhar Shaw

    Hello,
    Walaupun saya cuba untuk melaksanakan, ia menaikkan fail tidak dijumpai ralat semasa memproses di bawah garis.

    // Menggunakan fail drl
    kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );

    Bolehkah anda cadangkan apa lagi yang perlu saya lakukan.

    Regards,
    Shekhar Shaw

    1. kaushik Post author

      Hello Shekhar,

      Anda perlu memastikan bahawa kedua-dua .drl dan fail .class disediakan. Sila semak dan beritahu saya jika anda menghadapi sebarang masalah.

      Please mail me @ techalpineit@gmail.com

      Thanks
      Kaushik

  7. Rahul Pandey

    hi
    it is very good blog i executed. but i want to generate Rule file template automatically without adding any Rule file.

============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share