Как да използвате лигави таблица на решение формат на електронна таблица за изпълнение на правилата?

Следния код пример ще опиша процеса за използване решение таблица, за да изпълни rules.There два начина

на) Използвайте APIs лист разпространението директно към изпълнение на правилата.
б) Конвертиране на Excel разпространението лист във файл 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 от лист на Excel
* и после за изпълнението на правилата.
*/
обществени клас DroolExcelDemo {
публично статично окончателното невалидни основни(окончателно String[] опцията) {
// Създаване на строител на знания
окончателно KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Създаване DRL файл от лист на Excel
InputStream е = нула;
опитвам {
= нови FileInputStream(“D:/Workspace / DroolsDemo / SRC / лигави / DroolExcel.xls”);

} улов (FileNotFoundException д) {
e.printStackTrace();
}
// Например клас компилатор
SpreadsheetCompiler SC = SpreadsheetCompiler();

// Компилирайте Excel за генериране на (.DRL) досие
StringBuffer DRL = StringBuffer(sc.compile(е, InputType.XLS));

// Поставете стойност диалект в досието DRL
drl.insert(drl.indexOf(“Лигави”)+40,”диалект ”mvel ””+”\N”);

// Проверете файл DRL
System.out.println(“Генериране DRL файл се показва по-долу–: “);
System.out.println(DRL);

// писане на низ във файл DRL
опитвам {
BufferedWriter от = BufferedWriter(нова FileWriter(“D:/Workspace / DroolsDemo / SRC / лигави / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
улов (IOException д){
System.out.println(“Изключение “);
}
// Изчакайте, преди да използвате DRL файла в следващия раздел.
опитвам {
Thread.sleep(10000);
} улов (InterruptedException д) {
e.printStackTrace();
}
// Край създаването на DRL файл от лист на Excel

// Използването 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);

// Създаване на сесията Stateful
крайното StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

// Задайте събитие слушателите
ksession.addEventListener(Debug нов дневен ред EventListener());
ksession.addEventListener(нова DebugWorkingMemoryEventListener());

// Създаване на текстово съобщение
DroolMessage messagetxt = DroolMessage();
messagetxt.setMessage(“Номер на полета”);

DroolMessage messagetxt1 = 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 клас. Той притежава стойностите, определени от главния клас на Java, описани по-горе.

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(String съобщение) {
this.message = съобщение;
}
// метод за изпитване, за да провери изпълнението правило
обществени невалидни тест(String тест) {
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

// върховенството стойности на B13, заглавието на B7
произнася “DroolExcelRule_13”
когато
MSG:DroolMessage(съобщение == “FlightCode”)
след това
msg.test(“7,8”);
край

** Следва входа превъзхождат основана на върховенството на файл, за да "DroolExcelDemo.java’ класа над.


15 мисли за "Как да използвате лигави таблица на решение формат на електронна таблица за изпълнение на правилата?

  1. Daniel

    Здрасти, може ли да ми изпратите DroolExcel.xls файл?

    Благодаря!

    1. kaushik Post автор

      Hi Daniel,

      Благодаря за проявения интерес. Моля да ме уведомите точна вашите изисквания. Аз ще ви изпратя листа ексел.

      Наздраве
      /KP

  2. Aakash

    Здрасти, може ли да ми изпратите DroolExcel.xls файл? Аз просто искам да изпълня този код и искате да получите резултат

    моя имейл
    dahalram20@gmail.com

    1. kaushik Post автор

      Hi Aakash,

      Моля, изпратете ми точно на вашите изисквания. Аз ще направя всичко възможно, за да ви помогне.

      Благодаря,
      Techalpine

  3. Manideepa

    Здрасти,
    Може ли да споделите файла DroolExcel.xls?
    Исках да изпълни тази програма. Аз съм нов в лигави и иска да разбере как работи.
    Моят имейл адрес: b4umani2003@gmail.com

    Благодаря,
    Mani

  4. kaushik Post автор

    Hi Manideepa,

    Пробата Excel вече е показано на поста. Можете да го използвате, тъй като е. Ако имате някакво друго изискване, се да ме уведомите. Бих искал да ви помогне да подредите въпроси.

    Благодаря
    /KP

  5. Nithya Kathiresan

    Здрасти,
    Знаеш ли как да се използва API-тата на електронни таблици директно да изпълни правилата?

    Благодаря,
    Nithya

  6. Дийпак

    Може ли да изпратите файла на Excel ,аз искам да тичам и да получите резултат ..??

  7. Sunil

    Може ли да се осигури DRL пример, където мога да получа данните от базата данни и актуализиране на факта, .

    1. kaushik Post автор

      Hi Sunil,

      Можете да използвате една и съща програма с малко модификация.

      Моля, свържете се с мен @ techalpineit@gmail.com за по-нататъшна помощ.

      Благодаря
      /KP

  8. Ананйа

    Здрасти,

    Може ли да споделите Excel ? Искам да съответства низ от числа или по-скоро търси низ в друг низ

    Благодаря

    1. kaushik Post автор

      Hi ананйа,

      Можете да използвате същите данни, както е показано в примерния файл и да направи една за себе си.

      Моля, пишете ми @ techalpineit@gmail.com за по-нататъшна помощ.

      Благодаря
      /KP

  9. Шекар Shaw

    Hello,
    Докато аз съм се опитва да изпълни, е повишаване на файл не е намерен грешка при обработката под линия.

    // Използването DRL файл
    kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );

    Може ли да предложа какво друго трябва да направя.

    Поздрави,
    Шекар Shaw

    1. kaushik Post автор

      Hello Shekhar,

      Трябва да се гарантира, че както .drl и .class файловете са налични. Моля проверете и да ме уведомите, ако сте изправени пред някакъв проблем.

      Моля, пишете ми @ techalpineit@gmail.com

      Благодаря
      Kaushik

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