ລະຫັດຕົວຢ່າງດັ່ງຕໍ່ໄປນີ້ຈະອະທິບາຍຂະບວນການນໍາໃຊ້ຕາຕະລາງການຕັດສິນໃຈກັບງານ 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’ ທີ່ຫ້ອງຮຽນຂ້າງເທິງ.
Hi, could you send me DroolExcel.xls file?
thank you!
Hi Daniel,
Thanks for your interest. Please let me know your exact requirement. I will send you the excel sheet.
Cheers
/KP
Hi, could you send me DroolExcel.xls file? I just want to run this code and want to get result
my email
dahalram20@gmail.com
Hi Aakash,
Please send me your exact requirement. I will try my best to help you out.
ຂໍຂອບໃຈ,
Techalpine
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
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
Hi,
Do you know how to use the spread sheet APIs directly to execute the rules?
ຂໍຂອບໃຈ,
Nithya
can you please send the excel file ,i want to run and get the result..??
Could you please provide a DRL example where I could get the data from Database and update the fact .
Hi Sunil,
You can use the same program with a little modification.
Please contact me @ techalpineit@gmail.com for further help.
ຂໍຂອບໃຈ
/KP
Hi,
Could you please share the excel ? I want to match a string of numbers or rather search string in another string
ຂໍຂອບໃຈ
Hi Ananya,
You can use the same data as shown in the sample file and make one for yourself.
Please mail me @ techalpineit@gmail.com for further help.
ຂໍຂອບໃຈ
/KP
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
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
hi
it is very good blog i executed. but i want to generate Rule file template automatically without adding any Rule file.