Si të përdorni tryezë drools vendim në format spreadsheet për të ekzekutuar rregullat?

Kodi vijim shembull do të përshkruajë procesin e përdorur tabelën vendim për të ekzekutuar rules.There janë dy mënyra

një) Përdorimi TV fletë përhapur drejtpërdrejt për të ekzekutuar rregullat.
b) Convert fletë excel përhapur në një skedar drl dhe pastaj ekzekutuar rregullat.

Unë do të përshkruaj procesin e dytë (b).







** Kryesore klasa java është 'DroolExcelDemo.java ". Së pari ajo do të konvertohet fletë excel në një (.DRL) paraqesë dhe pastaj ekzekutuar rregullat.




package DROOLS;

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

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

/**
* Kjo klasë do të krijojë një skedar excel fletë nga DRL
* dhe pastaj ekzekutuar rregullat.
*/
publik klasë DroolExcelDemo {
publike statike kryesore void final(String final[] args) {
// Krijo ndërtues njohuri
përfundimtar KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Krijo skedë excel fletë nga DRL
InputStream është = null;
mundohem {
është = new FileInputStream(“D:/Workspace / DroolsDemo / src / DROOLS / DroolExcel.xls”);

} kap (FileNotFoundException e) {
e.printStackTrace();
}
// Krijo klasës shembull përpilues
SpreadsheetCompiler sc = new SpreadsheetCompiler();

// Hartimin e Excel për të gjeneruar (.DRL) skedar
StringBuffer DRL = new StringBuffer(sc.compile(është, InputType.XLS));

// Vendos vlerën dialekt në dosjen drl
drl.insert(drl.indexOf(“DROOLS”)+40,”dialekt ”MVEL ””+”\n”);

// Kontrolloni skedarin e gjeneruar DRL
Println(“Generate fotografi DRL është treguar më poshtë–: “);
Println(DRL);

// shkruar vargun në një skedar drl
mundohem {
BufferedWriter nga = BufferedWriter ri(FileWriter ri(“D:/Workspace / DroolsDemo / src / DROOLS / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
kap (IOException e){
Println(“Përjashtim “);
}
// Prisni para se të përdorni dosjen DRL në seksionin e ardhshëm.
mundohem {
Thread.sleep(10000);
} kap (InterruptedException e) {
e.printStackTrace();
}
// Krijimi Fundi i dosjes drl nga excel fletë

// Përdorur skedarin DRL
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Kontrolloni ndërtues për gabime
nëse ( kbuilder.hasErrors() ) {
Println(“kbuilder ka gabime”);
Println( kbuilder.getErrors().toString());
}
// merrni paketat e hartuara (të cilat janë serializable)
pkgs përfundimtare Mbledhja = kbuilder.getKnowledgePackages();

// shtoni paketa për një Arkivi (vendosë pakot njohuri).
përfundimtar Knowledgebase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

// Krijo seancë stateful
ksession final StatefulKnowledgeSession = kbase.newStatefulKnowledgeSession();

// Set dëgjuesit ngjarje
ksession.addEventListener(Debug EventListener ri axhendën());
ksession.addEventListener(DebugWorkingMemoryEventListener ri());

// Krijo tekstin e mesazhit
DroolMessage messagetxt = new DroolMessage();
messagetxt.setMessage(“Numri i fluturimit”);

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

// Futur në seancë dhe zjarri rregullave
Println(“futur në seancë”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
Println(“para qitjes rregullat”);
ksession.fireAllRules();
Println(“pas qitjes rregullat”);
ksession.dispose();
Println(“pas urdhëroi”);
}
}








* *Skedar i dytë është një 'DroolMessage.java’ pojo klasë. Ajo mban vlerat e përcaktuara nga klasa java kryesore të përshkruara më sipër.

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;

// Ndërtues
publike DroolMessage() {
Println(“Initializing mesazh”);
}
// Setër dhe energjik metodat
String publik getMessage() {
kthehen mesazh;
}
setMessage publike pavlefshëm(Mesazhi String) {
this.message = mesazhe;
}
// Metoda provë për të testuar ekzekutimin rregull
Testi publike pavlefshëm(Testi String) {
Println(“Fillimi parsing dhe pozita fundi: “+provë);
}
}

** Më poshtë është një file rregull gjeneruar nga '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

// Vlerat rregull në B13, header në B7
sundojnë “DroolExcelRule_13”
kur
msg:DroolMessage(Mesazhi == “FlightCode”)
pastaj
msg.test(“7,8”);
fund

** Në vijim është input shkëlqejnë fotografinë bazë rregull në 'DroolExcelDemo.java’ klasë më lart.


15 thoughts on “Si të përdorni tryezë drools vendim në format spreadsheet për të ekzekutuar rregullat?

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

    1. Kaushik Post author

      Hi Aakash,

      Please send me your exact requirement. I will try my best to help you out.

      Falënderim,
      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

    Falënderim,
    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.

    Falënderim
    /PK

  3. Nithya Kathiresan

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

    Falënderim,
    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

    Falënderim

  6. Shekhar Shaw

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

    // Përdorur skedarin DRL
    kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

    Could you please suggest what else I need to do.

    Regards,
    Shekhar Shaw

    1. Kaushik Post author

      Hello Shekhar,

      You need to ensure that both the .drl and .class files are available. Please check and let me know if you face any problem.

      Please mail me @ techalpineit@gmail.com

      Falënderim
      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