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.
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.
Thanks,
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
Thanks,
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.
Thanks
/KP
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
Is féidir leat seol a fheabhas an comhad ,Ba mhaith liom a reáchtáil agus a fháil ar an toradh ..??
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 .
Hi Sunil,
Is féidir leat é a úsáid ar an gclár céanna le modhnú beag.
Téigh i dteagmháil liom @ techalpineit@gmail.com le haghaidh tuilleadh cabhrach.
Thanks
/KP
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
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
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
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
hi
it is very good blog i executed. but i want to generate Rule file template automatically without adding any Rule file.