<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、減少編寫“硬程式碼”業務規則的成本和風險
三、使用方式:
(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(); }}