Hoe te kwijlt beslissing tabel in spreadsheet formaat om regels uit te voeren?

In het volgende voorbeeld code zal het proces van het gebruik beslissing tabel rules.There voeren beschrijven zijn twee manieren

een) Gebruik de spreadsheet API's direct aan de regels uit te voeren.
b) Converteer de excel spread sheet in een MVO-bestand en voer dan de regels.

Ik zal beschrijven het tweede proces (b).







** De belangrijkste Java-klasse is 'DroolExcelDemo.java'. Eerst zal de excel sheet te zetten in een (.DRL) bestand en voer dan de regels.




package DROOLS;

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

/**
* Deze klasse maakt een drl bestand van excel sheet
* en voer dan de regels.
*/
public class DroolExcelDemo {
public static final void main(laatste String[] args) {
// Maak kennis bouwer
laatste KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Maak DRL bestand van excel sheet
Inputlijn is = null;
proberen {
is = new FileInputStream(“D:/Werkruimte / DroolsDemo / src / kwijlt / DroolExcel.xls”);

} vangen (FileNotFoundException e) {
e.printStackTrace();
}
// Maak compiler klasse-instantie
SpreadsheetCompiler sc = new SpreadsheetCompiler();

// Compileer de Excel het genereren van de (.DRL) bestand
StringBuffer DRL = new StringBuffer(sc.compile(is, InputType.XLS));

// Plaats dialect waarde in DRL-bestand
drl.insert(drl.indexOf(“Kwijlt”)+40,”dialect ”MVEL ””+”\n”);

// Controleer de gegenereerde DRL-bestand
System.out.println(“Genereer DRL-bestand wordt weergegeven onder–: “);
System.out.println(DRL);

// het schrijven van string in een MVO-bestand
proberen {
BufferedWriter uit = nieuwe BufferedWriter(nieuwe FileWriter(“D:/Werkruimte / DroolsDemo / src / kwijlt / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
vangen (IOException e){
System.out.println(“Uitzondering “);
}
// Wachten alvorens de DRL bestand in de volgende sectie.
proberen {
Thread(10000);
} vangen (InterruptedException e) {
e.printStackTrace();
}
// Einde creatie van DRL bestand van excel sheet

// Met behulp van DRL-bestand
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Controleer de bouwer op fouten
indien ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder heeft fouten”);
System.out.println( kbuilder.getErrors().toString());
}
// krijgen de gecompileerde pakketten (die serializable)
laatste Collection pkgs = kbuilder.getKnowledgePackages();

// voeg de pakketten aan een kennisbank (implementeren van de kennis pakketten).
laatste KnowledgeBase KBase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

// Maak stateful session
laatste StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

// Stel gebeurtenislisteners
ksession.addEventListener(nieuwe DebugAgendaEventListener());
ksession.addEventListener(nieuwe DebugWorkingMemoryEventListener());

// Maak tekst van het bericht
DroolMessage messagetxt = new DroolMessage();
messagetxt.setMessage(“Vluchtnummer”);

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

// In te voegen in sessie en vuur regels
System.out.println(“in te voegen in sessie”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“voor de ontploffing regels”);
ksession.fireAllRules();
System.out.println(“na het bakken regels”);
ksession.dispose();
System.out.println(“Effectieve kenmerken”);
}
}








* *Het tweede bestand is een 'DroolMessage.java’ POJO klasse. Het houdt de waarden die de belangrijkste Java-klasse hierboven beschreven.

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;

// Bouwer
openbare DroolMessage() {
System.out.println(“initialiseren Bericht”);
}
// Setter en getter methoden
public String GetMessage() {
terug bericht;
}
public void setMessage(String message) {
this.message = bericht;
}
// testmethode is om de regel uitvoering te testen
public void-test(String-test) {
System.out.println(“Parseren van begin-en eindpositie: “+test);
}
}

** Hieronder volgt een rule-bestand gegenereerd door de '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 waarden bij B13, header bij B7
regeren “DroolExcelRule_13”
wanneer
msg:DroolMessage(bericht == “FlightCode”)
dan
msg.test(“7,8”);
einde

** Hieronder vindt u de ingang Excel gebaseerde regel bestand naar de 'DroolExcelDemo.java’ hogere klasse.


15 thoughts on “Hoe te kwijlt beslissing tabel in spreadsheet formaat om regels uit te voeren?

    1. kaushik Bericht van de auteur

      Hi Daniel,

      Thanks for your interest. Please let me know your exact requirement. I will send you the excel sheet.

      Cheers
      /KP

    1. kaushik Bericht van de auteur

      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 Bericht van de auteur

    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,
    Weet u hoe u de spread sheet API's direct te gebruiken om de regels uit te voeren?

    Thanks,
    Nithya

  4. sunil

    Kunt u te voorzien van een MVO voorbeeld waar ik de gegevens kunnen krijgen van database en update van het feit .

  5. Ananya

    Hi,

    Kunt u het aandeel van de excel ? Ik wil een reeks cijfers overeenkomen of liever zoekterm in een andere reeks

    Thanks

  6. Shekhar Shaw

    Hallo,
    Terwijl ik probeer uit te voeren, het is het verhogen van een bestand niet gevonden fout bij het verwerken van onder lijn.

    // Met behulp van DRL-bestand
    kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );

    Kunt u raden wat ik moet doen.

    Regards,
    Shekhar Shaw

    1. kaushik Bericht van de auteur

      Hallo Shekhar,

      Je moet ervoor zorgen dat zowel de .drl en .class bestanden beschikbaar. Kijk dan op en laat me weten als je een probleem geconfronteerd.

      Mail me @ techalpineit@gmail.com

      Thanks
      Kaushik

  7. Rahul Pandey

    Hoi
    het is zeer goed blog i uitgevoerd. maar ik wil Rule bestand template automatisch genereren zonder toevoeging van Rule bestand.

============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share