Како се користи Дроолс одлуку табелу у облику табеле изврши правила?

Следећи пример код ће описати процес коришћења одлуку табелу да изврши рулес.Тхере су два начина

a) Користите АПИ ширење листова директно да изврши правила.
б) Конвертовање екцел ширење лист у ДРЛ датотеку, а затим изврши правила.

Ја ћу описати други процес (б).







** Главни јава класа 'ДроолЕкцелДемо.јава "Прво ће се конвертовати у екцел лист. (.дрл) датотеку, а затим изврши правила.




package DROOLS;

увоз јава.ио.БуффередВритер;
увоз јава.ио.ФилеИнпутСтреам;
увоз јава.ио.ФилеНотФоундЕкцептион;
увоз јава.ио.ФилеВритер;
увоз јава.ио.ИОЕкцептион;
увоз јава.ио.ИнпутСтреам;
увоз јава.утил.Цоллецтион;

увоз орг.дроолс.КновледгеБасе;
увоз орг.дроолс.КновледгеБасеФацтори;
увоз орг.дроолс.буилдер.КновледгеБуилдер;
увоз орг.дроолс.буилдер.КновледгеБуилдерФацтори;
увоз орг.дроолс.буилдер.РесоурцеТипе;
увоз орг.дроолс.децисионтабле.ИнпутТипе;
увоз орг.дроолс.децисионтабле.СпреадсхеетЦомпилер;
увоз орг.дроолс.дефинитион.КновледгеПацкаге;
увоз орг.дроолс.евент.руле.ДебугАгендаЕвентЛистенер;
увоз орг.дроолс.евент.руле.ДебугВоркингМемориЕвентЛистенер;
увоз орг.дроолс.ио.РесоурцеФацтори;
увоз орг.дроолс.рунтиме.СтатефулКновледгеСессион;

/**
* Ова класа ће креирати ДРЛ датотеку из екцел листа
* а затим изврши правила.
*/
публиц цласс ДроолЕкцелДемо {
публиц статиц воид маин(коначни Стринг[] аргс) {
// Направи Креатор знања
коначни КновледгеБуилдер кбуилдер = КновледгеБуилдерФацтори.невКновледгеБуилдер();

// Направи ДРЛ датотеку из екцел листа
ИнпутСтреам је = нулл;
пробати {
је = нови ФилеИнпутСтреам(“Д:/Воркспаце / ДроолсДемо / срц / Дроолс / ДроолЕкцел.клс”);

} улов (ФилеНотФоундЕкцептион е) {
е.принтСтацкТраце();
}
// Креирање инстанце класе компајлер
СпреадсхеетЦомпилер сц = нев СпреадсхеетЦомпилер();

// Саставите Екцел за генерисање (.дрл) фајл
Стринг дрл = нев СтрингБуффер(сц.цомпиле(је, ИнпутТипе.КСЛС));

// Убаците вредност дијалект у ДРЛ фајл
дрл.инсерт(дрл.индекОф(“Дроолс”)+40,”дијалект ”мвел ””+”\н”);

// Проверите генерисани ДРЛ фајл
Систем.оут.принтлн(“Направи ДРЛ датотека приказује испод–: “);
Систем.оут.принтлн(дрл);

// писања стринг у ДРЛ фајл
пробати {
БуффередВритер од = нев БуффередВритер(Нови ФилеВритер(“Д:/Воркспаце / ДроолсДемо / срц / Дроолс / РулеФиле.дрл”));
оут.врите(дрл.тоСтринг());
оут.цлосе();
}
улов (ИОЕкцептион е){
Систем.оут.принтлн(“Изузетак “);
}
// Сачекајте пре употребе ДРЛ фајл у следећем одељку.
пробати {
Тхреад.слееп(10000);
} улов (ИнтерруптедЕкцептион е) {
е.принтСтацкТраце();
}
// Крај стварање ДРЛ фајла из екцел листа

// Коришћење ДРЛ фајл
кбуилдер.адд(РесоурцеФацтори.невЦлассПатхРесоурце(“РулеФиле.дрл”, ДроолМессаге.цласс ), РесоурцеТипе.ДРЛ );

// Проверите Буилдер за грешке
ако ( кбуилдер.хасЕррорс() ) {
Систем.оут.принтлн(“кбуилдер има грешке”);
Систем.оут.принтлн( кбуилдер.гетЕррорс().тоСтринг());
}
// добити компајлиране пакете (који су Сериализабле)
Коначни Колекција пкгс = кбуилдер.гетКновледгеПацкагес();

// додају пакете у Знања (распоредити пакете знања).
коначни КновледгеБасе кбасе = КновледгеБасеФацтори.невКновледгеБасе();
кбасе.аддКновледгеПацкагес(пкгс);

// Направи седницу статефул
коначни СтатефулКновледгеСессион ксессион = кбасе.невСтатефулКновледгеСессион();

// Сет слушаоце догађаја
ксессион.аддЕвентЛистенер(Дебуг нови ЕвентЛистенер дневног реда());
ксессион.аддЕвентЛистенер(Нови ДебугВоркингМемориЕвентЛистенер());

// Направите текст поруке
ДроолМессаге мессагеткт = нев ДроолМессаге();
мессагеткт.сетМессаге(“Број лета”);

ДроолМессаге мессагеткт1 = нев ДроолМессаге();
мессагеткт1.сетМессаге(“ФлигхтЦоде”);

// Убаците у сеанси и пожара правила
Систем.оут.принтлн(“убаците седницу”);
ксессион.инсерт(мессагеткт);
ксессион.инсерт(мессагеткт1);
Систем.оут.принтлн(“пре печења правила”);
ксессион.фиреАллРулес();
Систем.оут.принтлн(“после гађања правила”);
ксессион.диспосе();
Систем.оут.принтлн(“након наредбе”);
}
}








* *Други фајл је 'ДроолМессаге.јава’ Појо класа. Она има вредности које је поставио главни јава класе описано.

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;

// Градитељ
јавни ДроолМессаге() {
Систем.оут.принтлн(“иницијализација поруку”);
}
// Сеттер и Геттер методе
Стринг гетМессаге() {
вратите поруку;
}
публиц сетМессаге(Стринг порука) {
тхис.мессаге = поруку;
}
// тест метода за тестирање извршење правила
публиц тест(Гудачки Тест) {
Систем.оут.принтлн(“Рашчлањивање почетак и крај положај: “+тест);
}
}

** Следи правило фајл генерисан од стране "ДроолЕкцелДемо.јава’ класа.

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, хеадер на Б7
владају “ДроолЕкцелРуле_13”
када
МСГ:ДроолМессаге(порука == “ФлигхтЦоде”)
онда
мсг.тест(“7,8”);
крај

** Следи унос издвајати заснован правила фајл на "ДроолЕкцелДемо.јава’ класу изнад.


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

    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.

      хвала,
      Techalpine

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

    хвала
    /KP

  2. Nithya Kathiresan

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

    хвала,
    Nithya

  3. sunil

    Could you please provide a DRL example where I could get the data from Database and update the fact .

  4. Ananya

    Hi,

    Could you please share the excel ? I want to match a string of numbers or rather search string in another string

    хвала

  5. Shekhar Shaw

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

    // Коришћење ДРЛ фајл
    кбуилдер.адд(РесоурцеФацтори.невЦлассПатхРесоурце(“RuleFile.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

      хвала
      каусхик

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share