Codul de exemplu următor se va descrie procesul de utilizare a tabelului decizia de a executa rules.There sunt două moduri
o) Utilizați API-urile foaie de calcul în mod direct pentru a executa normele.
b) Conversia foaie de calcul Excel într-un fișier și apoi executați NRD normele.
Voi descrie al doilea proces (b).
** Principalul clasa Java este "DroolExcelDemo.java". În primul rând se va transforma într-o foaie Excel (.DRL) fișier și apoi executa normele.
package DROOLS;
de import java.io.BufferedWriter;
import java.io.FileInputStream;
de import java.io.FileNotFoundException;
de import java.io.FileWriter;
de import java.io.IOException;
import java.io.InputStream;
de import java.util.Collection;
de import org.drools.KnowledgeBase;
de import org.drools.KnowledgeBaseFactory;
de import org.drools.builder.KnowledgeBuilder;
de import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
de import org.drools.decisiontable.InputType;
de import org.drools.decisiontable.SpreadsheetCompiler;
import org.drools.definition.KnowledgePackage;
de import org.drools.event.rule.DebugAgendaEventListener;
de import org.drools.event.rule.DebugWorkingMemoryEventListener;
de import org.drools.io.ResourceFactory;
de import org.drools.runtime.StatefulKnowledgeSession;
/**
* Această clasă va crea un fișier NRD din foi Excel
* și apoi executați normele.
*/
public class DroolExcelDemo {
public static void principal de finală(String finală[] args) {
// Creați constructor de cunoștințe
finală KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
// Creați DRL fișier din foi excel
InputStream is = nul;
încerca {
este = new FileInputStream(“D:/Spațiul de lucru / DroolsDemo / src / Drools / DroolExcel.xls”);
} prinde (FileNotFoundException e) {
e.printStackTrace();
}
// Creați clasa exemplu, compilatorul
SpreadsheetCompiler sc = new SpreadsheetCompiler();
// Compilați Excel pentru a genera (.DRL) fișier
StringBuffer = new StringBuffer DRL(sc.compile(este, InputType.XLS));
// Introduceți valoarea dialectul în fișier DRL
drl.insert(drl.indexOf(“Drools”)+40,”dialectul ”mvel ””+”\n”);
// Verificați fișierul generat DRL
Println(“Generare fișier DRL este afișat mai jos–: “);
Println(DRL);
// scris șir într-un fișier NRD
încerca {
BufferedWriter out = new BufferedWriter(Noul filewriter(“D:/Spațiul de lucru / DroolsDemo / src / Drools / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
prinde (IOException e){
Println(“Excepție “);
}
// Așteptați înainte de a utiliza fișierul DRL în secțiunea următoare.
încerca {
Thread.Sleep(10000);
} prinde (InterruptedException e) {
e.printStackTrace();
}
// Crearea sfârșitul de fișier DRL din foi Excel
// Utilizarea DRL fișier
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );
// Verificați constructor pentru erori
dacă ( kbuilder.hasErrors() ) {
Println(“kbuilder are erori”);
Println( kbuilder.getErrors().toString());
}
// primi pachete compilate (care sunt serializabile)
PKGS finale de colectare = kbuilder.getKnowledgePackages();
// adăuga pachete pentru o baza de cunostinte (mobilizare pachetele de cunoștințe).
KnowledgeBase finală kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(PKGS);
// Creați sesiune dinamică
ksession StatefulKnowledgeSession finală = kbase.newStatefulKnowledgeSession();
// Set ascultători de evenimente
ksession.addEventListener(Noul DebugAgendaEventListener());
ksession.addEventListener(Noul DebugWorkingMemoryEventListener());
// Creați mesaj text
DroolMessage messagetxt = new DroolMessage();
messagetxt.setMessage(“Număr zbor”);
DroolMessage messagetxt1 = new DroolMessage();
messagetxt1.setMessage(“FlightCode”);
// Introduceți în norme sesiune si foc
Println(“insera în sesiune”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
Println(“înainte de ardere normele”);
ksession.fireAllRules();
Println(“după ardere normele”);
ksession.dispose();
Println(“Caracteristici eficiente”);
}
}
* *Al doilea fișier este un DroolMessage.java "’ POJO clasa. Acesta detine valorile stabilite de către clasa principală java descris mai sus.
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;
// Constructor
publice DroolMessage() {
Println(“initializarea Mesaj”);
}
// Setter și getter metode
public String getMessage() {
a reveni mesaj;
}
public void setMessage(String mesaj) {
this.message = mesaj;
}
// Metoda de încercare pentru a testa executarea regula
public void încercare(Șir de testare) {
Println(“Parsarea de start și poziția sfârșitul: “+încercare);
}
}
** În urma este un fișier generat de regulă DroolExcelDemo.java "’ clasă.
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
// Valorile regulă la B13, antet de la B7
pronunța “DroolExcelRule_13”
când
msg:DroolMessage(Mesajul == “FlightCode”)
apoi
msg.test(“7,8”);
capăt
** În urma este de intrare de fișier Excel reguli bazate pe DroolExcelDemo.java "’ Clasa de mai sus.
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.
Mulțumiri,
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
Mulțumiri,
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.
Mulțumiri
/KP
Hi,
Știi cum să folosească API-uri răspândirea foaie în mod direct pentru a executa regulile?
Mulțumiri,
nithya
poate vă trimiteți fișierul Excel ,Vreau să ruleze și să obțină rezultatul ..??
Ați putea să vă rugăm să oferiți un exemplu NRD unde am putut obține datele din baza de date și să actualizeze faptul .
Bună Sunil,
Aveți posibilitatea să utilizați același program cu o mica modificare.
Te rog contacteaza-ma @ techalpineit@gmail.com pentru ajutor suplimentar.
Mulțumiri
/KP
Hi,
Ați putea să vă rugăm să partajați Excel ? Vreau să se potrivească un șir de numere sau de căutare șir într-un alt șir de caractere, mai degrabă
Mulțumiri
Bună Ananya,
Aveți posibilitatea să utilizați aceleași date așa cum se arată în fișierul de probă și de a face una pentru tine.
Vă rugăm să-mi mail @ techalpineit@gmail.com pentru ajutor suplimentar.
Mulțumiri
/KP
Hello,
În timp ce am încercat să execute, acesta este ridicarea unui fișier nu a fost găsit de eroare în timpul procesării de mai jos linia.
// Utilizarea DRL fișier
kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );
Ați putea să vă rugăm să sugereze ce altceva am nevoie să fac.
Regards,
Shekhar Shaw
Bună ziua Shekhar,
Aveți nevoie pentru a se asigura că atât fișierele .class .drl și sunt disponibile. Vă rugăm să verificați și să-mi spuneți dacă vă confruntați cu orice problemă.
Vă rugăm să-mi mail @ techalpineit@gmail.com
Mulțumiri
Kaushik
hi
it is very good blog i executed. but i want to generate Rule file template automatically without adding any Rule file.