Como usar baba táboa de decisión en formato de folla de cálculo para realizar regras?

O código de exemplo a seguir ha describir o proceso de utilización de táboa de decisión para executar rules.There dous xeitos

un) Utilizar as APIs folla directamente para realizar as regras.
b) Converter a folla de Excel nun arquivo drl e despois executar as regras.

Vou describir o segundo proceso (b).







** A clase java principal é "DroolExcelDemo.java '. Primeiro ha converter a folla de Excel nun (.drl) arquivo e, a continuación, executar as regras.




package DROOLS;

java.io.BufferedWriter importación;
descargar java.io.FileInputStream;
java.io.FileNotFoundException importación;
java.io.FileWriter importación;
import java.io.IOException;
descargar java.io.InputStream;
java.util.Collection importación;

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

/**
* Esta clase pode crear un ficheiro drl da folla de Excel
* e, a continuación, executar as regras.
*/
public class DroolExcelDemo {
public Static final void main(final cadea[] args) {
// Crear constructor do coñecemento
finais de KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Crear un arquivo drl da folla Excel
InputStream é = null;
tentar {
é = new FileInputStream(“D:/Área de traballo / DroolsDemo / src / baba / DroolExcel.xls”);

} incorporarse (FileNotFoundException e) {
e.printStackTrace();
}
// Crear instancia da clase compilador
SpreadsheetCompiler sc = new SpreadsheetCompiler();

// Compilar Excel para xerar o (.drl) arquivo
StringBuffer drl = new StringBuffer(sc.compile(é, InputType.XLS));

// Insire valor dialecto en arquivo drl
drl.insert(drl.indexOf(“Drools”)+40,”dialecto ”MVEL ””+”\n”);

// Comprobe o ficheiro xerado drl
System.out.println(“Xerar arquivo DRL está amosando abaixo–: “);
System.out.println(drl);

// escribir cadea nun arquivo drl
tentar {
BufferedWriter out = BufferedWriter novo(FileWriter novo(“D:/Área de traballo / DroolsDemo / src / baba / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
incorporarse (IOException e){
System.out.println(“Excepción “);
}
// Espere antes de empregar o ficheiro drl na seguinte sección.
tentar {
Thread.sleep(10000);
} incorporarse (InterruptedException e) {
e.printStackTrace();
}
// Creación final do ficheiro drl da folla Excel

// Usando o ficheiro de DRL
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Comprobe o fabricante de erros
se ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder ten erros”);
System.out.println( kbuilder.getErrors().toString());
}
// obter os paquetes compilados (que son serializáveis)
PKGS Colección final = kbuilder.getKnowledgePackages();

// engadir paquetes para unha base de coñecemento (implantar os paquetes de coñecemento).
finais de KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

// Crear unha sesión stateful
ksession StatefulKnowledgeSession última kbase.newStatefulKnowledgeSession =();

// Establecer oíntes de eventos
ksession.addEventListener(DebugAgendaEventListener novo());
ksession.addEventListener(DebugWorkingMemoryEventListener novo());

// Crear unha mensaxe de texto
DroolMessage messagetxt = new DroolMessage();
messagetxt.setMessage(“Número voo”);

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

// Inserir regras de sesión e lume
System.out.println(“inserir en sesión”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“antes de disparar regras”);
ksession.fireAllRules();
System.out.println(“tras a queima regras”);
ksession.dispose();
System.out.println(“despois de descartar”);
}
}








* *O segundo arquivo é un DroolMessage.java '’ pojo clase. El mantén os valores definidos pola clase java principal descrito anteriormente.

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úblico DroolMessage() {
System.out.println(“inicializar mensaxe”);
}
// Métodos Setter e getter
public String getMessage() {
voltar mensaxe;
}
public void setMessage(Mensaxe cadea) {
this.message = mensaxe;
}
// Método de ensaio para probar a execución regra
proba public void(Proba de cadea) {
System.out.println(“Inicio análise e posición final: “+proba);
}
}

** A continuación é un ficheiro de regra xerada pola DroolExcelDemo.java '’ clase.

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

// valores de regras no B13, cabeceira no B7
gobernar “DroolExcelRule_13”
cando
mensaxe:DroolMessage(mensaxe == “FlightCode”)
despois
msg.test(“7,8”);
final

** Seguinte é a entrada de arquivo de Excel baseado en regras para o DroolExcelDemo.java '’ clase anterior.


15 thoughts on “Como usar baba táboa de decisión en formato de folla de cálculo para realizar regras?

    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.

      Grazas,
      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

    Grazas,
    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.

    Grazas
    /KP

  3. Nithya Kathiresan

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

    Grazas,
    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

    Grazas

  6. Shekhar Shaw

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

    // Usando o ficheiro de 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