kie在drools jbpm uberfire裏廣泛被使用,下面對kie-api中的幾個重要組件做下簡單介紹
maven依賴
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
<version>6.0.2.Final</version>
</dependency>
幾個組件
KieServices:kie整體的入口,可以用來創建Container,resource,fileSystem等
KieContainer: KieContainer就是一個KieBase的容器,可以根據kmodule.xml 裏描述的KieBase信息來獲取具體的KieSession
KieBase: KieBase就是一個知識倉庫,包含了若干的規則、流程、方法等,在Drools中主要就是規則和方法,KieBase本身並不包含運行時的數據之類的,如果需要執行規則KieBase中的規則的話,就需要根據KieBase創建KieSession
KieSession:KieSession就是一個跟Drools引擎打交道的會話,其基於KieBase創建,它會包含運行時數據,包含“事實 Fact”,並對運行時數據事實進行規則運算
KieModule:是一個包含了多個kiebase定義的容器。一般用kmodule.xml來表示
KieModuleModel:是kmodule.xml 文件的java表示,可以不用添加xml文件而是通過程序代碼的方式來構建,
KieFileSystem:一個完整的文件系統,包括資源和組織結構
KieBuilder:當把所有的規則文件添加到KieFileSystem中後,通過把KieFileSystem傳遞給一個KieBuilder,可以構建出這個虛擬文件系統。其中有個buildAll()方法,會在構建好虛擬文件系統後,自動去構建KieModule
KieRepository:是一個KieModule的倉庫,包含了所有的KieModule描述,用一個ReleaseId做區分
KieResources:是一個定義瞭如何獲取資源的工廠,包括url,classpath,filesystem等
kiemodule.xml大概是一個樣子大概如下的xml:
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="rules" packages="rules">
<ksession name="ksession-rules"/>
</kbase>
<kbase name="dtables" packages="dtables">
<ksession name="ksession-dtables"/>
</kbase>
</kmodule>
kbase name:名字唯一標示
packages:資源文件所在的目錄
ksession name:唯一標識