Як выкарыстоўваць Drools рашэння табліцу ў фармаце электроннай табліцы для выканання правілаў?

У наступным прыкладзе будзе апісаны працэс выкарыстання табліцы рашэнняў для выканання rules.There два спосабу

a) З дапамогай API-інтэрфейсаў электронных табліц непасрэдна выконваць правілы.
сі) Пераўтварэнне ліста 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 {
грамадскасці статычнай канчатковага сілы асноўных(Канчатковы струнных[] аргументы) {
// Стварэнне ведаў будаўніка
Канчатковы KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Стварыце файл DRL з ліставай Excel
InputStream з'яўляецца = NULL;
старацца {
= Гэта новая FileInputStream(“Рэ:/Працоўная прастора / DroolsDemo / SRC / Drools / DroolExcel.xls”);

} злавіць (FileNotFoundException электроннай) {
e.printStackTrace();
}
// Стварыць асобнік класа кампілятар
SpreadsheetCompiler SC = новы SpreadsheetCompiler();

// Кампіляцыя Excel для стварэння (.DRL) файл
StringBuffer DRL = новы StringBuffer(sc.compile(з'яўляецца, InputType.XLS));

// Устаўце дыялекце значэння ў файле DRL
drl.insert(drl.indexOf(“Drools”)+40,”Дыялект ”mvel ””+”\п”);

// Калі ласка, праверце створаны файл DRL
System.out.println(“Стварыць файл DRL паказвае ніжэй–: “);
System.out.println(DRL);

// напісанне радок у файл DRL
старацца {
BufferedWriter з = новы BufferedWriter(новыя FileWriter(“Рэ:/Працоўная прастора / DroolsDemo / SRC / Drools / 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());
}
// атрымаць скампіляваныя пакеты (якія сериализуемым)
Канчатковы PKGS калекцыя = kbuilder.getKnowledgePackages();

// дадаць пакеты ў базе ведаў (Разгортванне ведаў пакетаў).
Канчатковы KnowledgeBase KBase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(PKGS);

// Стварэнне сеансовом
Канчатковы ksession StatefulKnowledgeSession = kbase.newStatefulKnowledgeSession();

// Набор слухачоў падзей
ksession.addEventListener(новыя DebugAgendaEventListener());
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(Струнны паведамленне) {
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

// Правіла значэння ў B13, загаловак на B7
кіраваць “DroolExcelRule_13”
калі
MSG:DroolMessage(Паведамленне == “FlightCode”)
затым
msg.test(“7,8”);
канец

** Ніжэй уваходнага пераўзыходзяць файлаў на аснове правілы "DroolExcelDemo.java’ класам вышэй.


15 думкі аб "Як выкарыстоўваць Drools рашэння табліцу ў фармаце электроннай табліцы для выканання правілаў?

  1. Данііл

    прывітанне, маглі б вы даслаць мне файл DroolExcel.xls?

    Дзякуй!

    1. Кошик паведамленне аўтар

      прывітанне Даніэль,

      Дзякуем Вам за цікавасць. Калі ласка, дайце мне ведаць вашыя дакладныя патрабаванні. Я пашлю да вас ліст першынстваваць.

      ура
      /КП

  2. Aakash

    прывітанне, маглі б вы даслаць мне файл DroolExcel.xls? Я проста хачу, каб запусціць гэты код і хочаце атрымаць вынік

    мая электронная пошта
    dahalram20@gmail.com

    1. Кошик паведамленне аўтар

      прывітанне Aakash,

      Калі ласка, дашліце мне вашыя дакладныя патрабаванні. Я буду старацца з усіх сіл, каб дапамагчы вам.

      Дзякуй,
      Techalpine

  3. Manideepa

    прывітанне,
    Ці можаце вы падзяліцца файлам DroolExcel.xls?
    Я хацеў бы выканаць гэтую праграму. Я пачатковец у Drools і хацеў зразумець, як гэта працуе.
    Мой адрас электроннай пошты: b4umani2003@gmail.com

    Дзякуй,
    Mani

  4. Кошик паведамленне аўтар

    прывітанне Manideepa,

    Ўзор першынствуе ўжо паказана на пасадзе. Вы можаце выкарыстоўваць яго, як гэта. Калі ў вас ёсць іншыя патрабаванні, дайце мне ведаць. Я хацеў бы, каб дапамагчы вам сартаваць пытанні.

    Дзякуй
    /КП

  5. Nithya Kathiresan

    прывітанне,
    Вы ведаеце, як выкарыстоўваць ліст распаўсюджванне API, непасрэдна выконваць правілы?

    Дзякуй,
    Nithya

  6. Діпака

    Калі ласка, вы можаце адправіць файл першынстваваць ,Я хачу, каб запусціць і атрымаць вынік ..??

  7. Суніл

    Не маглі б вы даць прыклад DRL, дзе я мог бы атрымаць дадзеныя з базы дадзеных і абнаўляць факт .

    1. Кошик паведамленне аўтар

      прывітанне Суніл,

      Вы можаце выкарыстоўваць тую ж праграму з нязначнымі зменамі.

      Калі ласка, звяжыцеся са мной @ techalpineit@gmail.com для далейшай дапамогі.

      Дзякуй
      /КП

  8. Ananya

    прывітанне,

    Не маглі б вы падзяліцца першынстваваць ? Я хачу, каб адпавядаць радок лікаў або, хутчэй, шукаць радок у іншую радок

    Дзякуй

    1. Кошик паведамленне аўтар

      эксклюзіўны,

      Вы можаце выкарыстоўваць адны і тыя ж дадзеныя, як паказана ва ўзоры файла і зрабіць адзін для сябе.

      Калі ласка, напішыце мне @ techalpineit@gmail.com для далейшай дапамогі.

      Дзякуй
      /КП

  9. Шекхар Шоу

    добры дзень,
    У той час як я спрабую выканаць, ён падымае файл не знойдзена памылка пры апрацоўцы ніжэй лініі.

    // Выкарыстанне файлаў DRL
    kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );

    Не маглі б вы прапанаваць, што яшчэ мне трэба зрабіць.

    прывітанне,
    Шекхар Шоу

    1. Кошик паведамленне аўтар

      прывітанне Шекхар,

      Вы павінны пераканацца, што абодва .drl і .class файлы даступныя. Калі ласка, праверце і дайце мне ведаць, калі вы сутыкаецеся любую праблему.

      Калі ласка, напішыце мне @ techalpineit@gmail.com

      Дзякуй
      Кошик

  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