Conas a úsáid tábla cinneadh drools i bhformáid scarbhileog rialacha a fhorghníomhú?

Beidh an cód sampla seo a leanas cur síos ar an bpróiseas ag baint úsáide as tábla cinneadh rules.There a fhorghníomhú Tá dhá bhealach

a) Bain úsáid as an APIs bileog leathadh go díreach a fhorghníomhú na rialacha.
b) Tiontaigh an bhileog scaipeadh barr feabhais i gcomhad DRL agus ansin na rialacha a fhorghníomhú.

Beidh mé ag cur síos ar an dara próiseas (b).







** Is é an príomh-java ranga 'DroolExcelDemo.java'. An chéad beidh sé thiontú an bhileog excel isteach (.DRL) comhad agus a fhorfheidhmiú dá na rialacha.




package DROOLS;

java.io.BufferedWriter allmhairiú;
allmhairiú java.io.FileInputStream;
java.io.FileNotFoundException allmhairiú;
java.io.FileWriter allmhairiú;
java.io.IOException allmhairiú;
allmhairiú java.io.InputStream;
java.util.Collection allmhairiú;

allmhairiú org.drools.KnowledgeBase;
allmhairiú org.drools.KnowledgeBaseFactory;
allmhairiú org.drools.builder.KnowledgeBuilder;
allmhairiú org.drools.builder.KnowledgeBuilderFactory;
allmhairiú org.drools.builder.ResourceType;
org.drools.decisiontable.InputType allmhairiú;
allmhairiú org.drools.decisiontable.SpreadsheetCompiler;
allmhairiú org.drools.definition.KnowledgePackage;
org.drools.event.rule.DebugAgendaEventListener allmhairiú;
org.drools.event.rule.DebugWorkingMemoryEventListener allmhairiú;
allmhairiú org.drools.io.ResourceFactory;
org.drools.runtime.StatefulKnowledgeSession allmhairiú;

/**
* Beidh an rang a chruthú comhad DRL ó bhileog excel
* agus a fhorghníomhú ansin ar na rialacha.
*/
poiblí rang DroolExcelDemo {
poiblí ar neamhní is mó statach deiridh(Teaghrán deiridh[] comhbhrí leis an rogha) {
// Cruthaigh tógálaí eolais
deiridh KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Cruthaigh DRL comhad ó bhileog excel
Is InputStream = null;
iarracht a dhéanamh {
Is é = nua FileInputStream(“D:/Spás Oibre / DroolsDemo / src / DROOLS / DroolExcel.xls”);

} ghabháil (FileNotFoundException e) {
e.printStackTrace();
}
// Cruthaigh shampla rang tiomsaitheoir
SpreadsheetCompiler sc = nua SpreadsheetCompiler();

// Thiomsú an excel a ghiniúint an (.DRL) comhad
StringBuffer DRL = nua StringBuffer(sc.compile(Is é, InputType.XLS));

// Cuir isteach luach chanúint i gcomhad DRL
drl.insert(drl.indexOf(“DROOLS”)+40,”canúint ”mvel ””+”\n”);

// Seiceáil an ghintear DRL comhad
System.out.println(“Tá ghiniúint DRL comhad taispeáint thíos–: “);
System.out.println(DRL);

// scríobh teaghrán i gcomhad DRL
iarracht a dhéanamh {
BufferedWriter amach; BufferedWriter nua(FileWriter nua(“D:/Spás Oibre / DroolsDemo / src / DROOLS / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
ghabháil (IOException e){
System.out.println(“Eisceacht “);
}
// Fan roimh úsáid a bhaint as an gcomhad DRL sa chéad chuid eile.
iarracht a dhéanamh {
Thread.sleep(10000);
} ghabháil (InterruptedException e) {
e.printStackTrace();
}
// Chruthú Deireadh comhaid DLR ó bhileog excel

// Ag baint úsáide as DRL comhad
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Seiceáil an tógálaí ar earráidí
más rud é go ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder earráidí Tá”);
System.out.println( kbuilder.getErrors().toString());
}
// a fháil ar na pacáistí le chéile (Tá a serializable)
pkgs Bailiúchán deiridh = kbuilder.getKnowledgePackages();

// na pacáistí a chur le Knowledgebase (imscaradh na pacáistí eolais).
deiridh Knowledgebase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

// Cruthaigh seisiún stateful
ksession StatefulKnowledgeSession deiridh; kbase.newStatefulKnowledgeSession();

// Socraigh éisteoirí imeacht
ksession.addEventListener(DebugAgendaEventListener nua());
ksession.addEventListener(DebugWorkingMemoryEventListener nua());

// Cruthaigh teachtaireacht téacs
DroolMessage messagetxt = nua DroolMessage();
messagetxt.setMessage(“Uimhir Eitilte”);

DroolMessage messagetxt1 = nua DroolMessage();
messagetxt1.setMessage(“FlightCode”);

// Cuir isteach rialacha seisiún agus tine
System.out.println(“chur isteach i seisiún”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“roimh rialacha a lámhaigh”);
ksession.fireAllRules();
System.out.println(“tar éis rialacha a lámhaigh”);
ksession.dispose();
System.out.println(“tar éis a dhiúscairt”);
}
}








* *Tá an comhad dara DroolMessage.java '’ Pojo rang. Tá sé na luachanna atá leagtha síos ag an rang Java is mó a thuairiscítear thuas.

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;

// Tógálaí
poiblí DroolMessage() {
System.out.println(“initializing Teachtaireacht”);
}
// Modhanna setter agus getter
poiblí Teaghrán getMessage() {
ar ais teachtaireacht;
}
neamhní setMessage poiblí(Teachtaireacht Teaghrán) {
this.message; teachtaireacht;
}
// modh tástála a thástáil i gcrích riail
tástáil ar neamhní poiblí(Tástáil Teaghrán) {
System.out.println(“Tús parsáil agus seasamh deiridh: “+tástáil);
}
}

