Järgmises näites koodi kirjeldab protsessi kasutades otsuse tabelis täita rules.There on kaks võimalust
a) Kasutage arvutlustabel APIs otse täita eeskirju.
b) Convert Exceli tabelarvutus arvesse DRL faili ja seejärel täita eeskirju.
Ma kirjeldada teise protsessi (b).
** Peamine java klass on "DroolExcelDemo.java". Esiteks see teisendada Exceli paberileht (.DRL) Fail ja seejärel täita eeskirju.
package DROOLS;
impordi java.io.BufferedWriter;
impordi java.io.FileInputStream;
impordi java.io.FileNotFoundException;
impordi java.io.FileWriter;
impordi java.io.IOException;
importida java.io.InputStream;
impordi java.util.Collection;
impordi org.drools.KnowledgeBase;
impordi org.drools.KnowledgeBaseFactory;
impordi org.drools.builder.KnowledgeBuilder;
impordi org.drools.builder.KnowledgeBuilderFactory;
importida org.drools.builder.ResourceType;
impordi org.drools.decisiontable.InputType;
impordi org.drools.decisiontable.SpreadsheetCompiler;
importida org.drools.definition.KnowledgePackage;
impordi org.drools.event.rule.DebugAgendaEventListener;
impordi org.drools.event.rule.DebugWorkingMemoryEventListener;
impordi org.drools.io.ResourceFactory;
impordi org.drools.runtime.StatefulKnowledgeSession;
/**
* Sellesse klassi loob DRL faili Exceli tabel
* ja seejärel täita eeskirju.
*/
avalik klassi DroolExcelDemo {
avaliku staatilise lõplik void main(lõplik String[] args) {
// Loo teadmised ehitaja
lõplik KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
// Loo DRL faili Exceli tabel
InputStream on = null;
püüdma {
on = uus FileInputStream(“D:/Workspace / DroolsDemo / src / DROOLS / DroolExcel.xls”);
} saak (FileNotFoundException e) {
e.printStackTrace();
}
// Loo kompilaator klassi astmes
SpreadsheetCompiler ks = uus SpreadsheetCompiler();
// Koostada Exceli luua (.DRL) fail
StringBuffer DRL = uus StringBuffer(sc.compile(on, InputType.XLS));
// Sisesta murre väärtuse DRL fail
drl.insert(drl.indexOf(“DROOLS”)+40,”murre ”mvel ””+”\n”);
// Kontrollige loodud DRL fail
System.out.println(“Loo DRL fail näitab allpool–: “);
System.out.println(DRL);
// kirjalikult string DRL fail
püüdma {
BufferedWriter välja = new BufferedWriter(uus FileWriter(“D:/Workspace / DroolsDemo / src / DROOLS / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
saak (IOException e){
System.out.println(“Erand “);
}
// Oota enne kasutamise DRL faili järgmises osas.
püüdma {
Thread.sleep(10000);
} saak (InterruptedException e) {
e.printStackTrace();
}
// End loomine DRL faili Exceli tabel
// Kasutades DRL fail
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );
// Kontrollige ehitaja tehtud vigu
kui ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder on vead”);
System.out.println( kbuilder.getErrors().toString());
}
// saada koostatud pakette (mis on Serializable)
lõplik kogumine PKGS = kbuilder.getKnowledgePackages();
// lisada pakette knowledgebase (kasutada teadmisi paketid).
lõplik Teabebaas kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(PKGS);
// Loo olekuteadliku istungil
lõplik StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
// Määra juhul kuulajat
ksession.addEventListener(uus DebugAgendaEventListener());
ksession.addEventListener(uus DebugWorkingMemoryEventListener());
// Loo sõnum tekstiga
DroolMessage messagetxt = uus DroolMessage();
messagetxt.setMessage(“Lennu number”);
DroolMessage messagetxt1 = uus DroolMessage();
messagetxt1.setMessage(“FlightCode”);
// INSERT INTO istungil ja tulekahju reeglid
System.out.println(“lisada istung”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“enne lõpetamise eeskirjadel”);
ksession.fireAllRules();
System.out.println(“pärast võtet reeglid”);
ksession.dispose();
System.out.println(“pärast võõrandada”);
}
}
* *Teine fail on "DroolMessage.java’ POJO klass. See mahutab väärtustele, mille peamised java klass eespool kirjeldatud.
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;
// Ehitaja
avaliku DroolMessage() {
System.out.println(“initsialiseerimisel Sõnum”);
}
// Setter ja Getter meetodeid
avaliku String getMessage() {
tagasi sõnum;
}
public void setMessage(String sõnum) {
this.message = sõnum;
}
// katsemeetodit testida reegel täitmine
public void test(String test) {
System.out.println(“Parsimine alguse ja lõpu asend: “+test);
}
}
** Pärast on reeglina faili loodud "DroolExcelDemo.java’ klass.
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
// reegel väärtused B13, header kell B7
välistada “DroolExcelRule_13”
kui
msg:DroolMessage(sõnum == “FlightCode”)
siis
msg.test(“7,8”);
lõpp
** Pärast on sisend paista tulenev norm fail "DroolExcelDemo.java’ klass eespool.
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
Tere,
While I am trying to execute, it is raising a file not found error while processing below line.
// Kasutades 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.