Kung paano gamitin ang drools talahanayan ng desisyon sa spreadsheet na format upang maisagawa ang mga panuntunan?

Ang sumusunod na code halimbawa ay ilarawan ang proseso ng gamit ang desisyon talahanayan upang isakatuparan ang rules.There dalawang paraan

isang) Gamitin ang mga API ng pagkalat sheet nang direkta sa isagawa ang mga panuntunan.
b) Convert ang excel spread sheet sa isang file ng drl at pagkatapos ay isagawa ang mga panuntunan.

Ako ilarawan ang pangalawang proseso (b).







** Ang pangunahing klase ng java 'DroolExcelDemo.java'. Una ito convert ang excel sheet sa isang (.drl) -file at pagkatapos ay isagawa ang mga panuntunan.




package DROOLS;

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

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

/**
* Klase na ito ay lumikha ng isang file na drl mula sa excel sheet
* at pagkatapos ay isagawa ang mga panuntunan.
*/
pampublikong klase DroolExcelDemo {
pampublikong static na walang bisa panghuling pangunahing(panghuling String[] args) {
// Lumikha ng kaalaman tagabuo
panghuling KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Lumikha ng drl file mula sa excel sheet
InputStream = null;
sumubok {
ay = bagong FileInputStream(“Da:/Workspace / DroolsDemo / SRC / DROOLS / DroolExcel.xls”);

} sumakay (FileNotFoundException e) {
e.printStackTrace();
}
// Halimbawa ng klase ng tagatala ng Lumikha
Ang SpreadsheetCompiler SC = bagong SpreadsheetCompiler();

// Makatipon ang excel upang mabuo ang (.drl) file
StringBuffer drl = bagong StringBuffer(sc.compile(ay, InputType.XLS));

// Ipasok ang halaga ng idyoma sa drl file
drl.insert(drl.indexOf(“DROOLS”)+40,”idyoma ”mvel ””+”\n”);

// Suriin ang nabuong drl file
System.out.println(“Lumalabas ang Generate DRL file sa ibaba–: “);
System.out.println(drl);

// pagsulat ng string sa isang file drl
sumubok {
BufferedWriter out = bagong BufferedWriter(bagong FileWriter(“Da:/Workspace / DroolsDemo / SRC / DROOLS / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
sumakay (IOException e){
System.out.println(“Kataliwasan “);
}
// Maghintay bago gamit ang drl file sa susunod na seksyon.
sumubok {
Thread.sleep(10000);
} sumakay (InterruptedException e) {
e.printStackTrace();
}
// End paglikha ng drl file mula sa excel sheet

// Paggamit ng DRL file
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Lagyan ng check ang tagabuo para sa mga error
kung ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder ay may mga error”);
System.out.println( kbuilder.getErrors().toString());
}
// makuha ang inipon pakete (na serializable)
panghuling Collection pkgs = kbuilder.getKnowledgePackages();

// idagdag ang mga pakete sa isang knowledgebase (deploy ang mga pakete ng kaalaman).
panghuling KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

// Lumikha ng stateful session
pinal na StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

// Itakda ang mga tagapakinig ng kaganapan
ksession.addEventListener(bagong DebugAgendaEventListener());
ksession.addEventListener(bagong DebugWorkingMemoryEventListener());

// Lumikha ng text message
DroolMessage messagetxt = bagong DroolMessage();
messagetxt.setMessage(“Flight number”);

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

// Ipasok ang sa mga panuntunan ng session at sunog
System.out.println(“isingit sa session”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“bago pagpapaputok panuntunan”);
ksession.fireAllRules();
System.out.println(“pagkatapos pagpapaputok panuntunan”);
ksession.dispose();
System.out.println(“pagkatapos itapon”);
}
}








* *Ang pangalawang file ay isang 'DroolMessage.java’ pojo klase. Hold ang mga halaga na itinakda ng pangunahing klase ng java inilarawan sa itaas.

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;

// Ang nagpapagawa
pampublikong DroolMessage() {
System.out.println(“Sinisimulan Mensahe”);
}
// Pamamaraan ng setter at geter
pampublikong String getMessage() {
bumalik mensahe;
}
pampublikong void setMessage(String mensahe) {
this.message = mensahe;
}
// pagsubok paraan upang subukan ang pagpapatupad ng panuntunan
pampublikong void pagsubok(String test) {
System.out.println(“Pag-parse ng pagsisimula at pagtatapos posisyon: “+pagsubok);
}
}

** Ang sumusunod ay isang panuntunan file na nabuo sa pamamagitan ng 'DroolExcelDemo.java’ klase.

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

// panuntunan halaga sa B13, header sa B7
mamuno “DroolExcelRule_13”
kapag
msg:DroolMessage(mensahe == “FlightCode”)
pagkatapos
msg.test(“7,8”);
katapusan

** Sumusunod ang input sa Excel batay sa panuntunan file sa 'DroolExcelDemo.java’ klase sa itaas.


15 thoughts on “Kung paano gamitin ang drools talahanayan ng desisyon sa spreadsheet na format upang maisagawa ang mga panuntunan?

    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.

    // Paggamit ng DRL file
    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