開心生活站

位置:首頁 > IT科技 > 

java規則引擎

IT科技1.39W

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

很多朋友都想知道java規則引擎是什麼?下面就一起來了解一下吧~

一、簡介:

Drools就是爲了解決業務代碼和業務規則分離的引擎。Drools 規則是在 Java 應用程序上運行的,其要執行的步驟順序由代碼確定,爲了實現這一點,Drools 規則引擎將業務規則轉換成執行樹。

二、特性:

優點:   

1、簡化系統架構,優化應用   

2、提高系統的可維護性和維護成本   

3、方便系統的整合   

4、減少編寫“硬代碼”業務規則的成本和風險

java規則引擎

三、使用方式:

(1)Maven 依賴:

<dependencies>    <dependency>        <groupId>org.kie</groupId>        <artifactId>kie-api</artifactId>        <version>6.5.0.Final</version>    </dependency>    <dependency>        <groupId>org.drools</groupId>        <artifactId>drools-compiler</artifactId>        <version>6.5.0.Final</version>        <scope>runtime</scope>    </dependency>    <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>4.12</version>    </dependency></dependencies>

(2)新建配置文件/src/resources/META-INF/kmodule.xml

<?xml version="1.0" encoding="UTF-8"?><kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">    <kbase name="rules" packages="rules">        <ksession name="myAgeSession"/>    </kbase></kmodule>

(3)新建drools規則文件/src/resources/rules/age.drl

import com.lrq.wechatDemo.domain.User               // 導入類dialect  "mvel"rule "age"                                      // 規則名,唯一    when        $user : User(age<15 || age>60)     //規則的條件部分    then        System.out.println("年齡不符合要求!");end

測試用例:

/** * CreateBy: haleyliu * CreateDate: 2018/12/26 */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"classpath*:applicationContext.xml"})public class TestUser {    private static KieContainer container = null;    private KieSession statefulKieSession = null;    @Test    public void test(){        KieServices kieServices = KieServices.Factory.get();        container = kieServices.getKieClasspathContainer();        statefulKieSession = container.newKieSession("myAgeSession");        User user = new User("duval yang",12);        statefulKieSession.insert(user);        statefulKieSession.fireAllRules();        statefulKieSession.dispose();    }}

標籤:引擎 規則 java