Sut i ddefnyddio tabl penderfyniad drools mewn fformat taenlen i weithredu rheolau?

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.


15 meddyliau ar "Sut i ddefnyddio tabl penderfyniad drools mewn fformat taenlen i weithredu rheolau?

    1. kaushik Post author

      Hi Daniel,

      Diolch am eich diddordeb. Gadewch i mi wybod eich union ofyniad. Byddaf yn anfon y daflen excel chi.

      Lloniannau
      /KP

    1. kaushik Post author

      Hi Aakash,

      Anfonwch eich union ofyniad i mi. Byddaf yn gwneud fy ngorau i helpu chi allan.

      Thanks,
      Techalpine

  1. Manideepa

    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

  2. kaushik Post author

    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

  3. Nithya Kathiresan

    Hi,
    Ydych chi'n gwybod sut i ddefnyddio'r APIs daenlen yn uniongyrchol i weithredu rheolau?

    Thanks,
    Nithya

  4. Sunil

    A wnewch chi roi enghraifft DRL ble y gallwn i gael y data o'r Gronfa Ddata a diweddaru'r ffaith .

  5. Ananya

    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

  6. Shekhar Shaw

    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

    1. kaushik Post author

      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

  7. Rahul Pandey

    hi
    mae'n iawn blog da i ddienyddio. ond fi eisiau cynhyrchu templed ffeil Rheol awtomatig heb ychwanegu unrhyw ffeil Rheol.

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share