Det følgende eksempel kode vil beskrive processen med at bruge beslutningstabel for at udføre rules.There er to måder
a) Brug regneark API'er direkte at udføre de regler.
b) Konverter Excel regneark ind i en DRL-fil og derefter udføre de regler.
Jeg vil beskrive den anden proces (b).
** Den vigtigste java klassen er 'DroolExcelDemo.java «. Først vil konvertere excel ark ind i en (.DRL) fil og derefter udføre de regler.
package DROOLS;
import java.io.BufferedWriter;
importere java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
importere java.io.InputStream;
import java.util.Collection;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
importere org.drools.builder.ResourceType;
import org.drools.decisiontable.InputType;
import org.drools.decisiontable.SpreadsheetCompiler;
importere org.drools.definition.KnowledgePackage;
import org.drools.event.rule.DebugAgendaEventListener;
import org.drools.event.rule.DebugWorkingMemoryEventListener;
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
/**
* Denne klasse vil skabe et DRL fil fra excel ark
* og derefter udføre de regler.
*/
public class DroolExcelDemo {
public static final void main(endelig String[] args) {
// Opret viden builder
endelig KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
// Opret DRL fil fra excel ark
InputStream er = null;
prøv {
er = ny FileInputStream(“D:/Arbejdsrum / DroolsDemo / src / drools / DroolExcel.xls”);
} fange (FileNotFoundException e) {
e.printStackTrace();
}
// Opret compiler klasse instans
SpreadsheetCompiler sc = new SpreadsheetCompiler();
// Udfyld excel til at generere (.DRL) fil
StringBuffer DRL = ny StringBuffer(sc.compile(er, InputType.XLS));
// Indsæt dialekt værdi i DRL-fil
drl.insert(drl.indexOf(“Drools”)+40,”dialekt ”mvel ””+”\n”);
// Kontrollér den genererede DRL fil
System.out.println(“Generere DRL fil vises nedenfor–: “);
System.out.println(DRL);
// skrivning streng til et DRL fil
prøv {
BufferedWriter ud = ny BufferedWriter(ny FileWriter(“D:/Arbejdsrum / DroolsDemo / src / drools / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
fange (IOException e){
System.out.println(“Undtagelse “);
}
// Vent, før du bruger DRL-filen i næste afsnit.
prøv {
Thread.sleep(10000);
} fange (InterruptedException e) {
e.printStackTrace();
}
// End oprettelsen af kørelys fil fra excel ark
// Brug DRL fil
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );
// Kontroller bygherre for fejl
hvis ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder har fejl”);
System.out.println( kbuilder.getErrors().toString());
}
// få de kompilerede pakker (som er serializable)
sidste indsamling pkgs = kbuilder.getKnowledgePackages();
// tilføj pakkerne til en vidensbase (implementere den viden pakker).
endelig KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);
// Opret stateful session
endelig StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
// Indstil begivenhed lyttere
ksession.addEventListener(ny DebugAgendaEventListener());
ksession.addEventListener(ny DebugWorkingMemoryEventListener());
// Opret besked tekst
DroolMessage messagetxt = ny DroolMessage();
messagetxt.setMessage(“Flynummer”);
DroolMessage messagetxt1 = ny DroolMessage();
messagetxt1.setMessage(“FlightCode”);
// Indsæt i session og ild regler
System.out.println(“indsætte i sessionen”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“før brænding regler”);
ksession.fireAllRules();
System.out.println(“efter brænding regler”);
ksession.dispose();
System.out.println(“efter disponere”);
}
}
* *Den anden fil er en 'DroolMessage.java’ Pojo klasse. Det holder de værdier, som de vigtigste java klassen er beskrevet ovenfor.
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;
// Builder
offentlig DroolMessage() {
System.out.println(“initialisering Message”);
}
// Setter og getter metoder
public String GetMessage() {
returmeddelelse;
}
public void setMessage(String besked) {
this.message = besked;
}
// testmetode til at teste regeludførelse
public void test(String test) {
System.out.println(“Parsing start-og slutposition: “+test);
}
}
** Følgende er en regel fil genereret af 'DroolExcelDemo.java’ klasse.
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
// regel værdier på B13, header på B7
regere “DroolExcelRule_13”
når
msg:DroolMessage(besked == “FlightCode”)
så
msg.test(“7,8”);
ende
** Nedenstående er et input Excel baseret regel fil til 'DroolExcelDemo.java’ klasse over.
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,
Kender du, hvordan du bruger regnearket API'er direkte at udføre reglerne?
Thanks,
Nithya
kan du venligst sende Excel-fil ,Jeg ønsker at køre og få resultatet ..??
Kan du give et DRL eksempel, hvor jeg kunne få data fra database og opdatere den kendsgerning .
Hi Sunil,
Du kan bruge det samme program med lidt modifikation.
Kontakt mig venligst @ techalpineit@gmail.com for yderligere hjælp.
Thanks
/KP
Hi,
Kunne du deler excel ? Jeg ønsker at matche en række tal eller rettere søge streng i anden streng
Thanks
Hej Ananya,
Du kan bruge de samme data som vist i prøven filen og gøre en til dig selv.
Venligst mail mig @ techalpineit@gmail.com for yderligere hjælp.
Thanks
/KP
Hej,
Mens jeg forsøger at udføre, det er at hæve en fil ikke fundet fejl under behandling under linje.
// Brug DRL fil
kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );
Kunne du foreslå, hvad jeg ellers skal gøre.
Hilsen,
Shekhar Shaw
Hej Shekhar,
Du er nødt til at sikre, at både .drl og .class filer kan. Tjek venligst og lad mig vide, hvis du står over for noget problem.
Venligst mail mig @ 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.