Kako uporabljati drools odločitev mizo v obliki razpredelnice za izvajanje pravil?

Naslednja koda primer bo opisan postopek z odločbo tabelo za izvedbo rules.There dva načina

a) Uporabite API razpredelnice neposredno izvrševanje pravil.
b) Pretvarjanje list širjenja excel v datoteko DRL in nato izvajanje pravil.

Opisal bom postopek 2. (b).







** Glavni java razred "DroolExcelDemo.java". Najprej bo pretvoril v excel stanja (.drl) datoteko in nato izvajanje pravil.




package DROOLS;

Uvoz java.io.BufferedWriter;
uvoz java.io.FileInputStream;
Uvoz java.io.FileNotFoundException;
Uvoz java.io.FileWriter;
Uvoz java.io.IOException;
uvoz java.io.InputStream;
Uvoz java.util.Collection;

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

/**
* Ta razred bo ustvarilo datoteko DRL iz excel stanja
* in nato izvajanje pravil.
*/
public class DroolExcelDemo {
javnih statičnih neveljaven glavna končna(končno String[] args) {
// Ustvarjanje znanja graditelja
Končno KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Ustvari DRL datoteko iz excel stanja
InputStream je = null;
poskusite {
= new FileInputStream je(“D:/Workspace / DroolsDemo / src / DROOLS / DroolExcel.xls”);

} ulova (FileNotFoundException e) {
e.printStackTrace();
}
// Ustvari primerek razreda prevajalnik
SpreadsheetCompiler sc = new SpreadsheetCompiler();

// Izpolni excel za ustvarjanje (.drl) datoteka
StringBuffer drl = new StringBuffer(sc.compile(je, InputType.XLS));

// Vstavite narečnega vrednost v datoteki DRL
drl.insert(drl.indexOf(“DROOLS”)+40,”narečje ”mvel ””+”\n”);

// Preverite ustvarjeno datoteko DRL
Println(“Ustvari DRL slika prikazuje spodnji–: “);
Println(drl);

// pisno niz v datoteki DRL
poskusite {
BufferedWriter ven = novi BufferedWriter(Nova FileWriter(“D:/Workspace / DroolsDemo / src / DROOLS / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
ulova (IOException e){
Println(“Izjema “);
}
// Počakajte, da se pred uporabo datoteke DRL v naslednjem poglavju.
poskusite {
Thread.sleep(10000);
} ulova (InterruptedException e) {
e.printStackTrace();
}
// Konec ustvarjanje datoteke DRL iz excel stanja

// Uporaba DRL datoteko
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Preverite graditelja za napake
če ( kbuilder.hasErrors() ) {
Println(“kbuilder ima napake”);
Println( kbuilder.getErrors().toString());
}
// dobili zbral pakete (ki so Serializable)
Končni PKGS Zbiranje = kbuilder.getKnowledgePackages();

// dodajte paketov na Knowledgebase (uporabi znanja v pakete).
Končno Baza znanja kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(PKGS);

// Ustvari Stateful seje
Končno StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

// Nastavite dogodkov poslušalcev
ksession.addEventListener(Nova DebugAgendaEventListener());
ksession.addEventListener(Nova DebugWorkingMemoryEventListener());

// Ustvarjanje besedilo sporočila
DroolMessage messagetxt = novi DroolMessage();
messagetxt.setMessage(“Številka leta”);

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

// Vstavite v pravilih seje in ogenj
Println(“vstavite zasedanju”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
Println(“pred odpuščanjem”);
ksession.fireAllRules();
Println(“Po odpuščanjem”);
ksession.dispose();
Println(“Po razpolaga”);
}
}








* *2. datoteka je "DroolMessage.java’ POJO razred. Ima vrednosti, ki jih glavni razred Java je opisano zgoraj.

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;

// Graditelj
javno DroolMessage() {
Println(“inicializacija sporočilo”);
}
// Podajalca in Človek, ki ustvarja metode
javni String getMessage() {
Povratno sporočilo;
}
public void setMessage(String sporočilo) {
this.message = sporočilo;
}
// Preskusna metoda za preskus pravilo izvajanja
public void Test(Niz preskus) {
Println(“Razčlenjevanju začetni in končni položaj: “+Test);
}
}

** V nadaljevanju je pravilo datoteko, ki jo "DroolExcelDemo.java’ Razred.

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

// pravne vrednosti pri B13, Glava na B7
izreči “DroolExcelRule_13”
ko
msg:DroolMessage(Sporočilo == “FlightCode”)
Nato
msg.test(“7,8”);
konec

** Sledi vnos temelji na pravno excel datoteko "DroolExcelDemo.java’ razred nad.


15 thoughts on “Kako uporabljati drools odločitev mizo v obliki razpredelnice za izvajanje pravil?

    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.

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

    Thanks
    /KP

  3. Nithya Kathiresana

    Hi,
    Ali veste, kako uporabljati API širjenja stanja neposredno izvrševanje pravil?

    Thanks,
    Nithya

  4. Sunil

    Bi lahko prosim zagotovi DRL primer, kjer bi lahko dobili podatke iz zbirke podatkov in posodabljanje dejstvo, .

  5. Ananya

    Hi,

    Bi lahko prosim delijo excel ? Želim, da se ujemajo niz številk oziroma iskalni niz v drugem nizu

    Thanks

  6. Shekhar Shaw

    Hello,
    Medtem ko sem poskušal izvesti, je dvig datoteke ni bilo mogoče najti napake pri obdelavi pod pragom.

    // Uporaba DRL datoteko
    kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );

    Bi lahko prosim predlagajte, kaj moram storiti.

    Regards,
    Shekhar Shaw

    1. kaushik Post author

      Pozdravljeni Shekhar,

      Boste morali zagotoviti, da so tako .drl in .class datotek na voljo. Prosimo preverite in mi sporočite, če boste naleteli na kake težave.

      Prosim mail me @ techalpineit@gmail.com

      Thanks
      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