kie是jboss裡面一些相關專案的統稱,其中我們比較熟悉的就有jbpm和drools
。
這些專案都有一定的關聯關係,並且存在一些通用的api,比如說涉及到構建(building)、部署(deploying)和載入(loading)等;
jboss通過kie將jbpm和drools等相關專案進行了乙個整合,統一了他們的使用方式,提供了常見的公共api如kieservices、kiecontainer、kiesession等。
通過kieservices
物件得到乙個kiecontainer
,利用kiecontainer物件建立乙個新的kiesession
,建立session的時候傳入了乙個name,這個就是我們定義的kmodule.xml
檔案中定義的ksession的name。
kiecontainer根據kmodule.xml定義的ksession的名稱找到kiesession的定義,然後建立乙個kiesession的例項。
kiesession就是乙個到規則引擎的鏈結,通過它就可以跟規則引擎通訊,並且發起執行規則的操作。
通過ksession.insert方法來將事實(fact)插入到引擎中,也就是working memory中。 然後通過ksession.fireallrules方法來通知規則引擎執行規則。
kiecontainer可以理解為乙個kiebase的容器。
kiebase
就是乙個知識倉庫,包含了若干的規則、流程、方法等,在drools中主要就是規則和方法,kiebase本身並不包含執行時的資料之類的,如果需要執行規則kiebase中的規則的話,就需要根據kiebase建立kiesession。
public static void main(final string args)
kmodule.xml
<?xml version="1.0" encoding="utf-8"?>
7.0.0.final
org.kie
kie-api
$ org.drools
drools-core
$ org.drools
drools-compiler
$ org.drools
drools-decisiontables
$ org.drools
drools-templates
$
Drools如何使用
使用乙個新技術時。首先了解其作用,具體的這裡不再過多的闡述。參考 package com.hello import com.hello.hi rule hello when eval true then system.out.println hello end從上面截圖我們可以看出drl檔案的規範 ...
規則引擎 Drools的使用
專案遇到下步執行動作決策的業務,場景不同於常見的規則性業務,但也可以應用於規則引擎之中,剝離掉 中大量的邏輯判斷 同時加快決策結果的輸出。可見規則的定義是比較泛的,技術元件的應用也不是一成不變的。drools有專門的規則語法drl檔案,drools會記載drl檔案中編寫好的規則,供專案呼叫 因為一般...
為何在Drools中使用MVEL
為何在drools中使用mvel 當然大家問的第乙個問題會是為什麼選擇mvel而不是groovy,jython等等,我將原因列舉如下 快速反射模式 外掛程式式轉換器 規模自定義的語言擴充套件 靜態型別 推斷型別或者動態模式 支援可配置的語言特性 mvel遵從bsf 指令碼語言框架 不久也將會支援el...