** Tar éis Tá comhad riail ginte ag an DroolExcelDemo.java '’ rang.

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

// luachanna riail B13, Ceanntásc ar B7
riail “DroolExcelRule_13”
nuair
msg:DroolMessage(teachtaireacht == “FlightCode”)
ansin
msg.test(“7,8”);
deireadh

** Tar éis go bhfuil an t-ionchur fheabhas comhad riail atá bunaithe ar an DroolExcelDemo.java '’ aicme thuasluaite.


15 thoughts on “Conas a úsáid tábla cinneadh drools i bhformáid scarbhileog rialacha a fhorghníomhú?

    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.

      Thanks,
      Techalpine

  1. Manideepa

    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

    Thanks,
    Mani

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

    Thanks
    /KP

  3. Nithya Kathiresan

    Hi,
    An bhfuil a fhios agat conas é a úsáid ar an APIs bhileog scaipeadh go díreach a fhorghníomhú na rialacha?

    Thanks,
    Nithya

  4. Sunil

    Níorbh fhéidir leat le do thoil a chur ar fáil sampla DRL nuair a d'fhéadfadh liom a fháil ar na sonraí ó Bunachar Sonraí agus cothrom le dáta an bhfíric .

  5. Ananya

    Hi,

    Níorbh fhéidir leat le do thoil a roinnt ar an fheabhas ? Ba mhaith liom a mheaitseáil ar shraith de uimhreacha nó in áit teaghrán cuardach a dhéanamh i teaghrán eile

    Thanks

    1. kaushik Post author

      Hi Ananya,

      Is féidir leat é a úsáid ar na sonraí céanna a mar a thaispeántar sa chomhad sampla agus a dhéanamh amháin ar do shon féin.

      Cuir ríomhphost chugam @ techalpineit@gmail.com le haghaidh tuilleadh cabhrach.

      Thanks
      /KP

  6. Shekhar Shaw

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

    // Ag baint úsáide as DRL comhad
    kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.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.

      Cuir ríomhphost chugam @ techalpineit@gmail.com

      Thanks
      Kaushik

  7. Rahul Pandey

    hi
    it is very good blog i executed. but i want to generate Rule file template automatically without adding any Rule file.

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share