Šis piemērs kods aprakstīt procesu, izmantojot lēmumu tabulu izpildīt rules.There ir divi veidi
a) Izmantojiet izplatīties lapu API tieši izpildīt noteikumus.
b) Konvertēt Excel izplatīties lapu uz DRL failu un pēc tam izpildīt noteikumus.
Es aprakstīt otro procesu (b).
** Galvenais java klase ir "DroolExcelDemo.java". Vispirms tas konvertēt Excel loksni (.DRL) failu un pēc tam izpildīt noteikumus.
package DROOLS;
Importa java.io.BufferedWriter;
importēt java.io.FileInputStream;
Importa java.io.FileNotFoundException;
Importa java.io.FileWriter;
Importa java.io.IOException;
importēt java.io.InputStream;
Importa java.util.Collection;
Importa org.drools.KnowledgeBase;
Importa org.drools.KnowledgeBaseFactory;
Importa org.drools.builder.KnowledgeBuilder;
Importa org.drools.builder.KnowledgeBuilderFactory;
importēt org.drools.builder.ResourceType;
Importa org.drools.decisiontable.InputType;
Importa org.drools.decisiontable.SpreadsheetCompiler;
importēt org.drools.definition.KnowledgePackage;
Importa org.drools.event.rule.DebugAgendaEventListener;
Importa org.drools.event.rule.DebugWorkingMemoryEventListener;
Importa org.drools.io.ResourceFactory;
Importa org.drools.runtime.StatefulKnowledgeSession;
/**
* Šī klase radīs DRL failu no Excel lapā
* un tad izpildīt noteikumus.
*/
valsts klases DroolExcelDemo {
valsts statisko gala spēku galvenās(gala String[] args) {
// Izveidot zināšanu celtnieks
galīgā KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
// Izveidot DRL failu no Excel lapā
InputStream ir = null;
izmēģināt {
ir = jauns FileInputStream(“D:/Workspace / DroolsDemo / src / drools / DroolExcel.xls”);
} noķert (FileNotFoundException e) {
e.printStackTrace();
}
// Izveidot kompilators klases instanci
SpreadsheetCompiler sc = jauns SpreadsheetCompiler();
// Aizpildi Excel, lai radītu (.DRL) fails
StringBuffer DRL = jauns StringBuffer(sc.compile(ir, InputType.XLS));
// Ievietot dialektu vērtība no DRL failā
drl.insert(drl.indexOf(“Drools”)+40,”dialekts ”mvel ””+”\n”);
// Pārbaudiet radīto DRL failu
Println(“Izveidot DRL fails rāda tālāk–: “);
Println(DRL);
// rakstot string vērā DRL failā
izmēģināt {
BufferedWriter ārā = jauns BufferedWriter(Jaunais FileWriter(“D:/Workspace / DroolsDemo / src / drools / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
noķert (IOException e){
Println(“Izņēmums “);
}
// Jāgaida, pirms izmantojot DRL failu nākamajā nodaļā.
izmēģināt {
Thread.sleep(10000);
} noķert (InterruptedException e) {
e.printStackTrace();
}
// Beigas veidošana DRL failu no Excel lapā
// Izmantojot DRL failu
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );
// Pārbaudiet celtnieks par kļūdām
ja ( kbuilder.hasErrors() ) {
Println(“kbuilder ir kļūdas”);
Println( kbuilder.getErrors().toString());
}
// saņemt apkopoto paketes (kas ir Serializable)
pēdējās vākšanas PKGS = kbuilder.getKnowledgePackages();
// pievienotu paketes uz zināšanu bāzes (izvietot zināšanas paketes).
galīgā bibliotēka Kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(PKGS);
// Izveidot konekcijas stāvokļa parametriem bāzēts sesiju
galīgā StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
// Uzstādīt notikumu klausītājiem
ksession.addEventListener(Jaunais DebugAgendaEventListener());
ksession.addEventListener(Jaunais DebugWorkingMemoryEventListener());
// Izveidot ziņojuma tekstu
DroolMessage messagetxt = jauns DroolMessage();
messagetxt.setMessage(“Avioreisa numurs”);
DroolMessage messagetxt1 = jauns DroolMessage();
messagetxt1.setMessage(“FlightCode”);
// Ievietot sesija un uguns noteikumiem
Println(“ievietot sesijā”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
Println(“Pirms šaušanas noteikumus”);
ksession.fireAllRules();
Println(“pēc apdedzināšanas noteikumus”);
ksession.dispose();
Println(“Pēc atsavināt”);
}
}
* *Otrs fails ir "DroolMessage.java’ POJO klase. Tas pieder vērtībām, ko galvenā java klasi iepriekš.
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;
// Celtnieks
sabiedrisko DroolMessage() {
Println(“inicializēšana Message”);
}
// Noteicēju un vaislas metodes
valsts String getMessage() {
atgrieztos ziņu;
}
valsts spēkā setMessage(String ziņojums) {
this.message = ziņa;
}
// testēšanas metodes, lai pārbaudītu noteikumu izpildi
valsts spēkā tests(Stīgu tests) {
Println(“Parsēšana sākuma un beigu stāvoklis: “+pārbaude);
}
}
** Pēc ir noteikums fails, ko rada ar "DroolExcelDemo.java’ klase.
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
// noteikums vērtības pie B13, galvene pie B7
lemt “DroolExcelRule_13”
kad
msg:DroolMessage(ziņa == “FlightCode”)
tad
msg.test(“7,8”);
beigas
** Pēc ir ieejas excel balstīta noteikums failu ar "DroolExcelDemo.java’ klasē iepriekš.
Sveiki, jūs varētu sūtīt man DroolExcel.xls failu?
Paldies!
Hi Daniel,
Paldies par jūsu interesi. Lūdzu, ļaujiet man zināt jūsu precīzo prasībām. Es jums nosūtīsim Excel lapā.
Priekā
/KP
Sveiki, jūs varētu sūtīt man DroolExcel.xls failu? Es tikai gribu palaist šo kodu un vēlaties saņemt rezultātu
Mans e-pasts
dahalram20@gmail.com
Hi Aakash,
Lūdzu, atsūtiet man savu precīzas prasības. Es centīšos manos spēkos, lai palīdzētu jums out.
pateicība,
Techalpine
Sveiki,
Vai jūs, lūdzu, dalīties ar DroolExcel.xls failu?
Es gribēju, lai izpildītu šo programmu. Es esmu jauns, lai drools un vēlējās, lai saprastu, kā tas darbojas.
Mana e-pasta adrese: b4umani2003@gmail.com
pateicība,
Mani
Hi Manideepa,
Excel Paraugu jau redzams amatā. Jūs varat izmantot to kā tas ir. Ja jums ir kāda cita prasība, do let me know. Es mīlu, lai palīdzētu jums atrisināt jautājumus.
pateicība
/KP
Sveiki,
Vai jūs zināt, kā izmantot izplatīšanās lapa API tieši izpildīt noteikumus?
pateicība,
Nithya
Vai jūs, lūdzu sūtīt Excel failu ,Es gribu, lai palaistu un iegūtu rezultātu ..??
Vai jūs, lūdzu sniegt DRL piemēru, kur es varētu iegūt datus no datu bāzes un atjaunināt to, .
Hi Sunil,
Jūs varat izmantot to pašu programmu ar nelielu modifikāciju.
Lūdzu, sazinieties ar mani @ techalpineit@gmail.com tālākai palīdzību.
pateicība
/KP
Sveiki,
Vai jūs, lūdzu dalīties Excel ? Es gribu, lai atbilstu virkni skaitļu vai drīzāk meklēt virkni citā virknē
pateicība
ekskluzīvs,
Jūs varat izmantot tos pašus datus, kā parādīts parauga failu un padarīt viens pats.
Lūdzu pastu man @ techalpineit@gmail.com tālākai palīdzību.
pateicība
/KP
Sveiki,
Kamēr es cenšos izpildīt, tas ir paaugstināt failu nav atrasta kļūda, apstrādājot zem līnijas.
// Izmantojot DRL failu
kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );
Vai jūs, lūdzu, ieteikt, ko vēl man jādara.
Sveicieni,
Shekhar Shaw
Sveiki Shekhar,
Jums ir nepieciešams, lai nodrošinātu, ka gan .drl un .class faili ir pieejami. Lūdzu, pārbaudiet un ļaujiet man zināt, ja jūs sejas jebkuru problēmu.
Lūdzu pastu man @ techalpineit@gmail.com
pateicība
Kaushik
hi
it is very good blog i executed. but i want to generate Rule file template automatically without adding any Rule file.