Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DroolsTest.java
- package com.sample;
- import org.drools.KnowledgeBase;
- import org.drools.KnowledgeBaseFactory;
- import org.drools.builder.KnowledgeBuilder;
- import org.drools.builder.KnowledgeBuilderError;
- import org.drools.builder.KnowledgeBuilderErrors;
- import org.drools.builder.KnowledgeBuilderFactory;
- import org.drools.builder.ResourceType;
- import org.drools.io.ResourceFactory;
- import org.drools.logger.KnowledgeRuntimeLogger;
- import org.drools.logger.KnowledgeRuntimeLoggerFactory;
- import org.drools.runtime.StatefulKnowledgeSession;
- /**
- * 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
- KnowledgeBase kbase = readKnowledgeBase();
- StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
- KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
- // go !
- Message message = new Message();
- message.setMessage("Hello World");
- message.setStatus(Message.HELLO);
- Pomiar pomiar = new Pomiar(20, false);
- pomiar.setDym(false);
- Telefon tel = new Telefon();
- tel.setNumer(112);
- ksession.insert(message);
- ksession.fireAllRules();
- ksession.insert(pomiar);
- ksession.fireAllRules();
- ksession.insert(tel);
- ksession.fireAllRules();
- ksession.insert(new Straz());
- ksession.fireAllRules();
- logger.close();
- } catch (Throwable t) {
- t.printStackTrace();
- }
- }
- private static KnowledgeBase readKnowledgeBase() throws Exception {
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL);
- KnowledgeBuilderErrors errors = kbuilder.getErrors();
- if (errors.size() > 0) {
- for (KnowledgeBuilderError error: errors) {
- System.err.println(error);
- }
- throw new IllegalArgumentException("Could not parse knowledge.");
- }
- KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
- return kbase;
- }
- public static class Message {
- public static final int HELLO = 0;
- public static final int GOODBYE = 1;
- private String message;
- private int status;
- public String getMessage() {
- return this.message;
- }
- public void setMessage(String message) {
- this.message = message;
- }
- public int getStatus() {
- return this.status;
- }
- public void setStatus(int status) {
- this.status = status;
- }
- }
- public static class Pomiar {
- private Boolean dym;
- private int temperatura;
- public Pomiar(int temperatura, Boolean dym) {
- this.temperatura = temperatura;
- this.dym = dym;
- }
- public Boolean getDym() {
- return dym;
- }
- public void setDym(Boolean dym) {
- this.dym = dym;
- }
- public int getTemperatura() {
- return temperatura;
- }
- public void setTemperatura(int temperatura) {
- this.temperatura = temperatura;
- }
- }
- public static class Pozar {
- }
- public static class Telefon {
- private int numer;
- public int getNumer() {
- return numer;
- }
- public void setNumer(int numer) {
- this.numer = numer;
- }
- }
- public static class Straz {
- }
- }
- Sample.drl
- package com.sample
- import com.sample.DroolsTest.Message;
- import com.sample.DroolsTest.Telefon;
- import com.sample.DroolsTest.Pozar;
- import com.sample.DroolsTest.Pomiar;
- import com.sample.DroolsTest.Straz;
- /*
- rule "Hello World"
- when
- m : Message( status == Message.HELLO, myMessage : message )
- then
- System.out.println( myMessage );
- m.setMessage( "Goodbye cruel world" );
- m.setStatus( Message.GOODBYE );
- update( m );
- end
- rule "GoodBye"
- when
- Message( status == Message.GOODBYE, myMessage : message )
- then
- System.out.println( myMessage );
- end
- */
- rule "Pomiar"
- when
- pomiar: Pomiar(temp : (temperatura > 150) || dym)
- then
- System.out.println("Temperatura: " + temp);
- System.out.println("Pali się");
- insert(new Pozar());
- Telefon telefon = new Telefon();
- telefon.setNumer(112);
- insert(telefon);
- end
- rule "Pali sie"
- when
- telefon: Telefon()
- then
- System.out.println("Proszę zadzwonić pod numer " + telefon.getNumer());
- end
- rule "Straz"
- when
- straz: Straz()
- then
- System.out.println("Straż przyjechała!!!");
- end
- rule "Zgas pozar"
- when
- pozar: Pozar()
- then
- retract(pozar)
- System.out.println("POzar zgaszony!!");
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement