Následující příklad kódu bude popisovat proces pomocí rozhodnutí tabulky provést rules.There jsou dva způsoby
A) Použijte šíření list API přímo vykonat pravidla.
b) Převést šíření Excel list do souboru DRL a spustit pravidla.
Budu popisovat druhý proces (b).
** Hlavní java třída je "DroolExcelDemo.java". Nejprve bude převést list aplikace Excel do (.drl) soubor a pak spustit pravidla.
package DROOLS;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import 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;
import org.drools.builder.ResourceType;
import org.drools.decisiontable.InputType;
import org.drools.decisiontable.SpreadsheetCompiler;
import 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;
/**
* Tato třída vytvoří soubor DRL z listu aplikace Excel
* a poté spustit pravidla.
*/
public class DroolExcelDemo {
public static final void main(final String[] args) {
// Vytvořit vědomostního navigátora
v konečném znění KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
// Vytvořte DRL soubor z listu aplikace Excel
InputStream je = null;
zkusit {
je = new FileInputStream(“D:/Pracovní plocha / DroolsDemo / src / slintá / DroolExcel.xls”);
} úlovek (FileNotFoundException e) {
e.printStackTrace();
}
// Vytvořte kompilátoru instanci třídy
SpreadsheetCompiler sc = new SpreadsheetCompiler();
// Kompilace aplikace Excel generovat (.drl) soubor
StringBuffer drl = new StringBuffer(sc.compile(je, InputType.XLS));
// Vložte dialekt hodnotu do souboru DRL
drl.insert(drl.indexOf(“Slintá”)+40,”dialekt ”MVEL ””+”\n”);
// Zkontrolujte vygenerovaný DRL soubor
System.out.println(“Generate DRL soubor je zobrazeno níže–: “);
System.out.println(drl);
// zápis řetězce do souboru DRL
zkusit {
BufferedWriter out = new BufferedWriter(nové FileWriter(“D:/Pracovní plocha / DroolsDemo / src / slintá / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
úlovek (IOException e){
System.out.println(“Výjimka “);
}
// Počkejte před použitím soubor DRL v další části.
zkusit {
Thread.sleep(10000);
} úlovek (InterruptedException e) {
e.printStackTrace();
}
// Konec vytvoření souboru DRL z listu aplikace Excel
// Použití DRL soubor
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );
// Zkontrolujte stavitel pro chyby
jestliže ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder obsahuje chyby”);
System.out.println( kbuilder.getErrors().toString());
}
// dostat kompilované balíčky (které jsou serializovatelný)
Konečné Kolekce PKGS = kbuilder.getKnowledgePackages();
// přidat balíčky do vědomostní (nasadit znalosti balíčky).
v konečném znění KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(PKGS);
// Vytvořit stavovou zasedání
v konečném znění StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
// Nastavit posluchačů událostí
ksession.addEventListener(Ladění novou agendu EventListener());
ksession.addEventListener(nové DebugWorkingMemoryEventListener());
// Vytvořte text zprávy
DroolMessage messagetxt = new DroolMessage();
messagetxt.setMessage(“Číslo letu”);
DroolMessage messagetxt1 = new DroolMessage();
messagetxt1.setMessage(“FlightCode”);
// Vložit do relace a požární předpisy
System.out.println(“vložit do zasedání”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“před vypálením pravidla”);
ksession.fireAllRules();
System.out.println(“po výpalu pravidla”);
ksession.dispose();
System.out.println(“Efektivní funkce”);
}
}
* *Druhý soubor je "DroolMessage.java’ POJO tříd. To platí hodnoty stanovené hlavní třídy java je popsáno výše.
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;
// Stavitel
veřejné DroolMessage() {
System.out.println(“inicializace zprávu”);
}
// Ohaře a kariérista metody
public String getMessage() {
návrat zprávu;
}
public void setMessage(String zpráva) {
this.message = zpráva;
}
// zkušební metoda k testování pravidel provádění
public void Test(String zkouška) {
System.out.println(“Rozebrat počáteční a konečné umístění: “+test);
}
}
** Dále je pravidlem soubor generovaný "DroolExcelDemo.java’ třída.
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
// pravidlo hodnoty na B13, záhlaví na B7
vládnout “DroolExcelRule_13”
při
msg:DroolMessage(Zpráva == “FlightCode”)
pak
msg.test(“7,8”);
konec
** Následuje vstup vynikají založené pravidlo soubor do "DroolExcelDemo.java’ třídu výše.
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.
Díky,
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
Díky,
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.
Díky
/KP
Hi,
Do you know how to use the spread sheet APIs directly to execute the rules?
Díky,
Nithya
can you please send the excel file ,i want to run and get the result..??
Could you please provide a DRL example where I could get the data from Database and update the fact .
Hi Sunil,
You can use the same program with a little modification.
Please contact me @ techalpineit@gmail.com for further help.
Díky
/KP
Hi,
Could you please share the excel ? I want to match a string of numbers or rather search string in another string
Díky
Hi Ananya,
You can use the same data as shown in the sample file and make one for yourself.
Please mail me @ techalpineit@gmail.com for further help.
Díky
/KP
Ahoj,
I když se snažím spustit, to je zvýšení soubor nebyl nalezen chybu při zpracování pod hranicí.
// Použití DRL soubor
kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );
Mohl byste mi prosím navrhnout co ještě musím udělat.
Pozdravy,
Shekhar Shaw
Dobrý den, Shekhar,
Musíte zajistit, že jak .drl a .class soubory jsou k dispozici. Zkontrolujte problém a dejte mi vědět, pokud budete čelit žádný problém.
Please mail me @ techalpineit@gmail.com
Díky
Kaushik
hi
it is very good blog i executed. but i want to generate Rule file template automatically without adding any Rule file.