之前介绍了很多商业化的规则引擎什么是客户端服务器模式,如drools、OpenL Tablets。虽然功能强大,但是由于是国外项目,英文文档多少有点障碍。在网上找了一下,还真有个国产开源的项目——urule。他是上海锐道信息技术有限公司出品,这里免费给他打个广告,挂个pro版的链接什么是客户端服务器模式:智能风控决策引擎-可视化Java规则引擎-上海锐道URule Pro。虽然开源版是一个阉割版,相比于urule-pro,有很多功能不能使用,但已经很不错了,我们可以根据开源项目定制开发。
URULE PRO版与开源版主要功能比较
特性
URULE PRO版
URULE开源版
向导式决策集
有
有
脚本式决策集
有
有
决策树
有
有
决策流
有
有
决策表
有
有
交叉决策表
有
无
复杂评分卡
有
无
文件名、项目名重构
有
无
参数名、变量常量名重构
有
无
Excel决策表导入
有
无
规则集模版保存与加载
有
无
中文项目名和文件名支持
有
无
服务器推送知识包到客户端功能的支持
有
无
知识包优化与压缩的支持
有
无
客户端服务器模式下大知识包的推拉支持
有
无
规则集中执行组的支持
有
无
规则流中所有节点向导式条件与动作配置的支持
有
无
循环规则多循环单元支持
有
无
循环规则中无条件执行的支持
有
无
导入项目自动重命名功能
有
无
规则树构建优化
有
无
对象查找索引支持
有
无
规则树中短路计算的支持
有
无
规则条件冗余计算缓存支持
有
无
基于方案的批量场景测试功能
有
无
知识包调用监控
有
无
更为完善的文件读写权限控制
有
无
知识包版本控制
有
无
SpringBean及Java类的热部署
有
无
技术支持
有
无
简单使用什么是客户端服务器模式:1、概念:
库:用来存储规则操作的实体及规则触发后的动作。包括:参数库,变量库,常量库,动作库。决策集:用来设置一个规则的集合,有两种设置方式,向导方式、脚本方式。决策表:以表格形式设置规则。决策树:以树形结构(思维导图的方式)设置规则。评分卡:根据触发的规则,计算得分。决策流:通过绑定多个决策节点,以流的形式进行规则的复合处理。知识包:是将规则进行打包,供客户端使用。2、接下来做一个简单的事例:
首先我们创建一个新项目,edas。然后创建一个参数库,一个字段是年龄、一个字段是姓名。
这里我们也可以创建一个变量库,如果server端有相关自定义类,我们还可以通过解析自动生成字段。
然后我们开始在决策集里制定规则:
当姓名不为空并且年龄小于18,我们输出一个message,用户未成年。
最后,我们定义一个知识包,把规则加载发布。
客户端怎么使用呢什么是客户端服务器模式?
在客户端,我们声明KnowledgeService的bean,调用getKnowledge获取知识包,创建一个KnowledgeSession,通过调用KnowledgeSession的fireRules,就可以使用server端创建的规则集了。
@RequestMapping("/ageRule") public Result rule(@RequestParam String age,@RequestParam String name) throws IOException { //创建一个KnowledgeSession对象 KnowledgeService knowledgeService = (KnowledgeService) Utils.getApplicationContext().getBean(KnowledgeService.BEAN_ID); KnowledgePackage knowledgePackage = knowledgeService.getKnowledge("edas/user_package"); KnowledgeSession session = KnowledgeSessionFactory.newKnowledgeSession(knowledgePackage); Map<String, Object> param = new HashMap<>(); param.put("age", age); param.put("name",name); RuleExecutionResponse result = session.fireRules(param); System.out.println("年龄:" + session.getParameter("age")); System.out.println(session.getParameter("message")); return new Result("0",session.getParameter("message").toString()); }客户端比较简单,很容易接入咱们的业务系统中。这个开源项目操作容易,便于管理。已经完全满足我们项目中的需要了,很赞。开源代码还另外提供了springboot版本,但是springboot里没有太多代码,只是加载了server里注册的bean。页面交互层也仅仅用了servlet,也没有过多的分层。为了后续的定制开发,我后面会对他进行一系列的框架改造。
标签: 什么是客户端服务器模式
评论列表
,有两种设置方式,向导方式、脚本方式。决策表:以表格形式设置规则。决策树:以树形结构(思维导图的方式)设置规则。评分卡:根据触发的规则,计算得分。决策流:通过绑
public Result rule(@RequestParam String age,@RequestParam String name) throws IOException { //创建一个KnowledgeSession对象 KnowledgeService kn