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.
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,
Do you know how to use the spread sheet APIs directly to execute the rules?
Thanks,
Nithya
can you please send the excel file ,i want to run and get the result..??
Could you please provide a DRL example where I could get the data from Database and update the fact .
Hi Sunil,
You can use the same program with a little modification.
Please contact me @ techalpineit@gmail.com for further help.
Thanks
/KP
Hi,
Could you please share the excel ? I want to match a string of numbers or rather search string in another string
Thanks
Hi Ananya,
You can use the same data as shown in the sample file and make one for yourself.
Please mail me @ techalpineit@gmail.com for further help.
Thanks
/KP
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
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
hi
it is very good blog i executed. but i want to generate Rule file template automatically without adding any Rule file.