Advertisement
kator

Untitled

Oct 31st, 2017
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.17 KB | None | 0 0
  1. package com.sample
  2.  
  3. import com.sample.DroolsTest.Plec;
  4. import com.sample.DroolsTest.Osoba;
  5. import com.sample.DroolsTest.Relacja;
  6.  
  7. rule "Init"
  8. when
  9. then
  10. Osoba maria = new Osoba("Maria");
  11. Osoba ewa = new Osoba("Ewa");
  12. Osoba agata = new Osoba("Agata");
  13. Osoba anna = new Osoba("Anna");
  14. Osoba agnieszka = new Osoba("Agnieszka");
  15. Osoba beata = new Osoba("Beata");
  16. Osoba iwona = new Osoba("Iwona");
  17. Osoba joanna = new Osoba("Joanna");
  18. Osoba piotr = new Osoba("Piotr");
  19. Osoba adam = new Osoba("Adam");
  20. Osoba marek = new Osoba("Marek");
  21. Osoba robert = new Osoba("Robert");
  22. Osoba jan = new Osoba("Jan");
  23. Osoba krzysztof = new Osoba("Krzysztof");
  24. Osoba radek = new Osoba("Radek");
  25. Osoba darek = new Osoba("Darek");
  26. Osoba tomek = new Osoba("Tomek");
  27. Osoba jacek = new Osoba("Jacek");
  28.  
  29. insert(new Relacja(maria,marek,"rodzic"));
  30. insert(new Relacja(maria,agata,"rodzic"));
  31. insert(new Relacja(maria,jan,"rodzic"));
  32. insert(new Relacja(piotr,marek,"rodzic"));
  33. insert(new Relacja(piotr,agata,"rodzic"));
  34. insert(new Relacja(piotr,jan,"rodzic"));
  35. insert(new Relacja(ewa,anna,"rodzic"));
  36. insert(new Relacja(ewa,joanna,"rodzic"));
  37. insert(new Relacja(ewa,krzysztof,"rodzic"));
  38. insert(new Relacja(adam,anna,"rodzic"));
  39. insert(new Relacja(adam,joanna,"rodzic"));
  40. insert(new Relacja(adam,krzysztof,"rodzic"));
  41. insert(new Relacja(agata,radek,"rodzic"));
  42. insert(new Relacja(agata,beata,"rodzic"));
  43. insert(new Relacja(robert,radek,"rodzic"));
  44. insert(new Relacja(robert,beata,"rodzic"));
  45. insert(new Relacja(anna,darek,"rodzic"));
  46. insert(new Relacja(anna,tomek,"rodzic"));
  47. insert(new Relacja(jan,darek,"rodzic"));
  48. insert(new Relacja(jan,tomek,"rodzic"));
  49. insert(new Relacja(agnieszka,jacek,"rodzic"));
  50. insert(new Relacja(agnieszka,iwona,"rodzic"));
  51. insert(new Relacja(krzysztof,jacek,"rodzic"));
  52. insert(new Relacja(krzysztof,iwona,"rodzic"));
  53. end
  54.  
  55. rule "NadajKobiete"
  56. when
  57. o: Osoba(nieznanaPlec() && imie.charAt(imie.length()-1)=='a')
  58. then
  59. o.setPlec(Plec.KOBIETA);
  60. //System.out.println(o.toString());
  61. update(o);
  62.  
  63. end
  64.  
  65. rule "NadajMezczyzne"
  66. when
  67. o: Osoba(nieznanaPlec() && imie.charAt(imie.length()-1)!='a')
  68. then
  69. o.setPlec(Plec.MEZCZYZNA);
  70. //System.out.println(o.toString());
  71. update(o);
  72. end
  73.  
  74. rule "RelacjaNadajacaPlec"
  75. when
  76. r: Relacja(r.o1().getPlec()==Plec.NIEZNANA || r.o2().getPlec()==Plec.NIEZNANA)
  77. then
  78. insert(r.o1());
  79. insert(r.o2());
  80. update(r);
  81. end
  82.  
  83. rule "Madka"
  84. when
  85. r: Relacja(r.o1().getPlec()==Plec.KOBIETA, relacja=="rodzic")
  86. then
  87. System.out.println(r.o1()+" jest MADKOM "+r.o2());
  88. end
  89.  
  90. rule "Ojdziedz"
  91. when
  92. r: Relacja(r.o1().getPlec()==Plec.MEZCZYZNA, relacja=="rodzic")
  93. then
  94. System.out.println(r.o1()+" jest OJDŹCEM "+r.o2());
  95. end
  96. ////////////////////////////////
  97. package com.sample;
  98.  
  99. import org.kie.api.KieServices;
  100. import org.kie.api.runtime.KieContainer;
  101. import org.kie.api.runtime.KieSession;
  102.  
  103. /**
  104. * This is a sample class to launch a rule.
  105. */
  106.  
  107. import org.drools.KnowledgeBase;
  108. import org.drools.KnowledgeBaseFactory;
  109. import org.drools.builder.KnowledgeBuilder;
  110. import org.drools.builder.KnowledgeBuilderError;
  111. import org.drools.builder.KnowledgeBuilderErrors;
  112. import org.drools.builder.KnowledgeBuilderFactory;
  113. import org.drools.builder.ResourceType;
  114. import org.drools.io.ResourceFactory;
  115. import org.kie.api.logger.KieRuntimeLogger;
  116.  
  117.  
  118. public class DroolsTest {
  119. static KieSession kSession;
  120. static KieServices ks;
  121. static KieContainer kContainer;
  122. static KieRuntimeLogger kLogger;
  123. public static boolean initt = true;
  124.  
  125. private static void init(){
  126. try{
  127. ks = KieServices.Factory.get();
  128. kContainer = ks.getKieClasspathContainer();
  129. kSession = kContainer.newKieSession("ksession-rules");
  130. kLogger = ks.getLoggers().newFileLogger(kSession, "test");
  131. }catch(Throwable t){
  132. t.printStackTrace();
  133. }
  134. }
  135.  
  136. private static void insert(Object o){ kSession.insert(o);
  137. }
  138.  
  139. private static void fireAllRules(){ kSession.fireAllRules();
  140. }
  141.  
  142. private static void cleanUp(){ kLogger.close();
  143. }
  144.  
  145. public static final void main(String[] args) {
  146. init();
  147. fireAllRules();
  148. //fireAllRules();
  149. cleanUp();
  150.  
  151. }
  152.  
  153. private static KnowledgeBase readKnowledgeBase() throws Exception {
  154. // Utwórz obiekt KnowledgeBuilder, który potrafi wczytywać reguły z różnych źródeł
  155. KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
  156. // Dodaj reguły zawarte w Sample.drl w zasobach programu, zapisane w formacie DRL
  157. kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL);
  158. // Wyszukaj błędy
  159. KnowledgeBuilderErrors errors = kbuilder.getErrors();
  160. // Jeżeli są błędy wyświetl je i rzuć wyjątek
  161. if (errors.size() > 0) {
  162. for (KnowledgeBuilderError error: errors) {
  163. System.err.println(error);
  164. }
  165. throw new IllegalArgumentException("Could not parse knowledge.");
  166. }
  167. // Stwórz pustą bazę wiedzy
  168. KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
  169. // Dodaj do niej wczytane reguły
  170. kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
  171. return kbase;
  172. }
  173.  
  174.  
  175. public static enum Plec {NIEZNANA,MEZCZYZNA,KOBIETA};
  176.  
  177. public static class Osoba {
  178. public String imie;
  179. public Plec plec;
  180. private Osoba matka,ojciec;
  181.  
  182. public void setPlec(Plec plec){
  183. this.plec = plec;
  184. }
  185.  
  186. public Osoba(String imie) {
  187. this.imie=imie;
  188. this.plec = Plec.NIEZNANA;
  189. //this.plec = (imie.charAt(imie.length()-1)=='a')?Plec.KOBIETA:Plec.MEZCZYZNA;
  190. }
  191.  
  192. public String toString() {
  193. return imie;
  194. }
  195.  
  196. public Plec getPlec(){
  197. return this.plec;
  198. }
  199.  
  200. }
  201.  
  202. public static class Relacja {
  203.  
  204. public boolean o1Matka(){
  205. return osoby[0].getPlec() ==Plec.KOBIETA;
  206. }
  207.  
  208. public Osoba[] osoby=new Osoba[2];
  209. public String relacja;
  210.  
  211. public Relacja(Osoba o1, Osoba o2, String relacja) {
  212. this.osoby[0]=o1;
  213. this.osoby[1]=o2;
  214. this.relacja=relacja;
  215.  
  216. }
  217.  
  218. public Osoba o1(){
  219. return osoby[0];
  220. }
  221.  
  222. public Osoba o2(){
  223. return osoby[1];
  224. }
  225.  
  226. }
  227.  
  228. public static class Message {
  229.  
  230. public static final int HELLO = 0;
  231. public static final int GOODBYE = 1;
  232. public static final int SI = 2;
  233.  
  234. private String message;
  235.  
  236. private int status;
  237.  
  238. public String getMessage() {
  239. return this.message;
  240. }
  241.  
  242. public void setMessage(String message) {
  243. this.message = message;
  244. }
  245.  
  246. public int getStatus() {
  247. return this.status;
  248. }
  249.  
  250. public void setStatus(int status) {
  251. this.status = status;
  252. }
  253.  
  254. }
  255.  
  256. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement