Toliau pateiktas pavyzdys kodas bus aprašyti naudojant sprendimų lentelę vykdyti rules.There Yra du būdai
a) Naudoti skaičiuoklę API tiesiogiai vykdyti taisykles.
b) Konvertuoti "Excel" skaičiuoklę į DRL failą ir tada vykdyti taisykles.
Aš aprašyti antrąjį procesą (b).
** Pagrindinis Java klasės yra "DroolExcelDemo.java". Pirmiausia ji bus konvertuoti Excel lakštą į (.DRL) failą ir tada vykdyti taisykles.
package DROOLS;
importo java.io.BufferedWriter;
importuoti java.io.FileInputStream;
importo java.io.FileNotFoundException;
importo java.io.FileWriter;
importo java.io.IOException;
importuoti java.io.InputStream;
importo java.util.Collection;
importo org.drools.KnowledgeBase;
importo org.drools.KnowledgeBaseFactory;
importo org.drools.builder.KnowledgeBuilder;
importo org.drools.builder.KnowledgeBuilderFactory;
importuoti org.drools.builder.ResourceType;
importo org.drools.decisiontable.InputType;
importo org.drools.decisiontable.SpreadsheetCompiler;
importuoti org.drools.definition.KnowledgePackage;
importo org.drools.event.rule.DebugAgendaEventListener;
importo org.drools.event.rule.DebugWorkingMemoryEventListener;
importo org.drools.io.ResourceFactory;
importo org.drools.runtime.StatefulKnowledgeSession;
/**
* Ši klasė sukurti DRL failą iš "Excel" lape
* ir atlikite taisykles.
*/
visuomenės klasė DroolExcelDemo {
public static galutinis negaliojančiu pagrindinis(galutinis Styginių[] args) {
// Sukurti Knowledge Builder
galutinis KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
// Sukurti DRL failą iš "Excel" lape
InputStream = null;
pabandyti {
= nauji FileInputStream(“D:/Workspace "/ DroolsDemo / src / drools / DroolExcel.xls”);
} sugauti (FileNotFoundException e) {
e.printStackTrace();
}
// Sukurti sudarytojas klasės egzempliorius
SpreadsheetCompiler sc = nauji SpreadsheetCompiler();
// Compile "Excel" kurti (.DRL) byla
StringBuffer DRL = nauji StringBuffer(sc.compile(yra, InputType.XLS));
// Įdėkite tarmės vertę į DRL failą
drl.insert(drl.indexOf(“Drools”)+40,”tarmė ”mvel ””+”\n”);
// Patikrinkite sukurtą DRL failą
System.out.println(“Generuoti DRL failas yra rodomas žemiau–: “);
System.out.println(DRL);
// raštu eilutę į DRL failą
pabandyti {
= Nauji BufferedWriter BufferedWriter iš(nauja FileWriter(“D:/Workspace "/ DroolsDemo / src / drools / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
sugauti (IOException e){
System.out.println(“Išimtis “);
}
// Palaukite, prieš naudojant DRL failą kitame skyriuje.
pabandyti {
Thread.sleep(10000);
} sugauti (InterruptedException e) {
e.printStackTrace();
}
// Pabaiga DRL failo kūrimas iš "Excel" lape
// Naudodami DRL failą
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );
// Patikrinkite, ar nėra klaidų statybininkas
jei ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder yra klaidų”);
System.out.println( kbuilder.getErrors().toString());
}
// gauti Sudarytame paketus (kurie yra serializable)
paskutinio rinkimo pkgs = kbuilder.getKnowledgePackages();
// pridėti paketus į bazėje (diegti žinių paketus).
galutinis biblioteka kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);
// Sukurti seanso
galutinis StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
// Nustatykite renginio klausytojus
ksession.addEventListener(nauja DebugAgendaEventListener());
ksession.addEventListener(nauja DebugWorkingMemoryEventListener());
// Naujas pranešimas tekstą
DroolMessage messagetxt = nauji DroolMessage();
messagetxt.setMessage(“Skrydžio numeris”);
DroolMessage messagetxt1 = nauji DroolMessage();
messagetxt1.setMessage(“FlightCode”);
// Įtraukti į sesijos ir gaisro taisykles
System.out.println(“įterpti į sesijos”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“iki atleidimo iš darbo taisykles”);
ksession.fireAllRules();
System.out.println(“po atleidimo iš darbo taisykles”);
ksession.dispose();
System.out.println(“po disponuoti”);
}
}
* *Antroji byla yra "DroolMessage.java’ POJO klasė. Turi vertes, nustatytas pagrindinio Java klasės aprašyta aukščiau.
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;
// Statybininkas
visuomenės DroolMessage() {
System.out.println(“Inicijuojama žinutę”);
}
// Seteris ir karjeristas metodai
visuomenės Styginių getMessage() {
grįžti pranešimą;
}
public void setMessage(Styginių pranešimą) {
this.message = Pranešimas;
}
// bandymo metodą išbandyti taisyklių vykdymą
public void testas(Styginių testas) {
System.out.println(“Nagrinėju pradžios ir pabaigos pozicija: “+testas);
}
}
** Taip yra taisyklė failas sukurtas "DroolExcelDemo.java’ klasė.
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
// viršenybės principais B13, antraštė ne B7
atmesti “DroolExcelRule_13”
kai
msg:DroolMessage(pranešimą == “FlightCode”)
tada
msg.test(“7,8”);
pabaiga
** Toliau įėjimo Excel paremtą taisyklių failą į "DroolExcelDemo.java’ klasė aukščiau.
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,
While I am trying to execute, it is raising a file not found error while processing below line.
// Naudodami DRL failą
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );
Could you please suggest what else I need to do.
Regards,
Shekhar Shaw
Hello Shekhar,
You need to ensure that both the .drl and .class files are available. Please check and let me know if you face any problem.
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.