1、创建kmodule.xml文件
在src\main\resources目录下新建名为META-INF的文件夹,在文件夹内新建名为kmodule.xml的文件,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule"> <!-- packages值要与src\main\resources目录下rules文件夹名一致 --> <kbase name="rules" packages="rules"> <ksession name="demo-ksession-rules" /> </kbase> </kmodule>
2、创建drl规则文件
在src\main\resources目录下新建名为rules的文件夹,名称必须要与src\main\resources\kmodule.xml文件中的packages属性值一致。在文件夹内新建名为demo_rules.drl的规则文件,文件内容如下:
package com.seasy.drools.test //包名可以随意指定 //导入规则文件需要使用到的外部类或类的静态方法 import com.seasy.repeater.vo.HeaderVo; //不循环执行规则 no-loop true rule "responseHeader" //优先级,数值越大越先执行 salience 100 when vo : HeaderVo(msgId!="") then System.out.println("message id is: " + vo.getMsgId()); System.out.println("message type is: " + vo.getMsgType()); double tmp = 5000 / 4.5; System.out.println("tmp = " + tmp); if("1001".equals(vo.getMsgType())) { vo.setResultCode("0000"); vo.setResultCodeMsg("success"); } else { vo.setResultCode("0001"); vo.setResultCodeMsg("error"); } System.out.println("result code: " + vo.getResultCode()); end
3、pom.xml文件依赖包
<dependency> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId> <version>6.3.0.Final</version> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-compiler</artifactId> <version>6.3.0.Final</version> </dependency> <dependency> <groupId>org.kie</groupId> <artifactId>kie-internal</artifactId> <version>6.3.0.Final</version> </dependency> <dependency> <groupId>org.kie</groupId> <artifactId>kie-api</artifactId> <version>6.3.0.Final</version> </dependency>
4、编写java代码
//通过KieServices来获取各种对象来完成规则构建、管理和执行等操作 KieServices kieService = KieServices.Factory.get(); //KieContainer是KieBase的容器,KieBase是一个知识仓库,包含规则、方法等 KieContainer kieContainer = kieService.getKieClasspathContainer(); //KIE默认读取src/main/resources/META-INF/kmodule.xml文件,并生成KieSession KieSession kieSession = kieContainer.newKieSession("demo-ksession-rules"); HeaderVo vo = new HeaderVo(); vo.setMsgId(StringUtil.getUUID()); //vo.setMsgType("1001"); //将事实(Fact)插入到引擎 kieSession.insert(vo); //通知规则引擎执行规则 kieSession.fireAllRules(); System.out.println("result code: " + vo.getResultCode()); System.out.println("result code message: " + vo.getResultCodeMsg());
5、输出结果
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. message id is: 82175a5d41f643aeb453b13e32fd1f58 message type is: null tmp = 1111.111111111111 result code: 0001 result code: 0001 result code message: error
相关推荐
规则引擎一般是一下情况使用 1.为提高效率,管理流程必须自动化,即使现代商业规则异常复杂。 2.市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速、低成本的更新。 3.为了快速、低成本的更新,业务人员...
下面是一个使用Drools解决实际问题的范例: 例如,我们想开发一个智能的决策支持系统,系统可以根据不同的条件进行决策。我们可以使用Drools来实现这个系统。首先,我们定义了一些规则,例如: 规则1:如果用户的...
规则引擎技术是一项很有吸引力的技术.首先介绍了规则引擎的相关概念及其实现原理.然后重点介绍了Java规则引擎技术的规范和一个采用XML和java...最后给出了利用Drools解决实际问题的范例并探讨了该技术的不足和发展前景
规则引擎技术是一项很有吸引力的技术。首先介绍了规则引擎的相关概念及其实现原理。然后重点介 绍了Java规则引擎技术的规范和一个采用XML和java语言实现的规则引擎...决实际问题的范例并探讨了该技术的不足和发展前景。
这个压缩包中的“JBPM范例”旨在帮助用户快速理解并上手JBPM,通过实际运行的示例,使得学习过程更加直观且易懂。 JBPM的核心功能包括: 1. **流程建模**:JBPM使用BPMN 2.0(Business Process Model and Notation...
正如在drools教程中所解释的那样,使用drools时,您将使用的经典开发范例从过程式更改为声明式编程。 转变并不容易完成,但需要一套入门教程,可以帮助您轻松实现流口水的算法/业务规则。 作为一名普通的流口水...
jBPM可以与Drools项目相结合,以支持将这些范例集成到一起的统一环境,您可以将业务逻辑作为过程,规则和事件的组合进行建模。 工作是MAVEN+eclipse jBPM jars也可以在中央maven仓库中使用 (也可以在JBoss maven...
41 2.9.5 导入和使用范例 41 2.10 例程:jBPM HelloWorld 43 2.11 小结 45 第3章 使用jBPM图形化流程设计器(GPD)设计流程 46 3.1 创建一个新流程 47 3.2 编辑流程定义源 49 3.3 例程:设计一个“复杂的”业务流程 ...