上节课《Drools集成CDI(一)》中我们介绍了CDI的基本使用,这节课带大家学习一下Drools如何集成CDI。
添加依赖
首先使用drools7的话需要在正常使用CDI的基础上添加drools-cdi的依赖:
<dependency> <groupId>org.drools</groupId> <artifactId>drools-cdi</artifactId> <version>${drools.version}</version> </dependency>
beans.xml和kmodule.xml配置与之前的使用方式一致;
使用方式一
public class Chapter4 { @KSession KieSession kieSession; @Inject Chapter4(KieSession kieSession){ this.kieSession = kieSession; } public static void main(String[] args) { Weld weld = new Weld(); Chapter4 chapter4 = weld.initialize().instance().select(Chapter4.class).get(); chapter4.doFire(); } private void doFire(){ int nums = kieSession.fireAllRules(); System.out.println("Fire " + nums + " rules!"); } }
方式二
将获取对象的方式由Weld替换为SeContainer:
SeContainer seContainer = null; try { seContainer = SeContainerInitializer.newInstance().initialize(); Chapter4 chapter4 = seContainer.select(Chapter4.class).get(); chapter4.doFire(); } finally { if (seContainer != null && seContainer.isRunning()) { seContainer.close(); } }
更多详细内容请参考《Drools7规则引擎进阶教程》