ວິທີການນໍາໃຊ້ຕາຕະລາງການຕັດສິນໃຈ drools ໃນຮູບແບບ spreadsheet ກັບງານກົດລະບຽບ?

ລະຫັດຕົວຢ່າງດັ່ງຕໍ່ໄປນີ້ຈະອະທິບາຍຂະບວນການນໍາໃຊ້ຕາຕະລາງການຕັດສິນໃຈກັບງານ rules.There ໄດ້ສອງວິທີແມ່ນ

ເປັນ) ໃຊ້ APIS ເອກະສານສະການແຜ່ກະຈາຍພັນໂດຍກົງກັບງານກົດລະບຽບການ.
ຂ) ປ່ຽນໄດ້ເອກະສານສະການແຜ່ກະຈາຍ Excel ໃຫ້ກາຍເປັນໄຟລ໌ drl ແລະຈາກນັ້ນກົດລະບຽບງານໄດ້.

ຂ້າພະເຈົ້າຈະອະທິບາຍຂະບວນການທີ່ສອງ (ຂ).







** ໃນຫ້ອງຮຽນຈາວາຕົ້ນຕໍແມ່ນ '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 ຫ້ອງຮຽນ {
ສາທາລະນະ static void ຕົ້ນຕໍສຸດທ້າຍ(ສຸດທ້າຍຊ່ອຍແນ່[] args) {
// ສ້າງ builder ຄວາມຮູ້
ສຸດທ້າຍ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// ສ້າງໄຟລ໌ drl ຈາກແຜ່ນ Excel
InputStream ແມ່ນ = return NULL ກັບມາ;
ພະຍາຍາມ {
= ໃຫມ່ FileInputStream ແມ່ນ(“D:/Workspace / DroolsDemo / src / DROOLS / DroolExcel.xls”);

} ຈັບ (ອີ FileNotFoundException) {
e.printStackTrace();
}
// ສ້າງຕົວຢ່າງທີ່ຫ້ອງຮຽນ compiler
SpreadsheetCompiler sc = SpreadsheetCompiler ໃຫມ່();

// ສັງລວມ Excel ໃນການສ້າງການ (.drl) ໄຟລ໌
StringBuffer drl = 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 ອອກ BufferedWriter ໃຫມ່ =(FileWriter ໃຫມ່(“D:/Workspace / 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 );

// ກວດເບິ່ງ builder ສໍາລັບຄວາມຜິດພາດທີ່ໄດ້
ຖ້າຫາກວ່າ ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder ມີຄວາມຜິດພາດ”);
System.out.println( kbuilder.getErrors().toString());
}
// ໄດ້ຮັບການຫຸ້ມຫໍ່ທີ່ສັງລວມໃນ (ຊຶ່ງເປັນ serializable)
pkgs ການເກັບສຸດທ້າຍ kbuilder.getKnowledgePackages =();

// ຕື່ມການຫຸ້ມຫໍ່ໃນການ knowledgebase ເປັ​​ນ (ນໍາຊຸດຄວາມຮູ້).
ສຸດທ້າຍ 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(“ກ່ອນທີ່ຈະ firing ກົດລະບຽບ”);
ksession.fireAllRules();
System.out.println(“ຫຼັງຈາກ firing ກົດລະບຽບ”);
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;

// Builder
DroolMessage ສາທາລະນະ() {
System.out.println(“initializing ຂໍ້ຂ່າວສານ”);
}
// ວິທີການ Setter ແລະ getter
ສາທາລະນະ GetMessage ຊ່ອຍແນ່() {
ຄືນຂໍ້ຄວາມ;
}
void setMessage ສາທາລະນະ(ຂໍ້ຄວາມຊ່ອຍແນ່) {
ຂໍ້ຄວາມ this.message =;
}
// ວິທີການທົດສອບການທົດສອບປະຕິບັດກົດລະບຽບຂອງ
ການທົດສອບ void ສາທາລະນະ(ການທົດສອບຊ່ອຍແນ່) {
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, header ຢູ່ B7
ກົດລະບຽບ “DroolExcelRule_13”
ໃນເວລາທີ່
msg:DroolMessage(ຂໍ້ຄວາມ == “FlightCode”)
ຫຼັງຈາກນັ້ນ
msg.test(“7,8”);
ທ້າຍ

** ດັ່ງຕໍ່ໄປນີ້ແມ່ນປັດໄຈຫນຶ່ງທີ່ດີເລີດກ່ຽວກັບກົດລະບຽບໄຟລ໌ທີ່ອີງໃສ່ການ 'DroolExcelDemo.java’ ທີ່ຫ້ອງຮຽນຂ້າງເທິງ.


15 thoughts on “ວິທີການນໍາໃຊ້ຕາຕະລາງການຕັດສິນໃຈ drools ໃນຮູບແບບ spreadsheet ກັບງານກົດລະບຽບ?

    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. Nithya Kathiresan

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

    ຂໍ​ຂອບ​ໃຈ,
    Nithya

  2. sunil

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

  3. Ananya

    Hi,

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

    ຂໍ​ຂອບ​ໃຈ

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

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share