【Drools规则引擎】基础入门案例五(Kie-Server+WorkBench)
【Drools规则引擎】基础入门案例五(Kie-Server+WorkBench)
- 介绍
- 搭建WorkBench
- 搭建Kie-Server
- 使用WorkBench
- 访问登入
- 客户端测试
介绍
java语言开发的开源业务规则引擎
DROOLS(JBOSS RULES )具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需的业务规则。
搭建WorkBench
本文采用Docker部署
docker pull jboss/drools-workbench-showcase
docker run -p 8080:8080 -p 8001:8001 -d --name drools-workbench jboss/drools-workbench-showcase:latest
搭建Kie-Server
docker pull jboss/kie-server-showcase
docker run -p 8180:8080 -d --name kie-server --link drools-workbench:kie_wb jboss/kie-server-showcase:latest
使用WorkBench
访问登入
浏览器访问:http://ip:port/business-central
输入账号 admin 密码 admin 登入
点击 design 设计
创建项目
填写项目信息
添加包 (后续添加都是 Create New Asset 或者 Add Asset)
添加数据对象
创建属性
创建规则文件并编辑保存
规则文件代码
package cn.flowboot;import cn.flowboot.entity.Order;//100元以下,不加分
rule "score_1"
when$order:Order(amout<100)
then$order.setScore(0);System.out.println("触发规则:100元不加分");
end//100元- 500元加100分
rule "score_2"
when$order:Order(amout>=100&&amout < 500)
then$order.setScore(100);System.out.println("触发规则:100元-500元加100分");
end//500元- 1000元加500分
rule "score_3"
when$order:Order(amout>=500&&amout < 1000)
then$order.setScore(500);System.out.println("触发规则:500元-1000元加500分");
end//1000元以上加1000分
rule "score_4"
when$order:Order(amout>1000)
then$order.setScore(0);System.out.println("触发规则:1000元以上加1000分");
end
然后需要设置Kie Base
添加Kie Session
构建和部署
查看 kie-server
配置进程保存
客户端测试
import cn.flowboot.entity.Order;
import com.alibaba.fastjson.JSONObject;
import org.junit.Test;
import org.kie.api.KieServices;
import org.kie.api.command.Command;
import org.kie.api.command.KieCommands;
import org.kie.api.runtime.ExecutionResults;
import org.kie.server.api.marshalling.MarshallingFormat;
import org.kie.server.api.model.ServiceResponse;
import org.kie.server.client.KieServicesClient;
import org.kie.server.client.KieServicesConfiguration;
import org.kie.server.client.KieServicesFactory;
import org.kie.server.client.RuleServicesClient;import java.io.InputStream;
import java.util.LinkedList;
import java.util.List;/*** <h1></h1>** @version 1.0* @author: Vincent Vic* @since: 2022/01/09*/
public class WorkBenchTest {public static final String SERVER_URL = "http://119.29.196.142:8180/kie-server/services/rest/server";public static final String PASSWORD = "kieserver1!";public static final String USERNAME = "kieserver";public static final String KIE_CONTAINER_ID = "order-relus";@Testpublic void workBenchTest() {// KisService 配置信息设置KieServicesConfiguration kieServicesConfiguration =KieServicesFactory.newRestConfiguration(SERVER_URL, USERNAME, PASSWORD, 10000L);kieServicesConfiguration.setMarshallingFormat(MarshallingFormat.JSON);// 创建规则服务客户端KieServicesClient kieServicesClient = KieServicesFactory.newKieServicesClient(kieServicesConfiguration);RuleServicesClient ruleServicesClient = kieServicesClient.getServicesClient(RuleServicesClient.class);// 规则输入条件Order order = new Order();order.setAmout(234.1);// 命令定义,包含插入数据,执行规则KieCommands kieCommands = KieServices.Factory.get().getCommands();List<Command<?>> commands = new LinkedList<Command<?>>();commands.add(kieCommands.newInsert(order, "order"));commands.add(kieCommands.newFireAllRules());ServiceResponse<ExecutionResults> results = ruleServicesClient.executeCommandsWithResults(KIE_CONTAINER_ID,kieCommands.newBatchExecution(commands,"kiesession1"));// 返回值读取Order value = (Order) results.getResult().getValue("order");System.out.println(JSONObject.toJSON(value).toString());}}
输出 {“score”:100,“amout”:234.1}
修改规则,重新构建部署
package cn.flowboot;import cn.flowboot.entity.Order;//100元以下,不加分
rule "score_1"
when$order:Order(amout<300)
then$order.setScore(0);System.out.println("触发规则:100元不加分");
end//100元- 500元加100分
rule "score_2"
when$order:Order(amout>=300&&amout < 500)
then$order.setScore(100);System.out.println("触发规则:100元-500元加100分");
end//500元- 1000元加500分
rule "score_3"
when$order:Order(amout>=500&&amout < 1000)
then$order.setScore(500);System.out.println("触发规则:500元-1000元加500分");
end//1000元以上加1000分
rule "score_4"
when$order:Order(amout>1000)
then$order.setScore(0);System.out.println("触发规则:1000元以上加1000分");
end
重新运行,此时规则已经被动态修改
输出 :{“score”:0,“amout”:234.1}
【Drools规则引擎】基础入门案例五(Kie-Server+WorkBench)相关推荐
- Drools规则引擎之入门案例(一)
1.问题引出 一个在线申请信用卡的业务场景,用户需要录入个人信息,通过上图可以看到,用户录入的个人信息包括姓名.性别.年龄.学历.电话.所在公司.职位.月收入.是否有房.是否有车.是否有信用卡等.录入 ...
- Drools规则引擎基础教程
前言 曾经接触过一个电信移动通讯项目,每个案件大量的业务逻辑变更,但其实里面的业务改动,其实就是一些业务逻辑变动. 而程序员编写的代码也没有任何技术含量,跟着式样书逐字逐句的翻译就行.大量的if/el ...
- drools规则引擎的基本使用和原理介绍
理论基石 借用:<drools规则引擎技术指南>来说, drools是: 开源项目,规则引擎技术,规则语法形成的规则文件,可以存在数据库等,通过drools包提供的接口,调用生成对应的结果 ...
- 黑马Drools学习笔记(一)——Drools规则引擎示例概述以及SpringBoot整合示例
文章目录 1. 问题引出 2. 规则引擎概述 2.1 什么是规则引擎 2.2 使用规则引擎的优势 2.3 规则引擎应用场景 2.4 Drools介绍 3. Drools入门案例 3.1 业务场景说明 ...
- 详解:Drools规则引擎探究
引入 ▐ 问题引入 天猫奢品业务方为了吸引更多的新客,和提高会员的活跃度,做了一期活动,通过购买天猫奢品频道内的任意商品就赠送特殊积分,积分可以直接兑换限量的奢品商品.假如业务方给的规则如下: 主刃同 ...
- SpringBoot2 整合 Drools规则引擎,实现高效的业务规则
本文源码:GitHub·点这里 || GitEE·点这里 一.Drools引擎简介 1.基础简介 Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的 ...
- 大数据风控项目实战 Drools规则引擎
可以借鉴的干货 1,统一存储服务,包含:多种存储库连接封装和服务封装 在统一存储服务 2.获取配置的环境 类:EnvVariable 一.风控项目介绍 对一个复杂支付系统提供统一.全面.高效的风险控制 ...
- Drools规则引擎之常用语法
一.基础api 在 Drools 当中,规则的编译与运行要通过Drools 提供的各种API 来实现,这些API 总体来讲可以分为三类:规则编译.规则收集和规则的执行.完成这些工作的API 主要有Kn ...
- drools规则引擎可视化_一文看懂开源工作流引擎 Flowable「转」
原文链接:[https://xie.infoq.cn/article/ece75889c715e0bc87a73e44c]. 一.工作流引擎使用场景 工作流在企业管理系统中是高频使用的功能,一个最常见 ...
最新文章
- CSS之常用选择器(元素、id、类、通配选择器)
- vue $emit、$on、$refs简介
- Linux系统中重启tomcat的一般步骤
- mysql 分表全局id_MySQL分庫分表環境下全局ID生成方案
- 做一名真正的软件工程师
- python转换函数使用_Python Socket模块中的IP转换函数
- jQuery事件对象event的属性和方法
- 指定复制的数据库或者表
- hann function
- 自动登录Windows系统
- bigdecimal 保留两位小数_五年级数学知识点总结-02小数的除法
- 分布式日志收集系统实践(视频教程)
- 左耳朵耗子:云原生时代的开发者应具备这5大能力
- 百度站点Logo权限获取与使用说明
- Vscode文件夹和代码各种颜色(详细汇总)
- 微信小程序实战十三:狗狗小程序云搭建
- html简单的折叠菜单
- uniapp实现退款理由的界面
- Python和线性代数平衡化学等式
- CAS票据之ST与TGT过期策略详细说明
热门文章
- Linux中ps -ef 命令详解
- go语言学习第八天==》mysql数据库增删改查、用go语言 客户端(client)发起htttp get请求,post请求,postForm请求,Head请求,Do请求
- 标学历年真题2016年版 真考题库3 字处理
- SharedPreference与文件存储
- moviepy音视频剪辑:与time时间线相关的变换函数freeze_region、make_loopable、speedx、time_mirror、time_symmetrize介绍
- RGB图像灰度直方图的绘制
- mysql百万级数据查询优化实践-从开始到开除
- mysql 两条sql合并_两条查询SQL的语句的数据合并到一起
- 分布式ID生成算法——leaf算法
- CentOS 安装卸载rpm软件