Bydd y cod enghreifftiol canlynol yn disgrifio'r broses o ddefnyddio bwrdd penderfyniad i weithredu rules.There ddwy ffordd
a) Defnyddiwch y lledaeniad APIs daflen yn uniongyrchol i weithredu rheolau.
b) Troswch y daenlen excel i mewn i ffeil DRL ac yna gweithredu'r rheolau.
Byddaf yn disgrifio'r ail broses (b).
** Mae'r dosbarth java prif yw 'DroolExcelDemo.java'. Yn gyntaf bydd yn newid y daflen ragori mewn (.DRL) ffeilio ac yna gweithredu'r rheolau.
package DROOLS;
java.io.BufferedWriter mewnforio;
mewnforio java.io.FileInputStream;
java.io.FileNotFoundException mewnforio;
java.io.FileWriter mewnforio;
java.io.IOException mewnforio;
mewnforio java.io.InputStream;
java.util.Collection mewnforio;
mewnforio org.drools.KnowledgeBase;
mewnforio org.drools.KnowledgeBaseFactory;
mewnforio org.drools.builder.KnowledgeBuilder;
mewnforio org.drools.builder.KnowledgeBuilderFactory;
mewnforio org.drools.builder.ResourceType;
org.drools.decisiontable.InputType mewnforio;
mewnforio org.drools.decisiontable.SpreadsheetCompiler;
mewnforio org.drools.definition.KnowledgePackage;
org.drools.event.rule.DebugAgendaEventListener mewnforio;
org.drools.event.rule.DebugWorkingMemoryEventListener mewnforio;
mewnforio org.drools.io.ResourceFactory;
org.drools.runtime.StatefulKnowledgeSession mewnforio;
/**
* Bydd y dosbarth hwn yn creu ffeil DRL o excel taflen
* ac yna gweithredu'r rheolau.
*/
cyhoeddus o'r radd flaenaf DroolExcelDemo {
ddi-rym sefydlog cyhoeddus prif terfynol(String terfynol[] args) {
// Creu adeiladwr gwybodaeth
derfynol KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
// Creu DRL ffeil o Excel daflen
InputStream yw = null;
roi cynnig ar {
yw = newydd FileInputStream(“D:/Workspace / DroolsDemo / src / DROOLS / DroolExcel.xls”);
} dal (FileNotFoundException e) {
e.printStackTrace();
}
// Creu enghraifft dosbarth compiler
SpreadsheetCompiler sc = newydd SpreadsheetCompiler();
// Llunio y excel i gynhyrchu (.DRL) ffeil
StringBuffer DRL = newydd StringBuffer(sc.compile(yn, InputType.XLS));
// Rhowch gwerth tafodiaith i DRL ffeil
drl.insert(drl.indexOf(“DROOLS”)+40,”dafodiaith ”mvel ””+”\n”);
// Gwiriwch y ffeil DRL a gynhyrchir
System.out.println(“Cynhyrcha'r DRL ffeil yn dangos isod–: “);
System.out.println(DRL);
// ysgrifennu llinyn i mewn i ffeil DRL
roi cynnig ar {
BufferedWriter allan = BufferedWriter newydd(FileWriter newydd(“D:/Workspace / DroolsDemo / src / DROOLS / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
dal (IOException e){
System.out.println(“Eithriad “);
}
// Arhoswch cyn defnyddio'r ffeil DRL yn yr adran nesaf.
roi cynnig ar {
Thread.sleep(10000);
} dal (InterruptedException e) {
e.printStackTrace();
}
// Creu Diwedd DRL ffeil o Excel daflen
// Defnyddio DRL ffeil
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );
// Edrychwch ar y adeiladwr am wallau
os ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder Mae gwallau yn”);
System.out.println( kbuilder.getErrors().toString());
}
// cael y pecynnau a luniwyd (sy'n serializable)
pkgs Casgliad terfynol = kbuilder.getKnowledgePackages();
// ychwanegwch y pecynnau i knowledgebase (defnyddio pecynnau gwybodaeth).
derfynol knowledgebase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);
// Creu sesiwn stateful
ksession StatefulKnowledgeSession terfynol = kbase.newStatefulKnowledgeSession();
// Gosod gwrandawyr digwyddiad
ksession.addEventListener(DebugAgendaEventListener newydd());
ksession.addEventListener(DebugWorkingMemoryEventListener newydd());
// Creu neges testun
DroolMessage messagetxt = newydd DroolMessage();
messagetxt.setMessage(“Rhif Flight”);
DroolMessage messagetxt1 = newydd DroolMessage();
messagetxt1.setMessage(“FlightCode”);
// Rhowch i mewn i reolau sesiwn a thân
System.out.println(“mewnosod i mewn i sesiwn”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“cyn tanio rheolau”);
ksession.fireAllRules();
System.out.println(“ar ôl tanio rheolau”);
ksession.dispose();
System.out.println(“ar ôl gwaredu”);
}
}
* *Mae'r ail ffeil yn DroolMessage.java '’ pojo dosbarth. Mae'n dal y gwerthoedd a nodwyd gan y dosbarth prif java a ddisgrifir uchod.
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
cyhoeddus DroolMessage() {
System.out.println(“Neges ymgychwyn”);
}
// Dulliau Setter a benderfynol
cyhoeddus Llinynnol getMessage() {
dychwelyd neges;
}
ddi-rym cyhoeddus setMessage(Neges String) {
this.message = Neges;
}
// dull prawf i brofi gweithredu rheol
prawf gwag cyhoeddus(Prawf String) {
System.out.println(“Dechrau dosrannu a sefyllfa diwedd: “+prawf);
}
}
** Yn dilyn yn ffeil rheol a gynhyrchir gan y DroolExcelDemo.java '’ dosbarth.
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
// gwerthoedd rheol yn B13, pennawd yn B7
rheol “DroolExcelRule_13”
pan
msg:DroolMessage(neges == “FlightCode”)
yna
msg.test(“7,8”);
diwedd
** Yn dilyn yw'r mewnbwn yn rhagori ffeil rheol yn seiliedig ar y DroolExcelDemo.java '’ dosbarth uchod.
Hi, gallech anfon ffeil DroolExcel.xls ataf?
Diolch!
Hi Daniel,
Diolch am eich diddordeb. Gadewch i mi wybod eich union ofyniad. Byddaf yn anfon y daflen excel chi.
Lloniannau
/KP
Hi, gallech anfon ffeil DroolExcel.xls ataf? Fi jyst eisiau rhedeg y cod hwn ac am gael canlyniad
fy e-bost
dahalram20@gmail.com
Hi Aakash,
Anfonwch eich union ofyniad i mi. Byddaf yn gwneud fy ngorau i helpu chi allan.
Thanks,
Techalpine
Hi,
Allwch chi os gwelwch yn dda rhannu'r ffeil DroolExcel.xls?
Roeddwn i eisiau i weithredu rhaglen hon. Rwy'n newydd i'r Drools ac yn awyddus i ddeall sut mae'n gweithio.
Fy nghyfeiriad e-bost: b4umani2003@gmail.com
Thanks,
Mani
Hi Manideepa,
Roedd y sampl excel eisoes yn cael ei ddangos yn y post. Gallwch ei ddefnyddio fel y mae. Os oes gennych chi ryw ofyniad arall, peidiwch â gadael i mi wybod. Byddwn wrth fy modd i helpu i ddatrys y materion.
Thanks
/KP
Hi,
Ydych chi'n gwybod sut i ddefnyddio'r APIs daenlen yn uniongyrchol i weithredu rheolau?
Thanks,
Nithya
gallwch os gwelwch yn dda anfon y ffeil excel ,fi angen i redeg a chael y canlyniad ..??
A wnewch chi roi enghraifft DRL ble y gallwn i gael y data o'r Gronfa Ddata a diweddaru'r ffaith .
Hi Sunil,
Gallwch ddefnyddio'r un rhaglen gyda addasiad bach.
Cysylltwch â mi @ techalpineit@gmail.com am fwy o help.
Thanks
/KP
Hi,
Allech chi os gwelwch yn dda rhannu'r excel ? Rwyf am i gyd-fynd gyfres o rifau neu yn hytrach chwilio llinyn yn llinyn arall
Thanks
Hi Ananya,
Gallwch ddefnyddio'r un data fel y dangosir yn y ffeil sampl ac yn gwneud un i chi eich hun.
Os gwelwch yn dda bostiwch fi @ techalpineit@gmail.com am fwy o help.
Thanks
/KP
Helo,
Er fy mod yn ceisio i weithredu, ei fod yn codi ffeil heb ei darganfod gwall wrth brosesu isod llinell.
// Defnyddio DRL ffeil
kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );
A allech chi awgrymu beth arall sydd angen i mi ei wneud.
Regards,
Shekhar Shaw
Helo Shekhar,
Mae angen i chi sicrhau bod y .drl a ffeiliau .class ar gael. Gwiriwch a gadewch i mi wybod os ydych yn wynebu unrhyw broblem.
Os gwelwch yn dda bostiwch fi @ techalpineit@gmail.com
Thanks
Kaushik
hi
mae'n iawn blog da i ddienyddio. ond fi eisiau cynhyrchu templed ffeil Rheol awtomatig heb ychwanegu unrhyw ffeil Rheol.