Drools workbench

Drools的目的?

drools 编写规则的目的就是 为了 把复杂的,容易变动的业务逻辑和 不容变动的数据分开,为了实现可以随时灵活的改动业务逻辑而不用重新部署启动项目,为了以后的开发人员和产品人员可以更好的理解复杂的业务逻辑。

Drools workbench的作用

我们首先学习一些基本的drools语法,写出了一些规则文件,也可以正常的运行,那么这个workbench到底有什么用呢?不可能希望业务人员去开发工具里写规则,那么这就是个平台,6.4后叫 business center, 可以在上面对规则CRUD 高级规则模式:决策表 规则流,JBPM规则定义 部署规则包定义

分工

drools workbench组织业务逻辑,所有的规则都放在drools workbench中编写,管理;

代码中来整合数据,执行drools workbench中的规则。

合作

分工后是如何通信的?

1. 首先drools workbench中要写业务规则,那就需要实体类,否则就没有写业务的对象了。
   做法:把ofbiz.jar 导入到workbench 的仓库中作为资源,在项目中引用。如果有更新,重新导入,填写一样的groupId,artifactId,version 会覆盖之前上传的。项目不用重新构建。

2. 第二,在代码中,如何执行规则,并且执行到的永远是最新的。

   新建项目的时候,版本填写为1.0-SNAPSHOT形式,这样,每次build会生成新的文件,形式为 AllotCustomer-1.0-20170727.024026-1.jar;

   通过访问 workbench中的发布资源,就可以访问到最新的资源

   String url = "https://localhost:8443/drools-wb/maven2/"+groupId.replace(".", "/")+"/"+artifactId+"/"+version+"/"+artifactId+"-"+version+".jar"; 
复制代码

   代码 详情见工具类 KnowledgeSessionHelper 

   在drools模块里写了工具类来获取KieContainer 和kieSession, kieContainer 是用来从classpath中读取文件结构的,kieSession是 运行时的上下文

    KnowledgeSessionHelper 里 createRuleBase 方法,获取 kieContainer
	
    KnowledgeSessionHelper 里 getStatefulKnowledgeSesssion 方法 ,获取kieSession
复制代码

规则的执行

![1](F:/xkl/Downloads/drools使用 – Customer Engagement Center_files/1.png)

如何组合些的多个规则呢

  1. 级别salience 越高,越先执行。

  2. 规则流

需要注意的

1.规则不可以做间接的修改,Message中有partyInfos ,你要是改里面的partyInfo里的值,不会成功。

2.在操作中修改了条件中值,要注意下次判断是否准确。

3.操作中修改了一个fact的值之后,如果修改的值出现在了条件中,再次满足,会再次循环,可以加上属性用no-loop true 不允许多次执行

转载于:https://juejin.im/post/5c6f9ff9f265da2de7134f13

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值