Hur du använder dreglar beslut tabellen i kalkylbladsformat att utföra regler?

Följande exempelkod kommer att beskriva processen med hjälp av beslut tabellen att genomföra rules.There finns två sätt

en) Använd API kalkylark direkt att verkställa reglerna.
b) Konvertera Excel kalkylark till en DRL-fil och sedan köra regler.

Jag kommer att beskriva den andra processen (b).







** Den huvudsakliga Java-klass är "DroolExcelDemo.java". Först omvandlar Excel-ark till en (.DRL) fil och sedan köra regler.




package DROOLS;

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

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

/**
* Denna klass kommer att skapa en DRL-fil från Excel-ark
* och sedan köra regler.
*/
public class DroolExcelDemo {
public static slutlig void main(sista String[] args) {
// Skapa Knowledge Builder
sista KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Skapa DRL-fil från Excel-ark
InputStream är = null;
prova {
är = ny FileInputStream(“D:/Arbetsyta / DroolsDemo / src / dreglar / DroolExcel.xls”);

} fånga (FileNotFoundException e) {
e.printStackTrace();
}
// Skapa instans kompilator klass
SpreadsheetCompiler fm = ny SpreadsheetCompiler();

// Kompilera excel att generera (.DRL) fil
StringBuffer DRL = ny StringBuffer(sc.compile(är, InputType.XLS));

// Sätt dialekt värde i DRL fil
drl.insert(drl.indexOf(“Dreglar”)+40,”dialekt ”mvel ””+”\n”);

// Kontrollera genererade DRL-filen
System.out.println(“Generera DRL fil Nedan visas–: “);
System.out.println(DRL);

// skriver sträng till en DRL-fil
prova {
BufferedWriter ut = nya BufferedWriter(nya FileWriter(“D:/Arbetsyta / DroolsDemo / src / dreglar / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
fånga (IOException e){
System.out.println(“Undantag “);
}
// Vänta innan använder DRL-filen i nästa avsnitt.
prova {
Thread.sleep(10000);
} fånga (InterruptedException e) {
e.printStackTrace();
}
// Slut skapa DRL-fil från Excel-ark

// Använda DRL-fil
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Kontrollera byggare för fel
om ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder har fel”);
System.out.println( kbuilder.getErrors().toString());
}
// få de kompilerade paket (vilka är serializable)
slutliga Collection PKGS = kbuilder.getKnowledgePackages();

// lägga till paket till en kunskapsbas (distribuera kunskap paketen).
sista KnowledgeBase KBase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(PKGS);

// Skapa tillståndskänslig session
sista StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

// Ställ händelseavlyssnare
ksession.addEventListener(nya DebugAgendaEventListener());
ksession.addEventListener(nya DebugWorkingMemoryEventListener());

// Skapa meddelandetext
DroolMessage messagetxt = ny DroolMessage();
messagetxt.setMessage(“FlightNumber”);

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

// Sätt in session och eld regler
System.out.println(“infoga i sessionen”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“innan bränning regler”);
ksession.fireAllRules();
System.out.println(“efter bränning regler”);
ksession.dispose();
System.out.println(“efter avyttra”);
}
}








* *Den andra filen är en "DroolMessage.java’ Pojo klass. Den rymmer de värden som de viktigaste Java-klass som beskrivs ovan.

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;

// Builder
offentliga DroolMessage() {
System.out.println(“initiera Meddelande”);
}
// Setter och getter metoder
public String getMessage() {
svarsmeddelande;
}
public void setMessage(String meddelande) {
this.message = meddelande;
}
// testmetod för att testa regeln utförande
public void testet(String testet) {
System.out.println(“Parsing start-och slutpunkt: “+prov);
}
}

** Följande är en regel fil som skapats av "DroolExcelDemo.java’ klass.

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

// regel värden vid B13, rubrik på B7
härska “DroolExcelRule_13”
när
msg:DroolMessage(Meddelandet == “FlightCode”)
sedan
msg.test(“7,8”);
slut

** Följande är ingången Excel-baserad regel filen till "DroolExcelDemo.java’ klass ovanför.


15 thoughts on “Hur du använder dreglar beslut tabellen i kalkylbladsformat att utföra regler?

    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. sunil

    Kan du ge en DRL exempel där jag kunde få data från databasen och uppdatera det faktum .

  4. Ananya

    Hi,

    Kan du dela excel ? Jag vill matcha en sträng av siffror eller snarare söka sträng i en annan sträng

    Thanks

  5. Shekhar Shaw

    Hallå,
    Medan jag försöker köra, det höjer en fil hittades inte fel vid bearbetning under linjen.

    // Använda DRL-fil
    kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );

    Kan du föreslå vad jag behöver göra.

    Hälsningar,
    Shekhar Shaw

  6. 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