规则引擎客户端
一、简介
1.1 概述
规则引擎客户端旨在为开发人员提供便捷的脚本运行方式,实现在指定的服务上运行指定的脚本,并获取脚本的运行结果。后端在使用规则引擎时,需要在前端页面先配置脚本的目标服务和脚本内容。
1.2 组件坐标
<dependency>
<groupId>org.hzero.boot</groupId>
<artifactId>hzero-boot-platform</artifactId>
<version>${hzero.boot.version}</version>
</dependency>
1.3 功能特性
- 使用简单,对代码无侵入性
- 支持无参和有参的脚本运行
- 支持对目标服务内静态方法的调用和spring上下文
- 目前仅支持纯脚本模式的groovy脚本运行,无方法名
二、使用说明
2.1 添加依赖
源服务与目标服务都需要添加hzero-boot-platform
依赖,启动服务后,可以在swagger-ui中看到如下API,则说明添加成功
2.2 添加规则引擎配置
前端平台管理->规则引擎页面,新建规则脚本配置
保存之后可以使用校验
功能,测试脚本是否运行正常
2.3 后端执行配置的规则脚本
调用org.hzero.boot.platform.rule.helper.RuleEngineHelper.runGroovyScript
方法,该方法需要传递三个参数scriptCode(定义的规则编码),tenantId(租户Id),params(脚本需要的参数),脚本不需要参数时,params传null。该方法返回ScriptResult对象,对象的content属性存放就脚本运行结果。
@ApiOperation(value = "测试规则脚本运行")
@Permission(level = ResourceLevel.SITE)
@PostMapping("/test")
public ResponseEntity<ScriptResult> runScript(@RequestBody RuleScriptTestDTO ruleScriptTestDTO) {
ScriptResult result = RuleEngineHelper.runGroovyScript(ruleScriptTestDTO.getScriptCode(), ruleScriptTestDTO.getTenantId(), ruleScriptTestDTO.getParams());
return Results.success(result);
}
若需要给前端返回报错信息,请添加多语言维护
#rule_script
error.rule_script.get_rule_failed=获取规则引擎配置失败
error.rule_script.run_groovy_failed=Groovy脚本运行失败
error.rule_script.service_not_found=未找到指定服务
#rule_script
error.rule_script.get_rule_failed=Get rule script configuration failed
error.rule_script.run_groovy_failed=Groovy script failed to run
error.rule_script.service_not_found=Service not found
2.4 groovy脚本示例
① 有参数的groovy脚本
return "hello," + name + "!!!"
脚本内的参数名,要与Map中的key一致!!!
② 调用目标服务的静态方法
return org.hzero.scheduler.core.util.CronUtil.getCron(1,2,3,4,"DAY");
③ 使用目标服务上下文
return ApplicationContext.getBean(org.hzero.scheduler.service.ExecutableService.class).selectExecutionById(30001);
目前调用目标服务的方法,所有的类都要带包名
三、版本更新日志
版本 0.1.0-SNAPSHOT [2018-10-21]
- 支持无方法名的groovy脚本运行
版本 0.10.0.RELEASE [2019-06-23]
- 使用沙箱运行groovy脚本,保证系统安全