Naslednja koda primer bo opisan postopek z odločbo tabelo za izvedbo rules.There dva načina
a) Uporabite API razpredelnice neposredno izvrševanje pravil.
b) Pretvarjanje list širjenja excel v datoteko DRL in nato izvajanje pravil.
Opisal bom postopek 2. (b).
** Glavni java razred "DroolExcelDemo.java". Najprej bo pretvoril v excel stanja (.drl) datoteko in nato izvajanje pravil.
package DROOLS;
Uvoz java.io.BufferedWriter;
uvoz java.io.FileInputStream;
Uvoz java.io.FileNotFoundException;
Uvoz java.io.FileWriter;
Uvoz java.io.IOException;
uvoz java.io.InputStream;
Uvoz java.util.Collection;
Uvoz org.drools.KnowledgeBase;
Uvoz org.drools.KnowledgeBaseFactory;
Uvoz org.drools.builder.KnowledgeBuilder;
Uvoz org.drools.builder.KnowledgeBuilderFactory;
uvoz org.drools.builder.ResourceType;
Uvoz org.drools.decisiontable.InputType;
Uvoz org.drools.decisiontable.SpreadsheetCompiler;
uvoz org.drools.definition.KnowledgePackage;
Uvoz org.drools.event.rule.DebugAgendaEventListener;
Uvoz org.drools.event.rule.DebugWorkingMemoryEventListener;
Uvoz org.drools.io.ResourceFactory;
Uvoz org.drools.runtime.StatefulKnowledgeSession;
/**
* Ta razred bo ustvarilo datoteko DRL iz excel stanja
* in nato izvajanje pravil.
*/
public class DroolExcelDemo {
javnih statičnih neveljaven glavna končna(končno String[] args) {
// Ustvarjanje znanja graditelja
Končno KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
// Ustvari DRL datoteko iz excel stanja
InputStream je = null;
poskusite {
= new FileInputStream je(“D:/Workspace / DroolsDemo / src / DROOLS / DroolExcel.xls”);
} ulova (FileNotFoundException e) {
e.printStackTrace();
}
// Ustvari primerek razreda prevajalnik
SpreadsheetCompiler sc = new SpreadsheetCompiler();
// Izpolni excel za ustvarjanje (.drl) datoteka
StringBuffer drl = new StringBuffer(sc.compile(je, InputType.XLS));
// Vstavite narečnega vrednost v datoteki DRL
drl.insert(drl.indexOf(“DROOLS”)+40,”narečje ”mvel ””+”\n”);
// Preverite ustvarjeno datoteko DRL
Println(“Ustvari DRL slika prikazuje spodnji–: “);
Println(drl);
// pisno niz v datoteki DRL
poskusite {
BufferedWriter ven = novi BufferedWriter(Nova FileWriter(“D:/Workspace / DroolsDemo / src / DROOLS / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
ulova (IOException e){
Println(“Izjema “);
}
// Počakajte, da se pred uporabo datoteke DRL v naslednjem poglavju.
poskusite {
Thread.sleep(10000);
} ulova (InterruptedException e) {
e.printStackTrace();
}
// Konec ustvarjanje datoteke DRL iz excel stanja
// Uporaba DRL datoteko
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );
// Preverite graditelja za napake
če ( kbuilder.hasErrors() ) {
Println(“kbuilder ima napake”);
Println( kbuilder.getErrors().toString());
}
// dobili zbral pakete (ki so Serializable)
Končni PKGS Zbiranje = kbuilder.getKnowledgePackages();
// dodajte paketov na Knowledgebase (uporabi znanja v pakete).
Končno Baza znanja kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(PKGS);
// Ustvari Stateful seje
Končno StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
// Nastavite dogodkov poslušalcev
ksession.addEventListener(Nova DebugAgendaEventListener());
ksession.addEventListener(Nova DebugWorkingMemoryEventListener());
// Ustvarjanje besedilo sporočila
DroolMessage messagetxt = novi DroolMessage();
messagetxt.setMessage(“Številka leta”);
DroolMessage messagetxt1 = novi DroolMessage();
messagetxt1.setMessage(“FlightCode”);
// Vstavite v pravilih seje in ogenj
Println(“vstavite zasedanju”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
Println(“pred odpuščanjem”);
ksession.fireAllRules();
Println(“Po odpuščanjem”);
ksession.dispose();
Println(“Po razpolaga”);
}
}
* *2. datoteka je "DroolMessage.java’ POJO razred. Ima vrednosti, ki jih glavni razred Java je opisano zgoraj.
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;
// Graditelj
javno DroolMessage() {
Println(“inicializacija sporočilo”);
}
// Podajalca in Človek, ki ustvarja metode
javni String getMessage() {
Povratno sporočilo;
}
public void setMessage(String sporočilo) {
this.message = sporočilo;
}
// Preskusna metoda za preskus pravilo izvajanja
public void Test(Niz preskus) {
Println(“Razčlenjevanju začetni in končni položaj: “+Test);
}
}
** V nadaljevanju je pravilo datoteko, ki jo "DroolExcelDemo.java’ Razred.
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
// pravne vrednosti pri B13, Glava na B7
izreči “DroolExcelRule_13”
ko
msg:DroolMessage(Sporočilo == “FlightCode”)
Nato
msg.test(“7,8”);
konec
** Sledi vnos temelji na pravno excel datoteko "DroolExcelDemo.java’ razred nad.
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,
Ali veste, kako uporabljati API širjenja stanja neposredno izvrševanje pravil?
Thanks,
Nithya
lahko prosim pošljete datoteko excel ,hočem teči in dobite rezultat ..??
Bi lahko prosim zagotovi DRL primer, kjer bi lahko dobili podatke iz zbirke podatkov in posodabljanje dejstvo, .
Zdravo Sunil,
Lahko uporabite isti program z malo spremembo.
Prosim, kontaktirajte me @ techalpineit@gmail.com za nadaljnjo pomoč.
Thanks
/KP
Hi,
Bi lahko prosim delijo excel ? Želim, da se ujemajo niz številk oziroma iskalni niz v drugem nizu
Thanks
Hi Ananya,
Lahko uporabite iste podatke, kot je prikazano v datoteki vzorca in narediti eno za sebe.
Prosim mail me @ techalpineit@gmail.com za nadaljnjo pomoč.
Thanks
/KP
Hello,
Medtem ko sem poskušal izvesti, je dvig datoteke ni bilo mogoče najti napake pri obdelavi pod pragom.
// Uporaba DRL datoteko
kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );
Bi lahko prosim predlagajte, kaj moram storiti.
Regards,
Shekhar Shaw
Pozdravljeni Shekhar,
Boste morali zagotoviti, da so tako .drl in .class datotek na voljo. Prosimo preverite in mi sporočite, če boste naleteli na kake težave.
Prosim 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.