Cara menggunakan tabel keputusan drools dalam format spreadsheet untuk mengeksekusi aturan?

Kode Contoh berikut akan menjelaskan proses menggunakan tabel keputusan untuk mengeksekusi dua cara rules.There

sebuah) Gunakan API spread sheet secara langsung untuk melaksanakan aturan.
b) Mengkonversi spread sheet excel ke file drl dan kemudian jalankan aturan.

Saya akan menjelaskan proses kedua (b).







** Kelas java utama adalah 'DroolExcelDemo.java'. Pertama akan mengkonversi excel sheet menjadi (.drl) mengajukan dan kemudian jalankan aturan.




package DROOLS;

impor java.io.BufferedWriter;
mengimpor java.io.FileInputStream;
impor java.io.FileNotFoundException;
impor java.io.FileWriter;
impor java.io.IOException;
mengimpor java.io.InputStream;
impor java.util.Collection;

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

/**
* Kelas ini akan menciptakan sebuah file drl dari excel sheet
* dan kemudian jalankan aturan.
*/
public class DroolExcelDemo {
public static void main akhir(akhir String[] args) {
// Buat pembangun pengetahuan
akhir KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Membuat file drl dari excel sheet
InputStream adalah = null;
coba {
adalah = FileInputStream baru(“D:/Workspace / DroolsDemo / src / drools / DroolExcel.xls”);

} menangkap (FileNotFoundException e) {
e.printStackTrace();
}
// Buat instance kelas compiler
SpreadsheetCompiler sc = new SpreadsheetCompiler();

// Mengkompilasi excel untuk menghasilkan (.drl) berkas
StringBuffer drl = new StringBuffer(sc.compile(adalah, InputType.XLS));

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

// Periksa file yang dihasilkan drl
System.out.println(“Hasilkan berkas DRL menunjukkan bawah–: “);
System.out.println(drl);

// menulis string ke file drl
coba {
BufferedWriter keluar = BufferedWriter baru(baru FileWriter(“D:/Workspace / DroolsDemo / src / drools / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
menangkap (IOException e){
System.out.println(“Pengecualian “);
}
// Tunggu sebelum menggunakan file drl pada bagian berikutnya.
coba {
Thread.sleep(10000);
} menangkap (InterruptedException e) {
e.printStackTrace();
}
// Akhir penciptaan file drl dari excel sheet

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

// Periksa pembangun untuk kesalahan
jika ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder memiliki kesalahan”);
System.out.println( kbuilder.getErrors().toString());
}
// mendapatkan paket dikompilasi (yang serializable)
pkgs Koleksi akhir = kbuilder.getKnowledgePackages();

// menambahkan paket ke pengetahuan (menyebarkan pengetahuan paket).
akhir KnowledgeBase KBase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

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

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

// Buat pesan teks
DroolMessage messagetxt = new DroolMessage();
messagetxt.setMessage(“Penerbangan Nomor”);

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

// Masukkan ke dalam aturan sesi dan api
System.out.println(“masukkan ke sesi”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“sebelum menembak aturan”);
ksession.fireAllRules();
System.out.println(“setelah menembakkan aturan”);
ksession.dispose();
System.out.println(“setelah buang”);
}
}








* *File kedua adalah 'DroolMessage.java’ pojo kelas. Ini memegang nilai-nilai yang ditetapkan oleh kelas java utama dijelaskan 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;

// Pembangun
masyarakat DroolMessage() {
System.out.println(“menginisialisasi Pesan”);
}
// Metode penyetel dan pengambil
public String getMessage() {
kembali pesan;
}
public void setMessage(String pesan) {
this.message = pesan;
}
// metode uji untuk menguji pelaksanaan aturan
public void uji(String uji) {
System.out.println(“Parsing awal dan posisi akhir: “+uji);
}
}

** Berikut adalah file aturan yang dihasilkan 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

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

** Berikut ini adalah input file yang unggul berbasis aturan untuk 'DroolExcelDemo.java’ kelas atas.


15 thoughts on “Cara menggunakan tabel keputusan drools dalam format spreadsheet untuk mengeksekusi aturan?

    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,
    Apakah Anda tahu bagaimana menggunakan API spread sheet langsung untuk menjalankan aturan?

    Thanks,
    Nithya

  4. sunil

    Bisa tolong memberikan contoh DRL di mana saya bisa mendapatkan data dari database dan memperbarui fakta .

  5. Ananya

    Hi,

    Bisa tolong berbagi excel ? Saya ingin mencocokkan string nomor atau lebih tepatnya mencari string dalam string lain

    Thanks

    1. kaushik Post author

      Hi Ananya,

      Anda dapat menggunakan data yang sama seperti yang ditunjukkan dalam sampel file dan membuat satu untuk diri sendiri.

      Silahkan mail saya @ techalpineit@gmail.com untuk bantuan lebih lanjut.

      Thanks
      /KP

  6. Shekhar Shaw

    Halo,
    Sementara Saya mencoba untuk mengeksekusi, itu adalah meningkatkan file tidak ditemukan kesalahan saat memproses bawah garis.

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

    Bisa tolong menyarankan apa lagi yang harus saya lakukan.

    Salam,
    Shekhar Shaw

    1. kaushik Post author

      Hello Shekhar,

      Anda perlu memastikan bahwa baik .drl dan file .class yang tersedia. Silakan cek dan beritahu saya jika Anda menghadapi masalah apapun.

      Silahkan mail saya @ 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