Wie drools Entscheidungstabelle im Spreadsheet-Format verwenden, um Regeln ausführen?

Das folgende Beispiel-Code wird den Prozess der Verwendung Entscheidung Tabelle rules.There auszuführen beschreiben, sind zwei Arten

ein) Verwenden Sie die Tabellenkalkulation APIs direkt an die Regeln ausführen.
b) Konvertieren Sie die Excel-Tabelle in ein TFL-Datei und führen Sie dann die Regeln.

Ich werde die zweite Prozess (b).







** Die wichtigsten Java-Klasse ist 'DroolExcelDemo.java'. Zuerst wird die Excel-Tabelle in ein konvertieren (.TFL) Datei und führen Sie dann die Regeln.




package DROOLS;

Import java.io.BufferedWriter;
importieren java.io.FileInputStream;
Import java.io.FileNotFoundException;
Import java.io.FileWriter;
Import java.io.IOException;
importieren 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;
importieren org.drools.builder.ResourceType;
Import org.drools.decisiontable.InputType;
Import org.drools.decisiontable.SpreadsheetCompiler;
importieren 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;

/**
* Diese Klasse wird eine TFL-Datei aus Excel-Blatt erstellen
* und führen Sie dann die Regeln.
*/
public class DroolExcelDemo {
public static final void main(final String[] args) {
// Wissen schaffen Builder
endgültigen KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Erstellen TFL-Datei aus Excel-Blatt
InputStream is = null;
versuchen {
ist = new FileInputStream(“D:/Arbeitsbereich / DroolsDemo / src / Drools / DroolExcel.xls”);

} fangen (FileNotFoundException e) {
e.printStackTrace();
}
// Neues Compiler-Klasse B.
SpreadsheetCompiler sc = new SpreadsheetCompiler();

// Kompilieren Sie die Excel zur Generierung der (.TFL) Datei
StringBuffer TFL = new StringBuffer(sc.compile(ist, InputType.XLS));

// Legen Dialekt Wert in TFL-Datei
drl.insert(drl.indexOf(“Drools”)+40,”Dialekt ”MVEL ””+”\n”);

// Prüfen Sie die generierte TFL-Datei
System.out.println(“Generate DRL-Datei ist unten zeigt–: “);
System.out.println(TFL);

// Schreiben String in eine TFL-Datei
versuchen {
BufferedWriter out = new BufferedWriter(neue FileWriter(“D:/Arbeitsbereich / DroolsDemo / src / Drools / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
fangen (IOException e){
System.out.println(“Ausnahme “);
}
// Warten, bevor mit der TFL-Datei im nächsten Abschnitt.
versuchen {
Thread.sleep(10000);
} fangen (InterruptedException e) {
e.printStackTrace();
}
// End Erstellung von TFL-Datei aus Excel-Blatt

// Mit DRL-Datei
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Überprüfen Sie den Builder für Fehler
wenn ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder hat Fehler”);
System.out.println( kbuilder.getErrors().toString());
}
// erhalten die kompilierten Pakete (welche sind serialisierbar)
endgültige Sammlung pkgs = kbuilder.getKnowledgePackages();

// fügen Sie die Pakete zu einer Wissensdatenbank (Bereitstellen der Wissens-Pakete).
endgültigen KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

// Erstellen Stateful Session
endgültigen StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

// Stellen Sie Ereignis-Listener
ksession.addEventListener(neue DebugAgendaEventListener());
ksession.addEventListener(neue DebugWorkingMemoryEventListener());

// Erstellen Meldungstext
DroolMessage messageTxt = new DroolMessage();
messagetxt.setMessage(“Flugnummer”);

DroolMessage messagetxt1 = new DroolMessage();
messagetxt1.setMessage(“FlightCode”);

// Legen Sie in die Sitzung und Feuer Regeln
System.out.println(“Einfügen in die Sitzung”);
ksession.insert(messageTxt);
ksession.insert(messagetxt1);
System.out.println(“vor dem Brennen Regeln”);
ksession.fireAllRules();
System.out.println(“nach dem Brand Regeln”);
ksession.dispose();
System.out.println(“Nach Entsorgen”);
}
}








* *Die zweite Datei ist eine 'DroolMessage.java’ POJO-Klasse. Er hält die Werte von der Haupt-Java-Klasse gesetzt oben beschrieben.

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;

// BAUTRÄGER
öffentlichen DroolMessage() {
System.out.println(“Initialisierung Nachricht”);
}
// Setter und Getter-Methoden
public String getMessage() {
zurück Nachricht;
}
public void setMessage(String message) {
this.message = message;
}
// Prüfverfahren zur Bestimmung der Regelausführung testen
public void Test(String-Test) {
System.out.println(“Parsing Start-und Endposition: “+Test);
}
}

** Nachfolgend finden Sie eine Regeldatei von der "DroolExcelDemo.java generiert’ 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 Werte bei B13, Kopfzeile B7
regieren “DroolExcelRule_13”
wenn
msg:DroolMessage(message == “FlightCode”)
dann
msg.test(“7,8”);
Ende

** Es folgt die Eingabe Excel-basierten Regeldatei auf die "DroolExcelDemo.java’ Klasse über.


15 Gedanken über “Wie drools Entscheidungstabelle im Spreadsheet-Format verwenden, um Regeln ausführen?

    1. kaushik Beitrags Autor

      Hi Daniel,

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

      Cheers
      /KP

    1. kaushik Beitrags Autor

      Hi Aakash,

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

      Thanks,
      Techalpine

  1. Manideepa

    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

  2. kaushik Beitrags Autor

    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

  3. Nithya Kathiresan

    Hi,
    Wissen Sie, wie die Tabellenkalkulation APIs direkt zu verwenden, um die Regeln ausführen?

    Thanks,
    Nithya

  4. sunil

    Könnten Sie bitte eine DRL Beispiel, in dem ich die Daten aus der Datenbank zu erhalten und zu aktualisieren, die Tatsache, .

  5. Ananya

    Hi,

    Könnten Sie bitte teilen Sie die Excel- ? Ich möchte eine Reihe von Zahlen entsprechen oder vielmehr suchen String in einem anderen String

    Thanks

    1. kaushik Beitrags Autor

      Hallo Ananya,

      Sie können dieselben Daten verwenden, wie in der Beispieldatei gezeigt und stellen Sie ein für sich selbst.

      Bitte senden Sie mir @ techalpineit@gmail.com für weitere Hilfe.

      Thanks
      /KP

  6. Shekhar Shaw

    Hello,
    While I am trying to execute, it is raising a file not found error while processing below line.

    // Mit DRL-Datei
    kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

    Could you please suggest what else I need to do.

    Regards,
    Shekhar Shaw

  7. Rahul Pandey

    Hallo
    es ist sehr gut Blog i ausgeführt. aber ich möchte automatisch Regel Dateivorlage zu erzeugen, ohne eine Regel-Datei hinzufügen.

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share