Sådan bruger drools beslutning tabel i et regneark til at udføre regler?

Det følgende eksempel kode vil beskrive processen med at bruge beslutningstabel for at udføre rules.There er to måder

a) Brug regneark API'er direkte at udføre de regler.
b) Konverter Excel regneark ind i en DRL-fil og derefter udføre de regler.

Jeg vil beskrive den anden proces (b).







** Den vigtigste java klassen er 'DroolExcelDemo.java «. Først vil konvertere excel ark ind i en (.DRL) fil og derefter udføre de regler.




package DROOLS;

import java.io.BufferedWriter;
importere java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
importere 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;
importere org.drools.builder.ResourceType;
import org.drools.decisiontable.InputType;
import org.drools.decisiontable.SpreadsheetCompiler;
importere 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;

/**
* Denne klasse vil skabe et DRL fil fra excel ark
* og derefter udføre de regler.
*/
public class DroolExcelDemo {
public static final void main(endelig String[] args) {
// Opret viden builder
endelig KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Opret DRL fil fra excel ark
InputStream er = null;
prøv {
er = ny FileInputStream(“D:/Arbejdsrum / DroolsDemo / src / drools / DroolExcel.xls”);

} fange (FileNotFoundException e) {
e.printStackTrace();
}
// Opret compiler klasse instans
SpreadsheetCompiler sc = new SpreadsheetCompiler();

// Udfyld excel til at generere (.DRL) fil
StringBuffer DRL = ny StringBuffer(sc.compile(er, InputType.XLS));

// Indsæt dialekt værdi i DRL-fil
drl.insert(drl.indexOf(“Drools”)+40,”dialekt ”mvel ””+”\n”);

// Kontrollér den genererede DRL fil
System.out.println(“Generere DRL fil vises nedenfor–: “);
System.out.println(DRL);

// skrivning streng til et DRL fil
prøv {
BufferedWriter ud = ny BufferedWriter(ny FileWriter(“D:/Arbejdsrum / DroolsDemo / src / drools / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
fange (IOException e){
System.out.println(“Undtagelse “);
}
// Vent, før du bruger DRL-filen i næste afsnit.
prøv {
Thread.sleep(10000);
} fange (InterruptedException e) {
e.printStackTrace();
}
// End oprettelsen af ​​kørelys fil fra excel ark

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

// Kontroller bygherre for fejl
hvis ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder har fejl”);
System.out.println( kbuilder.getErrors().toString());
}
// få de kompilerede pakker (som er serializable)
sidste indsamling pkgs = kbuilder.getKnowledgePackages();

// tilføj pakkerne til en vidensbase (implementere den viden pakker).
endelig KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

// Opret stateful session
endelig StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

// Indstil begivenhed lyttere
ksession.addEventListener(ny DebugAgendaEventListener());
ksession.addEventListener(ny DebugWorkingMemoryEventListener());

// Opret besked tekst
DroolMessage messagetxt = ny DroolMessage();
messagetxt.setMessage(“Flynummer”);

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

// Indsæt i session og ild regler
System.out.println(“indsætte i sessionen”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“før brænding regler”);
ksession.fireAllRules();
System.out.println(“efter brænding regler”);
ksession.dispose();
System.out.println(“efter disponere”);
}
}








* *Den anden fil er en 'DroolMessage.java’ Pojo klasse. Det holder de værdier, som de vigtigste java klassen er beskrevet ovenfor.

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;

// Builder
offentlig DroolMessage() {
System.out.println(“initialisering Message”);
}
// Setter og getter metoder
public String GetMessage() {
returmeddelelse;
}
public void setMessage(String besked) {
this.message = besked;
}
// testmetode til at teste regeludførelse
public void test(String test) {
System.out.println(“Parsing start-og slutposition: “+test);
}
}

** Følgende er en regel fil genereret af 'DroolExcelDemo.java’ klasse.

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

// regel værdier på B13, header på B7
regere “DroolExcelRule_13”
når
msg:DroolMessage(besked == “FlightCode”)

msg.test(“7,8”);
ende

** Nedenstående er et input Excel baseret regel fil til 'DroolExcelDemo.java’ klasse over.


15 thoughts on “Sådan bruger drools beslutning tabel i et regneark til at udføre regler?

    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,
    Kender du, hvordan du bruger regnearket API'er direkte at udføre reglerne?

    Thanks,
    Nithya

  4. Sunil

    Kan du give et DRL eksempel, hvor jeg kunne få data fra database og opdatere den kendsgerning .

  5. Ananya

    Hi,

    Kunne du deler excel ? Jeg ønsker at matche en række tal eller rettere søge streng i anden streng

    Thanks

  6. Shekhar Shaw

    Hej,
    Mens jeg forsøger at udføre, det er at hæve en fil ikke fundet fejl under behandling under linje.

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

    Kunne du foreslå, hvad jeg ellers skal gøre.

    Hilsen,
    Shekhar Shaw

    1. Kaushik Post author

      Hej Shekhar,

      Du er nødt til at sikre, at både .drl og .class filer kan. Tjek venligst og lad mig vide, hvis du står over for noget problem.

      Venligst mail mig @ 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