Jak používat slintá rozhodnutí tabulku v tabulkovém formátu vykonat pravidla?

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.


15 thoughts on “Jak používat slintá rozhodnutí tabulku v tabulkovém formátu vykonat pravidla?

    1. Kaushik Post author

      Hi Daniel,

      Thanks for your interest. Please let me know your exact requirement. I will send you the excel sheet.

      Cheers
      /KP

    1. Kaushik Post author

      Hi Aakash,

      Please send me your exact requirement. I will try my best to help you out.

      Díky,
      Techalpine

  1. Kaushik Post author

    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

  2. Nithya Kathiresan

    Hi,
    Do you know how to use the spread sheet APIs directly to execute the rules?

    Díky,
    Nithya

  3. sunil

    Could you please provide a DRL example where I could get the data from Database and update the fact .

  4. Ananya

    Hi,

    Could you please share the excel ? I want to match a string of numbers or rather search string in another string

    Díky

  5. Shekhar Shaw

    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

    1. Kaushik Post author

      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

  6. Rahul Pandey

    hi
    it is very good blog i executed. but i want to generate Rule file template automatically without adding any Rule file.

============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share