Drools Getting Started demo

The first step in adding dependencies POM

<dependency>
  <groupId>org.kie</groupId>
  <artifactId>kie-api</artifactId>
  <version>7.1.0.Final</version>
</dependency>
<dependency>
  <groupId>org.kie</groupId>
  <artifactId>kie-ci</artifactId>
  <version>7.1.0.Final</version>
</dependency>

The second step src / main / resources directory New META-INF folder, create new files and folders in the META-INF file kmodule.xml

<?xml version="1.0" encoding="UTF-8" ?>
<kmodule xmlns="http://www.drools.org/xsd/kmodule">
    <kbase name="DroolsBase">
        <ksession name="droolssession"/>
    </kbase>
</kmodule>

The third step src New drools.drl file (the file name at random) / main under / resources directory

package test

import test.Message
import test.Message2
import test.MqttMessage
import test.Run
import test.Run2

rule "alarm"
    when
        message : Message(productId=="101",status==1)
    then
        new Run().run();
end

rule "temperature"
    when
        message2 : Message2(productId=="123",status==1)
        run2:Run2()
    then
        message2.setProductId(12345L);
        run2.run(message2);
end

rule "mqttTest"
    when
        message2:Message2()
        mqttMessage:MqttMessage(message2.productId==9999)
        run2:Run2()
    then
        run2.run(message2);
end

Step four new Test class

package test;

import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;

public class Test {
    public static void main(String[] args) {
        KieServices kieServices = KieServices.Factory.get();
        KieContainer kieContainer = kieServices.getKieClasspathContainer();// kmodule.xml
        //配置文件new对象
        KieSession kieSession = kieContainer.newKieSession("droolssession");
        Message message = new Message();
        message.setProductId(101L);
        message.setStatus(1);
        kieSession.insert(message);
        int i = kieSession.fireAllRules();
        System.out.println("========" + i);
        kieSession.dispose();
        
        //传输对象 及对象传参
        kieSession = kieContainer.newKieSession("droolssession");
        Message2 message2 = new Message2();
        message2.setProductId(123L);
        message2.setStatus(1);
        Run2 run2 = new Run2();
        
        kieSession.insert(message2);
        kieSession.insert(run2);
        
        int count = kieSession.fireAllRules();
        System.out.println("========" +count);
        kieSession.dispose();
        
        
        //对象中有子对象
        kieSession = kieContainer.newKieSession("droolssession");
        MqttMessage mqttMessage = new MqttMessage();
        Message2 message22 = new Message2();
        message22.setProductId(9999L);
        mqttMessage.setMessage2(message22);
        Run2 run22 = new Run2();
        
        kieSession.insert(message22);
        kieSession.insert(mqttMessage);
        kieSession.insert(run22);
        
        int count22 = kieSession.fireAllRules();
        System.out.println("========" +count22);
        kieSession.dispose();
    }
}

Message class

public class Message {
    private Long productId;
    private Integer status;
    

    public Long getProductId() {
        return productId;
    }

    public void setProductId(Long productId) {
        this.productId = productId;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

}

Message2 class

package test;

public class Message2 {
    private Long productId;
    private Integer status;
    

    public Long getProductId() {
        return productId;
    }

    public void setProductId(Long productId) {
        this.productId = productId;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

}

MqttMessage class

package test;

public class MqttMessage {
    private Long id;
    
    private Message2 message2;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Message2 getMessage2() {
        return message2;
    }

    public void setMessage2(Message2 message2) {
        this.message2 = message2;
    }

    
}

Guess you like

Origin www.cnblogs.com/load6685/p/12121595.html