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.
Hi, could you send me DroolExcel.xls file?
thank you!
Hi Daniel,
Thanks for your interest. Please let me know your exact requirement. I will send you the excel sheet.
Cheers
/KP
Hi, could you send me DroolExcel.xls file? I just want to run this code and want to get result
my email
dahalram20@gmail.com
Hi Aakash,
Please send me your exact requirement. I will try my best to help you out.
Grazas,
Techalpine
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
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
Hi,
Do you know how to use the spread sheet APIs directly to execute the rules?
Grazas,
Nithya
can you please send the excel file ,i want to run and get the result..??
Could you please provide a DRL example where I could get the data from Database and update the fact .
Hi Sunil,
You can use the same program with a little modification.
Please contact me @ techalpineit@gmail.com for further help.
Grazas
/KP
Hi,
Could you please share the excel ? I want to match a string of numbers or rather search string in another string
Grazas
Hi Ananya,
You can use the same data as shown in the sample file and make one for yourself.
Please mail me @ techalpineit@gmail.com for further help.
Grazas
/KP
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
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
Grazas
Kaushik
hi
it is very good blog i executed. but i want to generate Rule file template automatically without adding any Rule file.