Advertisement
malgoska

Untitled

Nov 25th, 2015
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.03 KB | None | 0 0
  1. DroolsTest.java
  2. package com.sample;
  3.  
  4. import org.drools.KnowledgeBase;
  5. import org.drools.KnowledgeBaseFactory;
  6. import org.drools.builder.KnowledgeBuilder;
  7. import org.drools.builder.KnowledgeBuilderError;
  8. import org.drools.builder.KnowledgeBuilderErrors;
  9. import org.drools.builder.KnowledgeBuilderFactory;
  10. import org.drools.builder.ResourceType;
  11. import org.drools.io.ResourceFactory;
  12. import org.drools.logger.KnowledgeRuntimeLogger;
  13. import org.drools.logger.KnowledgeRuntimeLoggerFactory;
  14. import org.drools.runtime.StatefulKnowledgeSession;
  15.  
  16. /**
  17. * This is a sample class to launch a rule.
  18. */
  19. public class DroolsTest {
  20.  
  21. public static final void main(String[] args) {
  22. try {
  23. // load up the knowledge base
  24. KnowledgeBase kbase = readKnowledgeBase();
  25. StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
  26. KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
  27. // go !
  28. Message message = new Message();
  29. message.setMessage("Hello World");
  30. message.setStatus(Message.HELLO);
  31. Pomiar pomiar = new Pomiar(20, false);
  32. pomiar.setDym(false);
  33. Telefon tel = new Telefon();
  34. tel.setNumer(112);
  35. ksession.insert(message);
  36. ksession.fireAllRules();
  37. ksession.insert(pomiar);
  38. ksession.fireAllRules();
  39. ksession.insert(tel);
  40. ksession.fireAllRules();
  41. ksession.insert(new Straz());
  42. ksession.fireAllRules();
  43. logger.close();
  44. } catch (Throwable t) {
  45. t.printStackTrace();
  46. }
  47. }
  48.  
  49. private static KnowledgeBase readKnowledgeBase() throws Exception {
  50. KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
  51. kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL);
  52. KnowledgeBuilderErrors errors = kbuilder.getErrors();
  53. if (errors.size() > 0) {
  54. for (KnowledgeBuilderError error: errors) {
  55. System.err.println(error);
  56. }
  57. throw new IllegalArgumentException("Could not parse knowledge.");
  58. }
  59. KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
  60. kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
  61. return kbase;
  62. }
  63.  
  64. public static class Message {
  65.  
  66. public static final int HELLO = 0;
  67. public static final int GOODBYE = 1;
  68.  
  69. private String message;
  70.  
  71. private int status;
  72.  
  73. public String getMessage() {
  74. return this.message;
  75. }
  76.  
  77. public void setMessage(String message) {
  78. this.message = message;
  79. }
  80.  
  81. public int getStatus() {
  82. return this.status;
  83. }
  84.  
  85. public void setStatus(int status) {
  86. this.status = status;
  87. }
  88.  
  89. }
  90.  
  91. public static class Pomiar {
  92. private Boolean dym;
  93. private int temperatura;
  94.  
  95. public Pomiar(int temperatura, Boolean dym) {
  96. this.temperatura = temperatura;
  97. this.dym = dym;
  98. }
  99.  
  100. public Boolean getDym() {
  101. return dym;
  102. }
  103.  
  104. public void setDym(Boolean dym) {
  105. this.dym = dym;
  106. }
  107.  
  108. public int getTemperatura() {
  109. return temperatura;
  110. }
  111.  
  112. public void setTemperatura(int temperatura) {
  113. this.temperatura = temperatura;
  114. }
  115. }
  116.  
  117. public static class Pozar {
  118.  
  119. }
  120.  
  121. public static class Telefon {
  122. private int numer;
  123.  
  124. public int getNumer() {
  125. return numer;
  126. }
  127.  
  128. public void setNumer(int numer) {
  129. this.numer = numer;
  130. }
  131. }
  132.  
  133. public static class Straz {
  134.  
  135. }
  136.  
  137. }
  138.  
  139.  
  140.  
  141. Sample.drl
  142.  
  143. package com.sample
  144.  
  145. import com.sample.DroolsTest.Message;
  146. import com.sample.DroolsTest.Telefon;
  147. import com.sample.DroolsTest.Pozar;
  148. import com.sample.DroolsTest.Pomiar;
  149. import com.sample.DroolsTest.Straz;
  150.  
  151. /*
  152. rule "Hello World"
  153. when
  154. m : Message( status == Message.HELLO, myMessage : message )
  155. then
  156. System.out.println( myMessage );
  157. m.setMessage( "Goodbye cruel world" );
  158. m.setStatus( Message.GOODBYE );
  159. update( m );
  160. end
  161.  
  162. rule "GoodBye"
  163. when
  164. Message( status == Message.GOODBYE, myMessage : message )
  165. then
  166. System.out.println( myMessage );
  167. end
  168. */
  169. rule "Pomiar"
  170. when
  171. pomiar: Pomiar(temp : (temperatura > 150) || dym)
  172. then
  173. System.out.println("Temperatura: " + temp);
  174. System.out.println("Pali się");
  175. insert(new Pozar());
  176. Telefon telefon = new Telefon();
  177. telefon.setNumer(112);
  178. insert(telefon);
  179.  
  180. end
  181.  
  182. rule "Pali sie"
  183. when
  184. telefon: Telefon()
  185. then
  186. System.out.println("Proszę zadzwonić pod numer " + telefon.getNumer());
  187. end
  188.  
  189. rule "Straz"
  190. when
  191. straz: Straz()
  192. then
  193. System.out.println("Straż przyjechała!!!");
  194. end
  195.  
  196. rule "Zgas pozar"
  197. when
  198. pozar: Pozar()
  199. then
  200. retract(pozar)
  201. System.out.println("POzar zgaszony!!");
  202.  
  203. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement