Kuidas kasutada drools otsuse tabel tabeli kujul täita eeskirju?

Järgmises näites koodi kirjeldab protsessi kasutades otsuse tabelis täita rules.There on kaks võimalust

a) Kasutage arvutlustabel APIs otse täita eeskirju.
b) Convert Exceli tabelarvutus arvesse DRL faili ja seejärel täita eeskirju.

Ma kirjeldada teise protsessi (b).







** Peamine java klass on "DroolExcelDemo.java". Esiteks see teisendada Exceli paberileht (.DRL) Fail ja seejärel täita eeskirju.




package DROOLS;

impordi java.io.BufferedWriter;
impordi java.io.FileInputStream;
impordi java.io.FileNotFoundException;
impordi java.io.FileWriter;
impordi java.io.IOException;
importida java.io.InputStream;
impordi java.util.Collection;

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

/**
* Sellesse klassi loob DRL faili Exceli tabel
* ja seejärel täita eeskirju.
*/
avalik klassi DroolExcelDemo {
avaliku staatilise lõplik void main(lõplik String[] args) {
// Loo teadmised ehitaja
lõplik KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Loo DRL faili Exceli tabel
InputStream on = null;
püüdma {
on = uus FileInputStream(“D:/Workspace / DroolsDemo / src / DROOLS / DroolExcel.xls”);

} saak (FileNotFoundException e) {
e.printStackTrace();
}
// Loo kompilaator klassi astmes
SpreadsheetCompiler ks = uus SpreadsheetCompiler();

// Koostada Exceli luua (.DRL) fail
StringBuffer DRL = uus StringBuffer(sc.compile(on, InputType.XLS));

// Sisesta murre väärtuse DRL fail
drl.insert(drl.indexOf(“DROOLS”)+40,”murre ”mvel ””+”\n”);

// Kontrollige loodud DRL fail
System.out.println(“Loo DRL fail näitab allpool–: “);
System.out.println(DRL);

// kirjalikult string DRL fail
püüdma {
BufferedWriter välja = new BufferedWriter(uus FileWriter(“D:/Workspace / DroolsDemo / src / DROOLS / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
saak (IOException e){
System.out.println(“Erand “);
}
// Oota enne kasutamise DRL faili järgmises osas.
püüdma {
Thread.sleep(10000);
} saak (InterruptedException e) {
e.printStackTrace();
}
// End loomine DRL faili Exceli tabel

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

// Kontrollige ehitaja tehtud vigu
kui ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder on vead”);
System.out.println( kbuilder.getErrors().toString());
}
// saada koostatud pakette (mis on Serializable)
lõplik kogumine PKGS = kbuilder.getKnowledgePackages();

// lisada pakette knowledgebase (kasutada teadmisi paketid).
lõplik Teabebaas kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(PKGS);

// Loo olekuteadliku istungil
lõplik StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

// Määra juhul kuulajat
ksession.addEventListener(uus DebugAgendaEventListener());
ksession.addEventListener(uus DebugWorkingMemoryEventListener());

// Loo sõnum tekstiga
DroolMessage messagetxt = uus DroolMessage();
messagetxt.setMessage(“Lennu number”);

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

// INSERT INTO istungil ja tulekahju reeglid
System.out.println(“lisada istung”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“enne lõpetamise eeskirjadel”);
ksession.fireAllRules();
System.out.println(“pärast võtet reeglid”);
ksession.dispose();
System.out.println(“pärast võõrandada”);
}
}








* *Teine fail on "DroolMessage.java’ POJO klass. See mahutab väärtustele, mille peamised java klass eespool kirjeldatud.

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;

// Ehitaja
avaliku DroolMessage() {
System.out.println(“initsialiseerimisel Sõnum”);
}
// Setter ja Getter meetodeid
avaliku String getMessage() {
tagasi sõnum;
}
public void setMessage(String sõnum) {
this.message = sõnum;
}
// katsemeetodit testida reegel täitmine
public void test(String test) {
System.out.println(“Parsimine alguse ja lõpu asend: “+test);
}
}

** Pärast on reeglina faili loodud "DroolExcelDemo.java’ klass.

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

// reegel väärtused B13, header kell B7
välistada “DroolExcelRule_13”
kui
msg:DroolMessage(sõnum == “FlightCode”)
siis
msg.test(“7,8”);
lõpp

** Pärast on sisend paista tulenev norm fail "DroolExcelDemo.java’ klass eespool.


15 thoughts on “Kuidas kasutada drools otsuse tabel tabeli kujul täita eeskirju?

    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 Kathiresan

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

    Thanks,
    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

    Thanks

  6. Shekhar Shaw

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

    // Kasutades DRL fail
    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

    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