Jak korzystać z tabeli decyzyjnej ślini w formacie arkusza kalkulacyjnego do realizacji zasady?

Poniższy przykładowy kod opisuje proces używania tabeli decyzję wykonać rules.There dwa sposoby

za) Użyj API arkusza kalkulacyjnego o bezpośrednio do realizacji zasady.
b) Konwersja arkusza kalkulacyjnego Excel do pliku DRL a następnie wykonać zasad.

Opiszę drugiego procesu (b).







** Główna klasa java jest "DroolExcelDemo.java". Pierwszy będzie konwertować arkusz excel do (.drl) Plik, a następnie wykonać zasad.




package DROOLS;

java.io.BufferedWriter import;
importować java.io.FileInputStream;
java.io.FileNotFoundException import;
java.io.FileWriter import;
java.io.IOException import;
importować java.io.InputStream;
java.util.Collection import;

import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
importować org.drools.builder.ResourceType;
org.drools.decisiontable.InputType import;
import org.drools.decisiontable.SpreadsheetCompiler;
importować org.drools.definition.KnowledgePackage;
org.drools.event.rule.DebugAgendaEventListener import;
org.drools.event.rule.DebugWorkingMemoryEventListener import;
import org.drools.io.ResourceFactory;
org.drools.runtime.StatefulKnowledgeSession import;

/**
* Klasa ta będzie utworzyć plik DRL z arkusza excel
* a następnie wykonać zasad.
*/
public class DroolExcelDemo {
public static final void main(końcowy String[] args) {
// Stwórz Knowledge Builder
końcowy KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Utwórz plik DRL z arkusza excel
InputStream jest = null;
próbować {
jest = new FileInputStream(“D:/Przestrzeń robocza / DroolsDemo / src / ślini / DroolExcel.xls”);

} złapać (FileNotFoundException e) {
e.printStackTrace();
}
// Tworzenie instancji klasy kompilatora
SpreadsheetCompiler sc = new SpreadsheetCompiler();

// Skompilować excel generowanie (.drl) plik
StringBuffer drl = new StringBuffer(sc.compile(jest, InputType.XLS));

// Wstaw wartość dialekt do pliku DRL
drl.insert(drl.indexOf(“Ślini”)+40,”dialekt ”mvel ””+”\n”);

// Sprawdź wygenerowany plik DRL
System.out.println(“Wygeneruj DRL plik pokazuje poniżej–: “);
System.out.println(drl);

// pisać ciąg do pliku DRL
próbować {
BufferedWriter out = new BufferedWriter(nowy FileWriter(“D:/Przestrzeń robocza / DroolsDemo / src / ślini / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
złapać (IOException e){
System.out.println(“Wyjątek “);
}
// Odczekaj przed użyciem pliku DRL w następnej sekcji.
próbować {
Thread.sleep(10000);
} złapać (InterruptedException e) {
e.printStackTrace();
}
// Tworzenie Koniec pliku DRL z arkusza excel

// Korzystanie z pliku DRL
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Sprawdź budowniczy za błędy
jeśli ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder zawiera błędy”);
System.out.println( kbuilder.getErrors().toString());
}
// uzyskać skompilowane pakiety (które są serializacji)
Ostateczne PKGS Kolekcja = kbuilder.getKnowledgePackages();

// dodać pakiety do bazy wiedzy (wdrożyć pakiety wiedzy).
końcowy KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

// Utwórz sesję stanowej
końcowy ksession StatefulKnowledgeSession = kbase.newStatefulKnowledgeSession();

// Zestaw detektorów zdarzeń
ksession.addEventListener(nowy DebugAgendaEventListener());
ksession.addEventListener(nowy DebugWorkingMemoryEventListener());

// Tworzenie tekstu wiadomości
DroolMessage messagetxt = new DroolMessage();
messagetxt.setMessage(“Numer lotu”);

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

// Wstawić do sesji i ogień zasad
System.out.println(“wstawić do sesji”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“przed wypalaniem zasady”);
ksession.fireAllRules();
System.out.println(“po strzale zasady”);
ksession.dispose();
System.out.println(“po zbywać”);
}
}








* *Drugi plik jest "DroolMessage.java’ pojo klasa. Posiada wartości określone przez głównego klasy java opisano powyżej.

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;

// Budowniczy
public DroolMessage() {
System.out.println(“inicjowanie wiadomość”);
}
// Setter i getter metody
public String getMessage() {
powrót wiadomość;
}
public void SetMessage(String message) {
this.message = message;
}
// Metoda badania w celu zbadania wykonania reguł
public void Test(Test String) {
System.out.println(“Początek i koniec parsowania: “+test);
}
}

** Poniżej plik reguła generowana przez 'DroolExcelDemo.java’ klasa.

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

// Wartości reguły na B13, Nagłówek na B7
rządzić “DroolExcelRule_13”
kiedy
msg:DroolMessage(message == “FlightCode”)
następnie
msg.test(“7,8”);
koniec

** Poniżej wejście excel plik reguł opartego na "DroolExcelDemo.java’ klasę wyżej.


15 thoughts on “Jak korzystać z tabeli decyzyjnej ślini w formacie arkusza kalkulacyjnego do realizacji zasady?

    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.

      Dzięki,
      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

    Dzięki,
    Mani

  2. 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.

    Dzięki
    /KP

  3. Nithya Kathiresan

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

    Dzięki,
    Nithya

  4. sunil

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

  5. Ananya

    Hi,

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

    Dzięki

  6. Shekhar Shaw

    Hello,
    Choć staram się wykonać, jest podniesienie pliku nie znaleziono błąd podczas przetwarzania poniżej linii.

    // Korzystanie z pliku DRL
    kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );

    Czy moglibyście zasugerować, co jeszcze muszę zrobić.

    Regards,
    Shekhar Shaw

    1. kaushik Post author

      Witaj Shekhar,

      Musisz upewnić się, że zarówno .drl i pliki .class są dostępne. Proszę sprawdzić i dać mi znać, jeśli napotkają żadnych problemów.

      Please mail me @ techalpineit@gmail.com

      Dzięki
      Kaushik

  7. 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