Nasledujúci príklad kódu bude popisovať proces pomocou rozhodnutie tabuľky vykonať rules.There sú dva spôsoby
a) Použite šírenie list API priamo vykonať pravidlá.
b) Previesť šírenie Excel list do súboru DRL a spustiť pravidlá.
Budem popisovať druhý proces (b).
** Hlavné java trieda je "DroolExcelDemo.java". Najprv bude previesť hárok programu Excel do (.DRL) súbor a potom spustiť pravidlá.
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;
/**
* Táto trieda vytvorí súbor DRL z hárku programu Excel
* a potom spustiť pravidlá.
*/
public class DroolExcelDemo {
public static final void main(final String[] args) {
// Vytvoriť vedomostného navigátora
v konečnom znení KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
// Vytvorte DRL súbor z hárku programu Excel
InputStream je = null;
vyskúšať {
je = new FileInputStream(“D:/Pracovná plocha / DroolsDemo / src / slintá / DroolExcel.xls”);
} chytiť (FileNotFoundException e) {
e.printStackTrace();
}
// Vytvorte kompilátora inštanciu triedy
SpreadsheetCompiler sc = new SpreadsheetCompiler();
// Kompilácia programu Excel generovať (.DRL) súbor
StringBuffer DRL = new StringBuffer(sc.compile(je, InputType.XLS));
// Vložte dialekt hodnotu do súboru DRL
drl.insert(drl.indexOf(“Slintá”)+40,”dialekt ”mvel ””+”\n”);
// Skontrolujte vygenerovaný DRL súbor
System.out.println(“Generate DRL súbor je zobrazené nižšie–: “);
System.out.println(DRL);
// zápis reťazca do súboru DRL
vyskúšať {
BufferedWriter out = new BufferedWriter(nové FileWriter(“D:/Pracovná plocha / DroolsDemo / src / slintá / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
chytiť (IOException e){
System.out.println(“Výnimka “);
}
// Počkajte pred použitím súbor DRL v ďalšej časti.
vyskúšať {
Thread.sleep(10000);
} chytiť (InterruptedException e) {
e.printStackTrace();
}
// Koniec vytvorenie súboru DRL z hárku programu Excel
// Použitie DRL súbor
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );
// Skontrolujte staviteľ pre chyby
ak ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder obsahuje chyby”);
System.out.println( kbuilder.getErrors().toString());
}
// dostať kompilované balíčky (ktoré sú serializovatelný)
Konečné Kolekcia PKGS = kbuilder.getKnowledgePackages();
// pridať balíčky do vedomostnej (nasadiť znalosti balíčky).
v konečnom znení Knowledgebase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(PKGS);
// Vytvoriť stavovú zasadnutí
v konečnom znení StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
// Nastaviť poslucháčov udalostí
ksession.addEventListener(Ladenie novú agendu EventListener());
ksession.addEventListener(nové DebugWorkingMemoryEventListener());
// Vytvorte text správy
DroolMessage messagetxt = new DroolMessage();
messagetxt.setMessage(“Číslo letu”);
DroolMessage messagetxt1 = new DroolMessage();
messagetxt1.setMessage(“FlightCode”);
// Vložiť do relácie a požiarne predpisy
System.out.println(“vložiť do zasadnutia”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“pred vypálením pravidlá”);
ksession.fireAllRules();
System.out.println(“po výpale pravidlá”);
ksession.dispose();
System.out.println(“po objednať”);
}
}
* *Druhý súbor je "DroolMessage.java’ POJO tried. To platí hodnoty stanovené hlavné triedy java je popísané vyššie.
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;
// Staviteľ
verejné DroolMessage() {
System.out.println(“inicializácia správu”);
}
// Stavača a kariérista metódy
public String getMessage() {
návrat správu;
}
public void setMessage(String správa) {
this.message = správa;
}
// testovacia metóda na testovanie pravidiel vykonávania
public void Test(String skúška) {
System.out.println(“Rozobrať počiatočné a konečné umiestnenie: “+test);
}
}
** Ďalej je pravidlom súbor generovaný "DroolExcelDemo.java’ trieda.
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áhlavie na B7
vládnuť “DroolExcelRule_13”
keď
msg:DroolMessage(Správa == “FlightCode”)
potom
msg.test(“7,8”);
koniec
** Nasleduje vstup vynikajú založené pravidlo súbor do "DroolExcelDemo.java’ triedu vyššie.
ahoj, mohol by ste mi poslať súbor DroolExcel.xls?
Ďakujem!
hi Daniel,
Ďakujeme za váš záujem. Prosím, dajte mi vedieť váš presný požiadavku. Pošlem vám na liste Excelu.
na zdravie
/KP
ahoj, mohol by ste mi poslať súbor DroolExcel.xls? Len chcem spustiť tento kód a chcete získať výsledok
môj email
dahalram20@gmail.com
hi Aakash,
Prosím, pošlite mi vaše presné požiadavky. Budem sa snažiť čo najlepšie, aby vám pomohol von.
Vďaka,
Techalpine
ahoj,
Môžete mi prosím zdieľať súbor DroolExcel.xls?
Chcel som spustiť tento program. Som nový slintá a chcel pochopiť, ako to funguje.
Moje e-mailová adresa: b4umani2003@gmail.com
Vďaka,
mani
hi Manideepa,
Vzorka Excel je už uvedené v pošte. Môžete ho použiť ako to je. Ak máte nejaký iný požiadavka, dajte mi vedieť. Bol by som rád, aby vám pomôže vyriešiť problémy.
Vďaka
/KP
ahoj,
Viete, ako používať šírenie list API priamo na spustenie pravidlá?
Vďaka,
Nithya
môžete mi prosím poslať súbor Excel ,chcem spustiť a získať výsledok ..??
Mohli by ste mi prosím poskytnúť príklad DRL, kde by som mohol získať dáta z databázy a aktualizovať skutočnosť, .
Ahoj Sunil,
Môžete použiť rovnaký program s malou modifikáciou.
Prosím kontaktuj ma @ techalpineit@gmail.com pre ďalšiu pomoc.
Vďaka
/KP
ahoj,
Mohli by ste mi prosím zdieľať Excel ? Chcem, aby zodpovedali reťazec čísel alebo skôr hľadať reťazec v inom reťazci
Vďaka
výhradný,
Môžete použiť rovnaké dáta, ako je uvedené v ukážkovom súbore a urobiť jednu pre seba.
Prosím, napíšte mi @ techalpineit@gmail.com pre ďalšiu pomoc.
Vďaka
/KP
Ahoj,
Aj keď sa snažím spustiť, to je zvýšenie súbor nebol nájdený chybu pri spracovaní pod hranicou.
// Použitie DRL súbor
kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );
Mohli by ste mi prosím navrhnúť čo ešte musím urobiť.
S pozdravom,
Shekhar Shaw
Dobrý deň, Shekhar,
Musíte zabezpečiť, že ako .drl a .class súbory sú k dispozícii. Skontrolujte problém a dajte mi vedieť, ak budete čeliť žiadny problém.
Prosím, napíšte mi @ techalpineit@gmail.com
Vďaka
Kaushik
hi
it is very good blog i executed. but i want to generate Rule file template automatically without adding any Rule file.