Cum să utilizați salivează tabel în format foaie de calcul decizia de a executa reguli?

Codul de exemplu următor se va descrie procesul de utilizare a tabelului decizia de a executa rules.There sunt două moduri

o) Utilizați API-urile foaie de calcul în mod direct pentru a executa normele.
b) Conversia foaie de calcul Excel într-un fișier și apoi executați NRD normele.

Voi descrie al doilea proces (b).







** Principalul clasa Java este "DroolExcelDemo.java". În primul rând se va transforma într-o foaie Excel (.DRL) fișier și apoi executa normele.




package DROOLS;

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

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

/**
* Această clasă va crea un fișier NRD din foi Excel
* și apoi executați normele.
*/
public class DroolExcelDemo {
public static void principal de finală(String finală[] args) {
// Creați constructor de cunoștințe
finală KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Creați DRL fișier din foi excel
InputStream is = nul;
încerca {
este = new FileInputStream(“D:/Spațiul de lucru / DroolsDemo / src / Drools / DroolExcel.xls”);

} prinde (FileNotFoundException e) {
e.printStackTrace();
}
// Creați clasa exemplu, compilatorul
SpreadsheetCompiler sc = new SpreadsheetCompiler();

// Compilați Excel pentru a genera (.DRL) fișier
StringBuffer = new StringBuffer DRL(sc.compile(este, InputType.XLS));

// Introduceți valoarea dialectul în fișier DRL
drl.insert(drl.indexOf(“Drools”)+40,”dialectul ”mvel ””+”\n”);

// Verificați fișierul generat DRL
Println(“Generare fișier DRL este afișat mai jos–: “);
Println(DRL);

// scris șir într-un fișier NRD
încerca {
BufferedWriter out = new BufferedWriter(Noul filewriter(“D:/Spațiul de lucru / DroolsDemo / src / Drools / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
prinde (IOException e){
Println(“Excepție “);
}
// Așteptați înainte de a utiliza fișierul DRL în secțiunea următoare.
încerca {
Thread.Sleep(10000);
} prinde (InterruptedException e) {
e.printStackTrace();
}
// Crearea sfârșitul de fișier DRL din foi Excel

// Utilizarea DRL fișier
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Verificați constructor pentru erori
dacă ( kbuilder.hasErrors() ) {
Println(“kbuilder are erori”);
Println( kbuilder.getErrors().toString());
}
// primi pachete compilate (care sunt serializabile)
PKGS finale de colectare = kbuilder.getKnowledgePackages();

// adăuga pachete pentru o baza de cunostinte (mobilizare pachetele de cunoștințe).
KnowledgeBase finală kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(PKGS);

// Creați sesiune dinamică
ksession StatefulKnowledgeSession finală = kbase.newStatefulKnowledgeSession();

// Set ascultători de evenimente
ksession.addEventListener(Noul DebugAgendaEventListener());
ksession.addEventListener(Noul DebugWorkingMemoryEventListener());

// Creați mesaj text
DroolMessage messagetxt = new DroolMessage();
messagetxt.setMessage(“Număr zbor”);

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

// Introduceți în norme sesiune si foc
Println(“insera în sesiune”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
Println(“înainte de ardere normele”);
ksession.fireAllRules();
Println(“după ardere normele”);
ksession.dispose();
Println(“Caracteristici eficiente”);
}
}








* *Al doilea fișier este un DroolMessage.java "’ POJO clasa. Acesta detine valorile stabilite de către clasa principală java descris mai sus.

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;

// Constructor
publice DroolMessage() {
Println(“initializarea Mesaj”);
}
// Setter și getter metode
public String getMessage() {
a reveni mesaj;
}
public void setMessage(String mesaj) {
this.message = mesaj;
}
// Metoda de încercare pentru a testa executarea regula
public void încercare(Șir de testare) {
Println(“Parsarea de start și poziția sfârșitul: “+încercare);
}
}

** În urma este un fișier generat de regulă DroolExcelDemo.java "’ clasă.

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

// Valorile regulă la B13, antet de la B7
pronunța “DroolExcelRule_13”
când
msg:DroolMessage(Mesajul == “FlightCode”)
apoi
msg.test(“7,8”);
capăt

** În urma este de intrare de fișier Excel reguli bazate pe DroolExcelDemo.java "’ Clasa de mai sus.


15 thoughts on “Cum să utilizați salivează tabel în format foaie de calcul decizia de a executa reguli?

    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.

      Mulțumiri,
      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

    Mulțumiri,
    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.

    Mulțumiri
    /KP

  3. nithya Kathiresan

    Hi,
    Știi cum să folosească API-uri răspândirea foaie în mod direct pentru a executa regulile?

    Mulțumiri,
    nithya

  4. Sunil

    Ați putea să vă rugăm să oferiți un exemplu NRD unde am putut obține datele din baza de date și să actualizeze faptul .

  5. Ananya

    Hi,

    Ați putea să vă rugăm să partajați Excel ? Vreau să se potrivească un șir de numere sau de căutare șir într-un alt șir de caractere, mai degrabă

    Mulțumiri

    1. Kaushik Post author

      Bună Ananya,

      Aveți posibilitatea să utilizați aceleași date așa cum se arată în fișierul de probă și de a face una pentru tine.

      Vă rugăm să-mi mail @ techalpineit@gmail.com pentru ajutor suplimentar.

      Mulțumiri
      /KP

  6. Shekhar Shaw

    Hello,
    În timp ce am încercat să execute, acesta este ridicarea unui fișier nu a fost găsit de eroare în timpul procesării de mai jos linia.

    // Utilizarea DRL fișier
    kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );

    Ați putea să vă rugăm să sugereze ce altceva am nevoie să fac.

    Regards,
    Shekhar Shaw

    1. Kaushik Post author

      Bună ziua Shekhar,

      Aveți nevoie pentru a se asigura că atât fișierele .class .drl și sunt disponibile. Vă rugăm să verificați și să-mi spuneți dacă vă confruntați cu orice problemă.

      Vă rugăm să-mi mail @ techalpineit@gmail.com

      Mulțumiri
      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