Kaip naudoti skaičiuoklės formatu drools sprendimų lentelę vykdyti taisykles?

Toliau pateiktas pavyzdys kodas bus aprašyti naudojant sprendimų lentelę vykdyti rules.There Yra du būdai

a) Naudoti skaičiuoklę API tiesiogiai vykdyti taisykles.
b) Konvertuoti "Excel" skaičiuoklę į DRL failą ir tada vykdyti taisykles.

Aš aprašyti antrąjį procesą (b).







** Pagrindinis Java klasės yra "DroolExcelDemo.java". Pirmiausia ji bus konvertuoti Excel lakštą į (.DRL) failą ir tada vykdyti taisykles.




package DROOLS;

importo java.io.BufferedWriter;
importuoti java.io.FileInputStream;
importo java.io.FileNotFoundException;
importo java.io.FileWriter;
importo java.io.IOException;
importuoti java.io.InputStream;
importo java.util.Collection;

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

/**
* Ši klasė sukurti DRL failą iš "Excel" lape
* ir atlikite taisykles.
*/
visuomenės klasė DroolExcelDemo {
public static galutinis negaliojančiu pagrindinis(galutinis Styginių[] args) {
// Sukurti Knowledge Builder
galutinis KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Sukurti DRL failą iš "Excel" lape
InputStream = null;
pabandyti {
= nauji FileInputStream(“D:/Workspace "/ DroolsDemo / src / drools / DroolExcel.xls”);

} sugauti (FileNotFoundException e) {
e.printStackTrace();
}
// Sukurti sudarytojas klasės egzempliorius
SpreadsheetCompiler sc = nauji SpreadsheetCompiler();

// Compile "Excel" kurti (.DRL) byla
StringBuffer DRL = nauji StringBuffer(sc.compile(yra, InputType.XLS));

// Įdėkite tarmės vertę į DRL failą
drl.insert(drl.indexOf(“Drools”)+40,”tarmė ”mvel ””+”\n”);

// Patikrinkite sukurtą DRL failą
System.out.println(“Generuoti DRL failas yra rodomas žemiau–: “);
System.out.println(DRL);

// raštu eilutę į DRL failą
pabandyti {
= Nauji BufferedWriter BufferedWriter iš(nauja FileWriter(“D:/Workspace "/ DroolsDemo / src / drools / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
sugauti (IOException e){
System.out.println(“Išimtis “);
}
// Palaukite, prieš naudojant DRL failą kitame skyriuje.
pabandyti {
Thread.sleep(10000);
} sugauti (InterruptedException e) {
e.printStackTrace();
}
// Pabaiga DRL failo kūrimas iš "Excel" lape

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

// Patikrinkite, ar nėra klaidų statybininkas
jei ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder yra klaidų”);
System.out.println( kbuilder.getErrors().toString());
}
// gauti Sudarytame paketus (kurie yra serializable)
paskutinio rinkimo pkgs = kbuilder.getKnowledgePackages();

// pridėti paketus į bazėje (diegti žinių paketus).
galutinis biblioteka kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

// Sukurti seanso
galutinis StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

// Nustatykite renginio klausytojus
ksession.addEventListener(nauja DebugAgendaEventListener());
ksession.addEventListener(nauja DebugWorkingMemoryEventListener());

// Naujas pranešimas tekstą
DroolMessage messagetxt = nauji DroolMessage();
messagetxt.setMessage(“Skrydžio numeris”);

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

// Įtraukti į sesijos ir gaisro taisykles
System.out.println(“įterpti į sesijos”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“iki atleidimo iš darbo taisykles”);
ksession.fireAllRules();
System.out.println(“po atleidimo iš darbo taisykles”);
ksession.dispose();
System.out.println(“po disponuoti”);
}
}








* *Antroji byla yra "DroolMessage.java’ POJO klasė. Turi vertes, nustatytas pagrindinio Java klasės aprašyta aukščiau.

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;

// Statybininkas
visuomenės DroolMessage() {
System.out.println(“Inicijuojama žinutę”);
}
// Seteris ir karjeristas metodai
visuomenės Styginių getMessage() {
grįžti pranešimą;
}
public void setMessage(Styginių pranešimą) {
this.message = Pranešimas;
}
// bandymo metodą išbandyti taisyklių vykdymą
public void testas(Styginių testas) {
System.out.println(“Nagrinėju pradžios ir pabaigos pozicija: “+testas);
}
}

** Taip yra taisyklė failas sukurtas "DroolExcelDemo.java’ klasė.

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

// viršenybės principais B13, antraštė ne B7
atmesti “DroolExcelRule_13”
kai
msg:DroolMessage(pranešimą == “FlightCode”)
tada
msg.test(“7,8”);
pabaiga

** Toliau įėjimo Excel paremtą taisyklių failą į "DroolExcelDemo.java’ klasė aukščiau.


15 thoughts on “Kaip naudoti skaičiuoklės formatu drools sprendimų lentelę vykdyti taisykles?

    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

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

    // Naudodami 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