Com utilitzar la taula baveja decisió en format de full de càlcul per executar regles?

El codi d'exemple següent es descriu el procés d'utilització de la taula de decisions per executar rules.There dues formes

01:00) Utilitzeu l'API de full de càlcul directament per executar les normes.
b) Converteix el full de càlcul d'Excel en un arxiu DRL i després executar les regles.

Vaig a descriure el segon procés (b).







** La principal classe java és 'DroolExcelDemo.java'. Primer convertirà el full de càlcul d'Excel en un (.DRL) presentar i executar les normes.




package DROOLS;

importació java.io.BufferedWriter;
importar java.io.FileInputStream;
importació java.io.FileNotFoundException;
importació java.io.FileWriter;
importació java.io.IOException;
importar java.io.InputStream;
importació java.util.Collection;

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

/**
* Aquesta classe crearà un arxiu de full d'Excel DRL
* i després executar les regles.
*/
públic DroolExcelDemo classe {
public static final void main(final String[] args) {
// Crear constructor de coneixement
últim KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Crear arxiu DRL de fulla d'Excel
InputStream is = nul;
tractar de {
= New FileInputStream és(“D:/Espai de treball / DroolsDemo / src / baveja / DroolExcel.xls”);

} agafar (FileNotFoundException i) {
e.printStackTrace();
}
// Crear instància compilador classe
SpreadsheetCompiler sc = new SpreadsheetCompiler();

// Compile l'Excel per generar el (.DRL) expedient
DRL = new StringBuffer StringBuffer(sc.compile(és, InputType.XLS));

// Inserir valor en dialecte arxiu DRL
drl.insert(drl.indexOf(“Baveja”)+40,”dialecte ”MVEL ””+”\n”);

// Comproveu el fitxer generat DRL
System.out.println(“Generar arxiu DRL mostra a continuació–: “);
System.out.println(DRL);

// escrit cadena en un arxiu DRL
tractar de {
BufferedWriter fora = BufferedWriter nou(FileWriter nou(“D:/Espai de treball / DroolsDemo / src / baveja / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
agafar (IOException i){
System.out.println(“Excepció “);
}
// Esperar abans d'utilitzar l'arxiu DRL a la secció següent.
tractar de {
Thread.sleep(10000);
} agafar (InterruptedException i) {
e.printStackTrace();
}
// Fi creació de l'arxiu DRL de fulla d'Excel

// Utilitzant l'arxiu DRL
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Comproveu el constructor dels errors
si ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder té errors”);
System.out.println( kbuilder.getErrors().toString());
}
// obtenir els paquets compilats (que són serializables)
PKGS finals Collection = kbuilder.getKnowledgePackages();

// afegir els paquets a una base de coneixement (desplegar els paquets de coneixement).
última base de coneixements KBase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(Pkgs);

// Crear sessió amb estat
ksession StatefulKnowledgeSession final = kbase.newStatefulKnowledgeSession();

// Establir els detectors d'esdeveniments
ksession.addEventListener(DebugAgendaEventListener nou());
ksession.addEventListener(DebugWorkingMemoryEventListener nou());

// Crear un missatge de text
DroolMessage messageTxt = new DroolMessage();
messagetxt.setMessage(“Nombre de vol”);

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

// Inserir en les normes de sessió i foc
System.out.println(“inserir en sessió”);
ksession.insert(messageTxt);
ksession.insert(messagetxt1);
System.out.println(“abans de disparar normes”);
ksession.fireAllRules();
System.out.println(“després de la cocció normes”);
ksession.dispose();
System.out.println(“després de disposar”);
}
}








* *El segon arxiu és un DroolMessage.java '’ POJO classe. Conté els valors establerts per la principal classe java descrit anteriorment.

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;

// Constructor
públic DroolMessage() {
System.out.println(“Missatge d'inicialització”);
}
// Mètodes setter i getter
getMessage cadena pública() {
tornar missatge;
}
public void setMessage(Cadena missatge) {
this.mensaje = Missatge;
}
// Mètode d'assaig per provar l'execució de la regla
prova public void(Prova del fil) {
System.out.println(“De anàlisi inicial i la posició final: “+prova);
}
}

** A continuació es presenta un arxiu de regles generades pel DroolExcelDemo.java '’ classe.

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

// valors de regles a B13, encapçalat en B7
governar “DroolExcelRule_13”
quan
MSG:DroolMessage(missatge == “FlightCode”)
llavors
msg.test(“7,8”);
final

** A continuació es presenta l'entrada d'arxiu d'Excel basat en normes per a la DroolExcelDemo.java '’ classe per sobre de.


15 thoughts on “Com utilitzar la taula baveja decisió en format de full de càlcul per executar regles?

    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

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

    // Utilitzant l'arxiu DRL
    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