什么是客户端服务器模式客户机服务器工作模式

平心在线px111 108 2

之前介绍了很多商业化的规则引擎什么是客户端服务器模式,如drools、OpenL Tablets。虽然功能强大,但是由于是国外项目,英文文档多少有点障碍。在网上找了一下,还真有个国产开源的项目——urule。他是上海锐道信息技术有限公司出品,这里免费给他打个广告,挂个pro版的链接什么是客户端服务器模式:智能风控决策引擎-可视化Java规则引擎-上海锐道URule Pro。虽然开源版是一个阉割版,相比于urule-pro,有很多功能不能使用,但已经很不错了,我们可以根据开源项目定制开发。

URULE PRO版与开源版主要功能比较

特性

URULE PRO版

URULE开源版

向导式决策集

脚本式决策集

决策树

决策流

决策表

交叉决策表

复杂评分卡

文件名、项目名重构

参数名、变量常量名重构

Excel决策表导入

规则集模版保存与加载

中文项目名和文件名支持

服务器推送知识包到客户端功能的支持

知识包优化与压缩的支持

客户端服务器模式下大知识包的推拉支持

规则集中执行组的支持

规则流中所有节点向导式条件与动作配置的支持

循环规则多循环单元支持

循环规则中无条件执行的支持

导入项目自动重命名功能

规则树构建优化

对象查找索引支持

规则树中短路计算的支持

规则条件冗余计算缓存支持

基于方案的批量场景测试功能

知识包调用监控

更为完善的文件读写权限控制

知识包版本控制

SpringBean及Java类的热部署

技术支持

简单使用什么是客户端服务器模式

1、概念:

库:用来存储规则操作的实体及规则触发后的动作。包括:参数库,变量库,常量库,动作库。决策集:用来设置一个规则的集合,有两种设置方式,向导方式、脚本方式。决策表:以表格形式设置规则。决策树:以树形结构(思维导图的方式)设置规则。评分卡:根据触发的规则,计算得分。决策流:通过绑定多个决策节点,以流的形式进行规则的复合处理。知识包:是将规则进行打包,供客户端使用。

2、接下来做一个简单的事例:

首先我们创建一个新项目,edas。然后创建一个参数库,一个字段是年龄、一个字段是姓名。

什么是客户端服务器模式客户机服务器工作模式-第1张图片-平心在线

这里我们也可以创建一个变量库,如果server端有相关自定义类,我们还可以通过解析自动生成字段。

什么是客户端服务器模式客户机服务器工作模式-第2张图片-平心在线

然后我们开始在决策集里制定规则:

什么是客户端服务器模式客户机服务器工作模式-第3张图片-平心在线

当姓名不为空并且年龄小于18,我们输出一个message,用户未成年。

最后,我们定义一个知识包,把规则加载发布。

什么是客户端服务器模式客户机服务器工作模式-第4张图片-平心在线

客户端怎么使用呢什么是客户端服务器模式

在客户端,我们声明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,也没有过多的分层。为了后续的定制开发,我后面会对他进行一系列的框架改造。

标签: 什么是客户端服务器模式

发表评论 (已有2条评论)

评论列表

2022-05-02 14:00:59

,有两种设置方式,向导方式、脚本方式。决策表:以表格形式设置规则。决策树:以树形结构(思维导图的方式)设置规则。评分卡:根据触发的规则,计算得分。决策流:通过绑

2022-05-02 05:26:37

public Result rule(@RequestParam String age,@RequestParam String name) throws IOException { //创建一个KnowledgeSession对象 KnowledgeService kn