Sljedeći primjer koda će opisati proces pomoću tablica odlučivanja izvršiti rules.There su dva načina
a) Koristite API list prenosi izravno izvršiti pravila.
b) Pretvoriti Excel list širenje u DRL datoteku, a zatim izvršiti pravila.
Ja ću opisati drugi proces (b).
** Glavni java klasa 'DroolExcelDemo.java'. Prvo će se pretvoriti u Excel list u (.DRL) podnijeti i tada izvršiti pravila.
package DROOLS;
uvoz java.io.BufferedWriter;
uvesti java.io.FileInputStream;
uvoz java.io.FileNotFoundException;
uvoz java.io.FileWriter;
uvoz java.io.IOException;
uvesti 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;
uvesti org.drools.builder.ResourceType;
uvoz org.drools.decisiontable.InputType;
uvoz org.drools.decisiontable.SpreadsheetCompiler;
uvesti 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;
/**
* Ova klasa će stvoriti DRL datoteku iz Excel list
* i tada izvršiti pravila.
*/
public class DroolExcelDemo {
public static void konačni glavni(Konačna Gudački[] args) {
// Stvaranje znanja graditelj
Konačna KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
// Stvaranje DRL datoteku iz Excel list
InputStream je = null;
pokušati {
je = new FileInputStream(“D:/Radni prostor / DroolsDemo / src / drools / DroolExcel.xls”);
} ulov (FileNotFoundException e) {
e.printStackTrace();
}
// Stvaranje instancu klase prevodilac
SpreadsheetCompiler sc = new SpreadsheetCompiler();
// Sastaviti Excel za generiranje (.DRL) file
StringBuffer DRL = new StringBuffer(sc.compile(je, InputType.XLS));
// Umetnite narječju vrijednost u DRL datoteku
drl.insert(drl.indexOf(“Drools”)+40,”dijalekt ”mvel ””+”\n”);
// Provjerite generirani DRL datoteku
System.out.println(“Generate DRL datoteka prikazuje u nastavku–: “);
System.out.println(DRL);
// pisanje niz u DRL datoteku
pokušati {
BufferedWriter iz = new BufferedWriter(Novi FileWriter(“D:/Radni prostor / DroolsDemo / src / drools / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
ulov (IOException e){
System.out.println(“Izuzetak “);
}
// Pričekajte prije korištenja DRL datoteku u sljedećem poglavlju.
pokušati {
Thread.sleep(10000);
} ulov (InterruptedException e) {
e.printStackTrace();
}
// Kraj stvaranje DRL datoteke iz Excel list
// Korištenje DRL datoteku
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );
// Provjerite graditelj za pogreške
ako ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder ima pogrešaka”);
System.out.println( kbuilder.getErrors().toString());
}
// dobiti sastaviti paketa (koji su serializable)
Konačni Zbirka pkgs = kbuilder.getKnowledgePackages();
// dodati pakete na bazu znanja (implementirati pakete znanja).
Konačna Znanja kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);
// Stvaranje stateful sjednicu
Konačna StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
// Postavite događaja slušateljima
ksession.addEventListener(Debug novi EventListener rokovnika());
ksession.addEventListener(Novi DebugWorkingMemoryEventListener());
// Stvaranje tekst poruke
DroolMessage messagetxt = new DroolMessage();
messagetxt.setMessage(“Broj leta”);
DroolMessage messagetxt1 = new DroolMessage();
messagetxt1.setMessage(“FlightCode”);
// Uložite u session i vatra pravilima
System.out.println(“umetnuti u sjednici”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“prije pečenja pravila”);
ksession.fireAllRules();
System.out.println(“nakon pečenja pravila”);
ksession.dispose();
System.out.println(“nakon naručiti”);
}
}
* *Drugi je datoteka 'DroolMessage.java’ pojo razred. On drži se vrijednosti postavljene na glavnoj java klasi je gore opisano.
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
javni DroolMessage() {
System.out.println(“inicijalizacije poruku”);
}
// Setera i dobavljač metode
public String getMessage() {
povratak poruku;
}
public void setMessage(String poruka) {
this.message = poruka;
}
// test metoda za testiranje pravila izvršenje
public void Test(Gudački Test) {
System.out.println(“Raščlanjivanje početak i kraj poziciju: “+test);
}
}
** Slijedi pravilo datoteku generira '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
// pravilo vrijednosti na B13, zaglavlja na B7
vladati “DroolExcelRule_13”
kada
msg:DroolMessage(Poruka == “FlightCode”)
zatim
msg.test(“7,8”);
kraj
** Slijedi ulaz excel temelji pravilo datoteku 'DroolExcelDemo.java’ klasa iznad.
bok, može li mi poslati DroolExcel.xls datoteku?
hvala!
Pozdrav Daniel,
Hvala na Vašem interesu. Molimo vas javite mi vaš točan zahtjev. Ja ću vam poslati Excel list.
Živjeli
/KP
bok, može li mi poslati DroolExcel.xls datoteku? Samo želim pokrenuti ovaj kod i želite da biste dobili rezultat
moj e-mail
dahalram20@gmail.com
Pozdrav Aakash,
Molimo vas pošaljite mi svoj točan zahtjev. Ja ću probati moj najbolji da vam pomogne.
Hvala,
Techalpine
bok,
Možete li molim vas dijeli DroolExcel.xls datoteku?
Htio sam da izvrši ovaj program. Ja sam novi u drools i htjeli shvatiti kako se to radi.
Moja e-mail adresa: b4umani2003@gmail.com
Hvala,
Mani
Pozdrav Manideepa,
Excel Uzorak je već prikazano na post. Možete ga koristiti kao što je to. Ako imate neki drugi uvjet, nemojte pustiti mene znati. Volio bih vam pomoći sortirati pitanja.
Hvala
/KP
bok,
Znate li kako koristiti API se prostirati izravno izvršavanje pravila?
Hvala,
Nithya
Možete li molimo vas pošaljite Excel datoteci ,Želim pokrenuti i dobiti rezultat ..??
Možete li molim vas dati DRL primjer gdje sam mogao dobiti podatke iz baze podataka i ažuriranje činjenicu .
Pozdrav Sunil,
Možete koristiti isti program uz malo modifikacije.
Molimo vas da me kontaktirate @ techalpineit@gmail.com za daljnju pomoć.
Hvala
/KP
bok,
Molim Vas da podijelite Excel ? Želim da odgovaraju niz brojeva, odnosno traženje string u drugom nizu
Hvala
Pozdrav Ananya,
Možete koristiti iste podatke kao što je prikazano u uzorku datoteku i napraviti jedan za sebe.
Molimo mail me @ techalpineit@gmail.com za daljnju pomoć.
Hvala
/KP
bok,
While I am trying to execute, it is raising a file not found error while processing below line.
// Korištenje DRL datoteku
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.
Molimo mail me @ techalpineit@gmail.com
Hvala
Kaushik
hi
it is very good blog i executed. but i want to generate Rule file template automatically without adding any Rule file.