La sekvanta ekzempla kodo priskribos la procezon uzi decidan tablon efektivigi regulojn.Estas du vojoj
a) Uzi la disvastiĝan folion APIs rekte efektivigas la regulojn.
B) Transformi la excel disvastiĝa folio en drl dosiero kaj tiam efektivigi la regulojn.
Mi priskribos la duan procezon (B).
** La ĉefa java klaso estas ‘DroolExcelDemo.Java’.Unue ĝi transformos la excel folio en (.Drl) Dosiero kaj tiam efektivigi la regulojn.
package DROOLS;
Importi java.Io.BufferedWriter;
Importi java.Io.FileInputStream;
Importi java.Io.FileNotFoundException;
Importi java.Io.FileWriter;
Importi java.Io.IOException;
Importi java.Io.InputStream;
Importi java.Util.Kolekto;
Importi org.Salivumas.KnowledgeBase;
Importi org.Salivumas.KnowledgeBaseFactory;
Importi org.Salivumas.Konstruisto.KnowledgeBuilder;
Importi org.Salivumas.Konstruisto.KnowledgeBuilderFactory;
Importi org.Salivumas.Konstruisto.ResourceType;
Importi org.Salivumas.Decisiontable.InputType;
Importi org.Salivumas.Decisiontable.SpreadsheetCompiler;
Importi org.Salivumas.Difino.KnowledgePackage;
Importi org.Salivumas.Evento.Regulo.DebugAgendaEventListener;
Importi org.Salivumas.Evento.Regulo.DebugWorkingMemoryEventListener;
Importi org.Salivumas.Io.ResourceFactory;
Importi org.Salivumas.Runtime.StatefulKnowledgeSession;
/**
* Ĉi tiu klaso kreos drl dosiero de excel folio
* Kaj tiam efektivigi la regulojn.
*/
Publika klaso DroolExcelDemo {
Publika senmova fina malplena ĉefa(Fina Ŝnuro[] Args) {
// Krei scian konstruiston
Fina KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.NewKnowledgeBuilder();
// Krei drl dosiero de excel folio
InputStream estas =null;
Provo {
Estas= nova FileInputStream(“D:/Workspace/DroolsDemo/src/SALIVUMAS/DroolExcel.Xls”);
} Kaptaĵo (FileNotFoundException e) {
E.PrintStackTrace();
}
// Krei compiler klasa okazo
SpreadsheetCompiler sc = nova SpreadsheetCompiler();
// Kompili la excel produkti la (.Drl) Dosiero
StringBuffer drl=nova StringBuffer(Sc.Kompilas(Estas, InputType.XLS));
// Enigaĵa dialekto valoro en drl dosiero
Drl.Enigaĵo(Drl.IndexOf(“SALIVUMAS”)+40,”Dialekto ”Mvel””+”\N”);
// Kontroli la produktita drl dosiero
Sistemo.Ekstere.Println(“Produkti DRLan dosieron estas montranta malsupre–: “);
Sistemo.Ekstere.Println(Drl);
// Skribanta ŝnuron en drl dosiero
Provo {
BufferedWriter ekstere = nova BufferedWriter(Nova FileWriter(“D:/Workspace/DroolsDemo/src/SALIVUMAS/RuleFile.Drl”));
Ekstere.Skribas(Drl.ToString());
Ekstere.Egale();
}
Kaptaĵo (IOException e){
Sistemo.Ekstere.Println(“Escepto “);
}
// Atendi antaŭ ol uzanta la drl dosiero en la sekvanta sekcio.
Provo {
Fadeno.Dormo(10000);
} Kaptaĵo (InterruptedException e) {
E.PrintStackTrace();
}
// Fina kreo de drl dosiero de excel folio
// Uzanta DRLan dosieron
Kbuilder.Aldonas(ResourceFactory.NewClassPathResource(“RuleFile.Drl”, DroolMessage.Klaso ), ResourceType.DRL );
// Kontroli la konstruiston por eraroj
Se ( Kbuilder.HasErrors() ) {
Sistemo.Ekstere.Println(“Kbuilder havas erarojn”);
Sistemo.Ekstere.Println( Kbuilder.GetErrors().ToString());
}
// Akiri la kompilita pakojn (Kiu estas serializable)
Fina Kolekto pkgs = kbuilder.GetKnowledgePackages();
// Aldoni la pakojn al knowledgebase (Deplojiĝi la sciajn pakojn).
Fina KnowledgeBase kbase = KnowledgeBaseFactory.NewKnowledgeBase();
Kbase.AddKnowledgePackages(Pkgs);
// Krei stateful sesio
Fina StatefulKnowledgeSession ksession = kbase.NewStatefulKnowledgeSession();
// Fiksita eventajn aŭskultantojn
Ksession.AddEventListener(Nova DebugAgendaEventListener());
Ksession.AddEventListener(Nova DebugWorkingMemoryEventListener());
// Krei mesaĝan tekston
DroolMessage messagetxt = nova DroolMessage();
Messagetxt.SetMessage(“FlightNumber”);
DroolMessage messagetxt1 = nova DroolMessage();
Messagetxt1.SetMessage(“FlightCode”);
// Enigaĵo en sesio kaj fajregaj reguloj
Sistemo.Ekstere.Println(“Enigaĵo en sesio”);
Ksession.Enigaĵo(Messagetxt);
Ksession.Enigaĵo(Messagetxt1);
Sistemo.Ekstere.Println(“Antaŭ ol pafadanta regulojn”);
Ksession.FireAllRules();
Sistemo.Ekstere.Println(“Post kiam pafadanta regulojn”);
Ksession.Dispozicias();
Sistemo.Ekstere.Println(“Post kiam dispozicias”);
}
}
* *La dua dosiero estas ‘DroolMessage.Java’ Pojo klaso. Ĝi tenas la valorojn fiksita de la ĉefa java klaso priskribis sur.
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;
// Constructor
Publika DroolMessage() {
Sistemo.Ekstere.Println(“Initializing Mesaĝo”);
}
// Setter kaj getter metodoj
Publika Ŝnuro getMessage() {
Revena mesaĝo;
}
Publika malplena setMessage(Ŝnura mesaĝo) {
Tio ĉi.Mesaĝa = mesaĝo;
}
// Testa metodo elprovi la regulan ekzekuton
Publika malplena testo(Ŝnura testo) {
Sistemo.Ekstere.Println(“Analizanta komencon kaj finan pozicion: “+Testo);
}
}
** Sekvanta estas regula dosiero produktita de la ‘DroolExcelDemo.Java’ Klaso.
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
// Regulaj valoroj ĉe B13, Titolo ĉe B7
Regulo “DroolExcelRule_13”
Kiam
Msg:DroolMessage(Mesaĝo == “FlightCode”)
Tiam
Msg.Testo(“7,8”);
Fino
** Sekvanta estas la enigo excel bazis regulan dosieron al la ‘DroolExcelDemo.Java’ Klasifiki sur.
Hi, Povis vin sendas min DroolExcel.Xls dosiero?
Dankoni vin!
Hi Daniel,
Dankonas por via intereso. Bonvolu lasi Mi scii vian ĝustan postulon. Mi sendos vin la excel folio.
Huraoj
/KP
Hi, Povis vin sendas min DroolExcel.Xls dosiero? Mi nur deziras kuri ĉi tiun kodon kaj deziri akiri rezulton
Mia retpoŝto
Dahalram20@gmail.Com
Hi Aakash,
Bonvolu sendi mi via ĝusta postulo. Mi provos mian plej bonan helpi vin ekstere.
Dankonas,
Techalpine
Hi,
Povas vin bonvolu dividi la DroolExcel.Xls dosiero?
Mi deziris efektivigi ĉi tiun programon. Mi estas nova al Salivumas kaj dezirita kompreni kiel ĝin laboras.
Mia retpoŝta adreso: B4umani2003@gmail.Com
Dankonas,
Mani
Hi Manideepa,
La excel ekzemplo estas jam montrita en la poŝto. Vi povas uzi ĝin kiel ĝi estas. Se vi havas kelkaj alia postulo, Ja lasas min scii. Mi amus helpi vin ordigi la aferojn.
Dankonas
/KP
Hi,
Ĉu vi scias kiel uzi la disvastiĝa folio APIs rekte efektivigi la regulojn?
Dankonas,
Nithya
Povas vin bonvolu sendi la excel dosiero ,I deziras kuri kaj akiri la rezulton..??
Povis vin bonvolu provizi DRLan ekzemplon kie mi povus akiri la datumon de Datumaro kaj ĝisdatigi la fakton .
Hi Sunil,
Vi povas uzi la saman programon kun malgranda modifaĵo.
Bonvolu kontakti min @ @Techalpineit@gmail.com Por pli fora helpo.
Dankonas
/KP
Hi,
Povis vin bonvolu dividi la excel ? Mi deziras egali ŝnuron de nombroj aŭ prefere serĉi ŝnuron en alia ŝnuro
Dankonas
Hi Ananya,
Vi povas uzi la saman datumon kiel montrita en la ekzempla dosiero kaj faro unu por vi mem.
Plaĉi poŝton mi @ @Techalpineit@gmail.com Por pli fora helpo.
Dankonas
/KP
Halo,
Dum mi estas provanta efektivigi, Ĝi estas levanta dosieron ne fondi eraron dum pretiganta sub linio.
// Uzanta DRLan dosieron
Kbuilder.Aldonas(ResourceFactory.NewClassPathResource(“RuleFile.Drl”, DroolMessage.Klaso ), ResourceType.DRL );
Povis vin bonvolu sugesti kion alia mi devas fari.
Konsideroj,
Shekhar Shaw
Halo Shekhar,
Vi devas certigi ke ambaŭ la .Drl kaj .Klasaj dosieroj estas haveblaj. Plaĉi kontrolon kaj lasita min scii se vi alfrontas ajnan problemon.
Plaĉi poŝton mi @ @Techalpineit@gmail.com
Dankonas
Kaushik
Hi
Ĝi estas tre bona blogo i efektivigita. Sed i deziras produkti Regulan dosieron ŝablono aŭtomate sen aldonanta ajnan Regulan dosieron.