Како да го користите drools одлука табелата во табела формат да се изврши правила?

Следниот пример кодот ќе се опише процесот на користење на одлука маса за да изврши rules.There два начина

на) Користете го шири лист API-јата директно да се изврши правилата.
б) Конвертирате ширењето ексел лист во датотека drl а потоа изврши правила.

Јас ќе се опише вториот процес (б).







** Главната Java класа е "DroolExcelDemo.java. Прво тоа ќе се конвертира лист на Excel во (.drl) поднесе и потоа изврши правила.




package DROOLS;

увоз java.io.BufferedWriter;
увоз java.io.FileInputStream;
увоз java.io.FileNotFoundException;
увоз java.io.FileWriter;
увоз java.io.IOException;
увоз java.io.InputStream;
увоз java.util.Collection;

увоз org.drools.KnowledgeBase;
увоз org.drools.KnowledgeBaseFactory;
увоз org.drools.builder.KnowledgeBuilder;
увоз org.drools.builder.KnowledgeBuilderFactory;
увоз org.drools.builder.ResourceType;
увоз org.drools.decisiontable.InputType;
увоз org.drools.decisiontable.SpreadsheetCompiler;
увоз org.drools.definition.KnowledgePackage;
увоз org.drools.event.rule.DebugAgendaEventListener;
увоз org.drools.event.rule.DebugWorkingMemoryEventListener;
увоз org.drools.io.ResourceFactory;
увоз org.drools.runtime.StatefulKnowledgeSession;

/**
* Оваа класа ќе се создаде датотека drl од ексел лист
* а потоа изврши правила.
*/
јавни класа DroolExcelDemo {
јавните статички конечниот void main(конечниот Стринг[] аргументи) {
// Креирај знаење градител
конечниот KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Креирај drl датотека од ексел лист
InputStream е = нула;
обидете {
е = new FileInputStream(“D:/Простор / DroolsDemo / src / DROOLS / DroolExcel.xls”);

} фати (FileNotFoundException е) {
e.printStackTrace();
}
// Создаде компајлерот класа пример
SpreadsheetCompiler АД = new SpreadsheetCompiler();

// Компајлирање на Excel за да ја генерира (.drl) датотека
StringBuffer drl = new StringBuffer(sc.compile(е, InputType.XLS));

// Вметнете дијалект вредност во drl датотека
drl.insert(drl.indexOf(“DROOLS”)+40,”дијалект ”MVEL ””+”\n”);

// Проверете генерирана drl датотека
System.out.println(“Генерирање DRL датотека се покажува подолу–: “);
System.out.println(drl);

// пишување стринг во датотека drl
обидете {
BufferedWriter надвор = new BufferedWriter(нова FileWriter(“D:/Простор / DroolsDemo / src / DROOLS / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
фати (IOException e){
System.out.println(“Исклучок “);
}
// Чекаат пред да го користите датотека drl во следниот дел.
обидете {
Thread.sleep(10000);
} фати (InterruptedException е) {
e.printStackTrace();
}
// Крајот создавање на drl датотека од ексел лист

// Користење DRL датотека
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Проверете градител за грешки
ако ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder има грешки”);
System.out.println( kbuilder.getErrors().toString());
}
// добие Составувач пакети (кои се Serializable)
конечниот колекција pkgs = kbuilder.getKnowledgePackages();

// додадете пакети на База (распоредување на знаење пакети).
конечниот База kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

// Креирај постојани сесија
конечниот StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

// Постави настан слушатели
ksession.addEventListener(Debug нова агенда EventListener());
ksession.addEventListener(нови DebugWorkingMemoryEventListener());

// Создаде текстуална порака
DroolMessage messagetxt = new DroolMessage();
messagetxt.setMessage(“Број на лет”);

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

// Вметнете во сесија и оган правила
System.out.println(“вметнете во сесија”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“пред правилата за отпуштање”);
ksession.fireAllRules();
System.out.println(“по правилата за отпуштање”);
ksession.dispose();
System.out.println(“по наредба”);
}
}








* *Вториот фајл е "DroolMessage.java’ POJO класа. Тој има вредности поставени од страна на главните Јава класа што е опишано погоре.

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;

// Градителот
јавни DroolMessage() {
System.out.println(“иницијализацијата порака”);
}
// Сетер и копач методи
јавни Стринг getMessage() {
врати порака;
}
јавни празнина setMessage(Стринг порака) {
this.message = порака;
}
// тест метод за тестирање на владеењето извршување
јавни празнина тест(Стринг тест) {
System.out.println(“Парсирање почеток и крај позиција: “+тест);
}
}

** Ова е правило датотека генерирана од страна на "DroolExcelDemo.java’ класа.

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

// правило вредности на Б13, насловот на B7
владее “DroolExcelRule_13”
кога
msg:DroolMessage(порака == “FlightCode”)
тогаш
msg.test(“7,8”);
крајот

** Следниве е влез ексел базирани правило датотеката на 'DroolExcelDemo.java’ класа погоре.


15 thoughts on “Како да го користите drools одлука табелата во табела формат да се изврши правила?

    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
      /КП

    1. kaushik Post author

      Hi Aakash,

      Please send me your exact requirement. I will try my best to help you out.

      благодарение,
      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

    благодарение,
    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.

    благодарение
    /КП

  3. Nithya Kathiresan

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

    благодарение,
    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

    благодарение

  6. Shekhar Shaw

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

    // Користење DRL датотека
    kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

    Could you please suggest what else I need to do.

    Regards,
    Shekhar Shaw

    1. kaushik Post author

      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

      благодарение
      Kaushik

  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