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.
Hi, could you send me DroolExcel.xls file?
thank you!
Hi Daniel,
Thanks for your interest. Please let me know your exact requirement. I will send you the excel sheet.
Cheers
/KP
Hi, could you send me DroolExcel.xls file? I just want to run this code and want to get result
my email
dahalram20@gmail.com
Hi Aakash,
Please send me your exact requirement. I will try my best to help you out.
Thanks,
Techalpine
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
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
Hi,
Apakah Anda tahu bagaimana menggunakan API spread sheet langsung untuk menjalankan aturan?
Thanks,
Nithya
dapat Anda kirimkan file excel ,saya ingin menjalankan dan mendapatkan hasil ..??
Bisa tolong memberikan contoh DRL di mana saya bisa mendapatkan data dari database dan memperbarui fakta .
Hi Sunil,
Anda dapat menggunakan program yang sama dengan sedikit modifikasi.
Tolong hubungi saya @ techalpineit@gmail.com untuk bantuan lebih lanjut.
Thanks
/KP
Hi,
Bisa tolong berbagi excel ? Saya ingin mencocokkan string nomor atau lebih tepatnya mencari string dalam string lain
Thanks
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
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
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
hi
it is very good blog i executed. but i want to generate Rule file template automatically without adding any Rule file.