Il codice di esempio riportato di seguito verrà descritto il processo di utilizzo tabella di decisione di eseguire rules.There sono due modi
un) Utilizzare le API di foglio di calcolo direttamente per l'esecuzione delle norme.
b) Convertire il foglio di lavoro Excel in un file DRL e quindi eseguire le regole.
Mi limiterò a descrivere il secondo processo (b).
** La classe principale java è 'DroolExcelDemo.java'. In primo luogo permette di convertire il foglio excel in un (.DRL) file e quindi eseguire le regole.
package DROOLS;
importazione java.io.BufferedWriter;
importare java.io.FileInputStream;
importazione java.io.FileNotFoundException;
importazione java.io.FileWriter;
importazione java.io.IOException;
importare java.io.InputStream;
importazione java.util.Collection;
importazione org.drools.KnowledgeBase;
importazione org.drools.KnowledgeBaseFactory;
importazione org.drools.builder.KnowledgeBuilder;
importazione org.drools.builder.KnowledgeBuilderFactory;
importare org.drools.builder.ResourceType;
importazione org.drools.decisiontable.InputType;
importazione org.drools.decisiontable.SpreadsheetCompiler;
importare org.drools.definition.KnowledgePackage;
importazione org.drools.event.rule.DebugAgendaEventListener;
importazione org.drools.event.rule.DebugWorkingMemoryEventListener;
importazione org.drools.io.ResourceFactory;
importazione org.drools.runtime.StatefulKnowledgeSession;
/**
* Questa classe viene creato un file drl da foglio Excel
* e quindi eseguire le regole.
*/
public class DroolExcelDemo {
public static void main finale(final String[] args) {
// Creazione di Knowledge Builder
finale KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
// Crea file DRL da foglio excel
InputStream è = null;
provare {
è = new FileInputStream(“D:/Postazione di lavoro / DroolsDemo / src / Drools / DroolExcel.xls”);
} prendere (FileNotFoundException e) {
e.printStackTrace();
}
// Crea istanza di classe del compilatore
SpreadsheetCompiler sc = new SpreadsheetCompiler();
// Compilare il excel per generare il (.DRL) file
StringBuffer DRL = new StringBuffer(sc.compile(è, InputType.XLS));
// Inserire il valore dialetto nel file drl
drl.insert(drl.indexOf(“Drools”)+40,”dialetto ”MVEL ””+”\n”);
// Controllare il file generato DRL
System.out.println(“Genera file di DRL viene visualizzato sotto–: “);
System.out.println(DRL);
// scrittura stringa in un file di DRL
provare {
BufferedWriter out = BufferedWriter nuovo(FileWriter nuovo(“D:/Postazione di lavoro / DroolsDemo / src / Drools / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
prendere (IOException e){
System.out.println(“Eccezione “);
}
// Attendere prima di utilizzare il file DRL nella sezione successiva.
provare {
Thread.sleep(10000);
} prendere (InterruptedException e) {
e.printStackTrace();
}
// Creazione Fine del file drl da foglio excel
// Utilizzo di file di DRL
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );
// Controllare il costruttore di eventuali errori
se ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder contiene errori”);
System.out.println( kbuilder.getErrors().toString());
}
// ottenere i pacchetti compilati (che sono serializzabili)
pkgs raccolta finale = kbuilder.getKnowledgePackages();
// aggiungere i pacchetti a un knowledge (distribuire i pacchetti di conoscenza).
finale KnowledgeBase KBase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);
// Creazione di sessione stateful
ksession StatefulKnowledgeSession finale = kbase.newStatefulKnowledgeSession();
// Impostare listener di eventi
ksession.addEventListener(Debug EventListener nuova agenda());
ksession.addEventListener(DebugWorkingMemoryEventListener nuovo());
// Creazione di testo del messaggio
DroolMessage messageTxt = new DroolMessage();
messagetxt.setMessage(“Numero del volo”);
DroolMessage messagetxt1 = new DroolMessage();
messagetxt1.setMessage(“FlightCode”);
// Inserire in regole di sessione e il fuoco
System.out.println(“inserire in sessione”);
ksession.insert(messageTxt);
ksession.insert(messagetxt1);
System.out.println(“prima di sparare le regole”);
ksession.fireAllRules();
System.out.println(“dopo la cottura regole”);
ksession.dispose();
System.out.println(“dopo smaltire”);
}
}
* *Il secondo file è un 'DroolMessage.java’ POJO classe. Contiene i valori fissati dalla classe principale java sopra descritto.
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;
// Costruttore
pubblico DroolMessage() {
System.out.println(“inizializzazione Messaggio”);
}
// Setter e getter metodi
public String getMessage() {
restituisce il messaggio;
}
public void setMessage(String messaggio) {
this.message = messaggio;
}
// Metodo di prova per verificare l'esecuzione regola
vuoto test pubblico(Stringa di prova) {
System.out.println(“Analisi di inizio e fine: “+test);
}
}
** Di seguito è riportato un file di regole generato dal '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
// I valori delle regole a B13, intestazione a B7
regola “DroolExcelRule_13”
quando
msg:DroolMessage(messaggio == “FlightCode”)
poi
msg.test(“7,8”);
fine
** Di seguito è riportato l'input basato su file di Excel regola al 'DroolExcelDemo.java’ classe superiore.
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.
Grazie,
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
Grazie,
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.
Grazie
/KP
Hi,
Sapete come utilizzare direttamente le API di foglio elettronico per l'esecuzione delle norme?
Grazie,
Nithya
ti invitiamo a inviare il file excel ,Voglio correre e ottenere il risultato ..??
La prego di fornire un esempio di DRL dove ho potuto ottenere i dati dal database e aggiornare il fatto .
Ciao Sunil,
È possibile utilizzare lo stesso programma con una piccola modifica.
Perfavore contattami @ techalpineit@gmail.com per ulteriori informazioni.
Grazie
/KP
Hi,
La prego di condividere l'excel ? Voglio abbinare una stringa di numeri, o meglio la ricerca della stringa in un'altra stringa
Grazie
Ciao Ananya,
È possibile utilizzare gli stessi dati come indicato nel file di esempio e fare una per te.
Si prega di mail me @ techalpineit@gmail.com per ulteriori informazioni.
Grazie
/KP
Ciao,
Mentre sto provando ad eseguire, si sta sollevando un file non trovato errore durante l'elaborazione di sotto della linea.
// Utilizzo di file di DRL
kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );
La prego di suggerire che altro devo fare.
grazie,
Shekhar Shaw
Ciao Shekhar,
È necessario assicurarsi che sia il .drl e file .class sono disponibili. Si prega di controllare e fatemi sapere se dovete affrontare qualsiasi problema.
Si prega di mail me @ techalpineit@gmail.com
Grazie
Kaushik
Ciao
è molto buono blog ho eseguito. ma voglio generare modello di file regola automaticamente senza l'aggiunta di alcun file di regola.