//Drools file package com.sample; import org.kie.api.KieServices; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; /** * This is a sample class to launch a rule. */ public class DroolsTest { public static final void main(String[] args) { try { // load up the knowledge base KieServices ks = KieServices.Factory.get(); KieContainer kContainer = ks.getKieClasspathContainer(); KieSession kSession = kContainer.newKieSession("ksession-rules"); // Kreiranje novog objekta i unos cinjenica KlimaUredjaj k = new KlimaUredjaj(); k.setKvadratura(62); k.setBrojProstorija("vise"); k.setRadNaNiskimTemperaturama(true); k.setMogucaUgradnjaNaZid(false); //Unosenje objekta u ES kSession.insert(k); //Pokretanje ES kSession.fireAllRules(); //Ispis resenja System.out.println(k); } catch (Throwable t) { t.printStackTrace(); } } } _________________________________________________________________________________________________________________________ //Klasa koja se pravi u skladu sa zadatkom package com.sample; public class KlimaUredjaj { //Pravila 9 i 10 navode da je preporuceni tip "zidna" klima, osim u //nekim slucajevima pa se to postavlja za pocetnu vrednost atributa tip private String tip = "zidna"; private int snaga; private boolean imaInverter; private int kvadratura; private String brojProstorija; private boolean mogucaUgradnjaNaZid; private boolean podjednakoZaGrejanje; private boolean radNaNiskimTemperaturama; public String getTip() { return tip; } public void setTip(String tip) { this.tip = tip; } public int getSnaga() { return snaga; } public void setSnaga(int snaga) { this.snaga = snaga; } public boolean isImaInverter() { return imaInverter; } public void setImaInverter(boolean imaInverter) { this.imaInverter = imaInverter; } public int getKvadratura() { return kvadratura; } public void setKvadratura(int kvadratura) { this.kvadratura = kvadratura; } public String getBrojProstorija() { return brojProstorija; } public void setBrojProstorija(String brojProstorija) { this.brojProstorija = brojProstorija; } public boolean isMogucaUgradnjaNaZid() { return mogucaUgradnjaNaZid; } public void setMogucaUgradnjaNaZid(boolean mogucaUgradnjaNaZid) { this.mogucaUgradnjaNaZid = mogucaUgradnjaNaZid; } public boolean isPodjednakoZaGrejanje() { return podjednakoZaGrejanje; } public void setPodjednakoZaGrejanje(boolean podjednakoZaGrejanje) { this.podjednakoZaGrejanje = podjednakoZaGrejanje; } public boolean isRadNaNiskimTemperaturama() { return radNaNiskimTemperaturama; } public void setRadNaNiskimTemperaturama(boolean radNaNiskimTemperaturama) { this.radNaNiskimTemperaturama = radNaNiskimTemperaturama; } //Trazi se samo ispis resenja a ne i ulaznih cinjenica, tako da toString vraca //tip, snagu i da li ima inverter @Override public String toString() { return "KlimaUredjaj [tip=" + tip + ", snaga=" + snaga + ", imaInverter=" + imaInverter + "]"; } } __________________________________________________________________________________________________________\ //RULES package com.sample import com.sample.KlimaUredjaj; rule "Pravilo 4" when k : KlimaUredjaj( kvadratura <= 50 && brojProstorija == "jedna" && snaga == 0 ) then k.setSnaga(9000); update( k ); end rule "Pravilo 5" when k : KlimaUredjaj( kvadratura <= 50 && brojProstorija == "vise" && snaga == 0 ) then k.setSnaga(12000); update( k ); end rule "Pravilo 6" when k : KlimaUredjaj( kvadratura > 50 && kvadratura < 75 && brojProstorija == "jedna" && snaga == 0 ) then k.setSnaga(12000); update( k ); end rule "Pravilo 7" when k : KlimaUredjaj( kvadratura > 50 && kvadratura < 75 && brojProstorija == "vise" && snaga == 0 ) then k.setSnaga(18000); update( k ); end rule "Pravilo 8" when k : KlimaUredjaj( kvadratura >= 75 && snaga == 0 ) then k.setSnaga(18000); update( k ); end rule "Pravilo 9" when k : KlimaUredjaj( brojProstorija == "vise" && mogucaUgradnjaNaZid == false && tip == "zidna" ) then k.setTip("pokretna"); update( k ); end rule "Pravilo 10" when k : KlimaUredjaj( brojProstorija == "jedna" && mogucaUgradnjaNaZid == false && tip == "zidna" ) then k.setTip("prozorska"); update( k ); end rule "Pravilo 11" when k : KlimaUredjaj( podjednakoZaGrejanje == true && imaInverter == false ) then k.setImaInverter(true); update( k ); end rule "Pravilo 12" when k : KlimaUredjaj( radNaNiskimTemperaturama == true && imaInverter == false ) then k.setImaInverter(true); update( k ); end