Advertisement
kator

DroolsTest

Oct 24th, 2017
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.87 KB | None | 0 0
  1. package com.sample
  2.  
  3. import com.sample.DroolsTest.Message;
  4. import com.sample.DroolsTest.Pomiar;
  5.  
  6.  /*
  7. rule "Hello World"
  8.     when
  9.         m : Message( status == Message.HELLO, myMessage : message )
  10.     then
  11.         m.setMessage( "Goodbye cruel world" );
  12.         m.setStatus( Message.GOODBYE );
  13.         update( m );
  14. end
  15.  
  16. rule "SI"
  17.     when
  18.         m : Message( status == Message.SI, myMessage : message )
  19.     then
  20.         m.setMessage( "SI LAB TEST MSG" );
  21.         m.setStatus( Message.GOODBYE );
  22.         update( m );
  23. end
  24.  
  25. rule "GoodBye"
  26.     when
  27.         Message( status == Message.GOODBYE, myMessage : message )
  28.     then
  29.         System.out.println( myMessage );
  30. end
  31. */
  32.  
  33. rule "PALI"
  34.     when
  35.         p : Pomiar( getDym() == Pomiar.PALI, pom = pomiar)
  36.     then
  37.         System.out.println( "PALI SIĘ\nProszę zadzwonić na numer 112."+ pom.getTemperatura() );
  38. end
  39.  
  40. rule "NIEPALI"
  41.     when
  42.         p : Pomiar( getDym() == Pomiar.NIEPALI, pom = pomiar)
  43.     then
  44.         System.out.println( "NIE PALI SIĘ, CZEKAMY NA POZAR ELO" + pom.getTemperatura());
  45. end
  46. ///////////////////////////////////////////////////////////////////////
  47. package com.sample;
  48.  
  49. import org.drools.KnowledgeBase;
  50. import org.drools.KnowledgeBaseFactory;
  51. import org.drools.builder.KnowledgeBuilder;
  52. import org.drools.builder.KnowledgeBuilderError;
  53. import org.drools.builder.KnowledgeBuilderErrors;
  54. import org.drools.builder.KnowledgeBuilderFactory;
  55. import org.drools.builder.ResourceType;
  56. import org.drools.io.ResourceFactory;
  57. import org.kie.api.KieServices;
  58. import org.kie.api.logger.KieRuntimeLogger;
  59. import org.kie.api.runtime.KieContainer;
  60. import org.kie.api.runtime.KieSession;
  61.  
  62. /**
  63.  * This is a sample class to launch a rule.
  64.  */
  65. public class DroolsTest {
  66.     static KieSession kSession;
  67.     static KieServices ks;
  68.     static KieContainer kContainer;
  69.     static KieRuntimeLogger kLogger;
  70.    
  71.     private static void init(){
  72.         try{
  73.             ks = KieServices.Factory.get();
  74.             kContainer = ks.getKieClasspathContainer();
  75.             kSession = kContainer.newKieSession("ksession-rules");
  76.             kLogger = ks.getLoggers().newFileLogger(kSession, "test");
  77.         }catch(Throwable t){
  78.             t.printStackTrace();
  79.         }
  80.     }
  81.    
  82.     private static void insert(Object o){
  83.         kSession.insert(o);
  84.     }
  85.    
  86.     private static void loadNGo(){
  87.         kSession.fireAllRules();
  88.         kLogger.close();
  89.     }
  90.    
  91.     public static final void main(String[] args) {
  92.         init();
  93.        
  94.        
  95.         insert(new Pomiar(151));
  96.         insert(new Pomiar(150));
  97.  
  98.        
  99.         loadNGo();
  100.  
  101.     }
  102.  
  103.     private static KnowledgeBase readKnowledgeBase() throws Exception {
  104.         // Utwórz obiekt KnowledgeBuilder, który potrafi wczytywać reguły z różnych źródeł
  105.         KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
  106.         // Dodaj reguły zawarte w Sample.drl w zasobach programu, zapisane w formacie DRL
  107.         kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL);
  108.         // Wyszukaj błędy
  109.         KnowledgeBuilderErrors errors = kbuilder.getErrors();
  110.         // Jeżeli są błędy wyświetl je i rzuć wyjątek
  111.         if (errors.size() > 0) {
  112.             for (KnowledgeBuilderError error: errors) {
  113.                 System.err.println(error);
  114.             }    
  115.             throw new IllegalArgumentException("Could not parse knowledge.");
  116.         }
  117.         // Stwórz pustą bazę wiedzy
  118.         KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
  119.         // Dodaj do niej wczytane reguły
  120.         kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
  121.         return kbase;
  122.     }
  123.    
  124.  
  125.     public static class Pomiar {
  126.         public static final int PALI = 0;
  127.         public static final int NIEPALI = 1;
  128.         private int dym;
  129.         private int temperatura;
  130.        
  131.         public Pomiar(int temperatura){
  132.  
  133.             this.temperatura = temperatura;
  134.             this.dym = (temperatura > 150)?PALI:NIEPALI;
  135.         }
  136.        
  137.         public int getTemperatura(){
  138.             return this.temperatura;
  139.         }
  140.        
  141.         public void setTemperatura(int temperatura){
  142.             this.temperatura = temperatura;
  143.         }
  144.        
  145.         public int getDym() {
  146.             return this.dym;
  147.         }
  148.  
  149.         public void setDym(int dym) {
  150.             this.dym = dym;
  151.         }
  152.     }
  153.    
  154.     public static class Message {
  155.  
  156.         public static final int HELLO = 0;
  157.         public static final int GOODBYE = 1;
  158.         public static final int SI = 2;
  159.  
  160.         private String message;
  161.  
  162.         private int status;
  163.  
  164.         public String getMessage() {
  165.             return this.message;
  166.         }
  167.  
  168.         public void setMessage(String message) {
  169.             this.message = message;
  170.         }
  171.  
  172.         public int getStatus() {
  173.             return this.status;
  174.         }
  175.  
  176.         public void setStatus(int status) {
  177.             this.status = status;
  178.         }
  179.  
  180.     }
  181.  
  182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement