Comment utiliser la table de décision bave au format tableur pour exécuter des règles?

L'exemple de code suivant décrit le processus d'utilisation de table de décision à exécuter rules.There ya deux façons

un) Utilisez les API tableur directement à l'exécution des règles.
b) Autre de la feuille de calcul Excel dans un fichier DRL, puis d'exécuter les règles.

Je vais décrire le second processus (b).







** La classe principale java est «DroolExcelDemo.java. D'abord, il vous permet de convertir la feuille Excel dans un (.drl) déposer, puis d'exécuter les règles.




package DROOLS;

java.io.BufferedWriter importation;
importer java.io.FileInputStream;
java.io.FileNotFoundException importation;
java.io.FileWriter importation;
java.io.IOException importation;
importer java.io.InputStream;
import java.util.Collection;

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

/**
* Cette classe va créer un fichier de feuille de calcul Excel drl
* puis exécuter les règles.
*/
public class DroolExcelDemo {
public static void finale principale(final String[] args) {
// Créer constructeur connaissances
finale KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Créer un fichier de feuille de calcul Excel drl
InputStream is = null;
essayer {
est = new FileInputStream(“D:/Espace de travail / DroolsDemo / src / DROOLS / DroolExcel.xls”);

} attraper (FileNotFoundException e) {
e.printStackTrace();
}
// Créer instance de la classe du compilateur
SpreadsheetCompiler sc = new SpreadsheetCompiler();

// Compilez le Excel pour générer le (.drl) dossier
StringBuffer drl = new StringBuffer(sc.compile(est, InputType.XLS));

// Insérer la valeur dans le fichier dialecte drl
drl.insert(drl.indexOf(“DROOLS”)+40,”dialecte ”MVEL ””+”\n”);

// Vérifiez le fichier généré drl
System.out.println(“Générer le fichier DRL montre ci-dessous–: “);
System.out.println(drl);

// écrit chaîne dans un fichier drl
essayer {
BufferedWriter out = BufferedWriter nouvelle(FileWriter nouvelle(“D:/Espace de travail / DroolsDemo / src / DROOLS / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
attraper (IOException e){
System.out.println(“Exception “);
}
// Attendez avant d'utiliser le fichier drl dans la section suivante.
essayer {
Thread.sleep(10000);
} attraper (InterruptedException e) {
e.printStackTrace();
}
// Fin de la création du fichier de feuille de calcul Excel drl

// Utilisation du fichier DRL
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Vérifiez le constructeur pour les erreurs
si ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder comporte des erreurs”);
System.out.println( kbuilder.getErrors().toString());
}
// obtenir les paquets compilés (qui sont sérialisables)
pqts Collection finales = kbuilder.getKnowledgePackages();

// ajouter les paquets à une base de connaissances (déployer les packages de connaissances).
dernière base de connaissances KBase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

// Créer une session stateful
ksession StatefulKnowledgeSession final = kbase.newStatefulKnowledgeSession();

// Set d'écouteurs d'événement
ksession.addEventListener(DebugAgendaEventListener nouvelle());
ksession.addEventListener(DebugWorkingMemoryEventListener nouvelle());

// Créer un message texte
DroolMessage messagetxt = new DroolMessage();
messagetxt.setMessage(“Numéro du vol”);

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

// Insérez-le dans les règles de session et le feu
System.out.println(“insérez-la dans la session”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“avant de tirer des règles”);
ksession.fireAllRules();
System.out.println(“après la cuisson des règles”);
ksession.dispose();
System.out.println(“après en disposer”);
}
}








* *Le second fichier est un DroolMessage.java '’ pojo classe. Il détient les valeurs fixées par la classe principale java décrit ci-dessus.

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;

// Constructeur
publique DroolMessage() {
System.out.println(“initialiser un message”);
}
// Méthodes setter et getter
public String getMessage() {
retourner un message;
}
public void setMessage(String message) {
this.message = message;
}
// méthode d'essai pour tester l'exécution des règles
public void test de(Chaîne test) {
System.out.println(“Commence l'analyse et la position finale: “+test);
}
}

** Voici un fichier de règles généré par le 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

// les valeurs des règles à B13, tête à B7
exclure “DroolExcelRule_13”
quand
msg:DroolMessage(message == “FlightCode”)
puis
msg.test(“7,8”);
fin

** Voici l'entrée de fichier Excel à base de règles à l'DroolExcelDemo.java '’ classe au-dessus.


15 thoughts on “Comment utiliser la table de décision bave au format tableur pour exécuter des règles?

    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,
    Savez-vous comment utiliser les API de feuille de calcul directement à exécuter les règles?

    Thanks,
    Nithya

  4. Sunil

    Pourriez-vous s'il vous plaît donner un exemple DRL où je pourrais obtenir les données de base de données et mettre à jour le fait .

  5. Ananya

    Hi,

    Pourriez-vous s'il vous plaît partager l'Excel ? Je veux faire correspondre une chaîne de nombres ou plutôt rechercher la chaîne dans une autre chaîne

    Thanks

    1. kaushik Post author

      Salut Ananya,

      Vous pouvez utiliser les mêmes données, comme indiqué dans le fichier de l'échantillon et en faire un pour vous.

      S'il vous plaît écrivez-moi @ techalpineit@gmail.com pour plus d'aide.

      Thanks
      /KP

  6. Shekhar Shaw

    Salut,
    Alors que je suis en train d'exécuter, il soulève un fichier non trouvé erreur lors du traitement en dessous du seuil.

    // Utilisation du fichier DRL
    kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );

    Pourriez-vous s'il vous plaît suggérer ce que je dois faire.

    salutations,
    Shekhar Shaw

    1. kaushik Post author

      Bonjour Shekhar,

      Vous devez vous assurer que les deux .drl et les fichiers .class sont disponibles. S'il vous plaît vérifier et laissez-moi savoir si vous rencontrez un problème.

      S'il vous plaît écrivez-moi @ techalpineit@gmail.com

      Thanks
      Kaushik

  7. Rahul Pandey

    salut
    il est bon blog très i exécuté. mais je veux générer automatiquement modèle de fichier de règle sans ajout de fichier règle.

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share