• 规则引擎客户端


    一、简介

    1.1 概述

    规则引擎客户端旨在为开发人员提供便捷的脚本运行方式,实现在指定的服务上运行指定的脚本,并获取脚本的运行结果。后端在使用规则引擎时,需要在前端页面先配置脚本的目标服务和脚本内容。

    1.2 组件坐标

    <dependency>
        <groupId>org.hzero.boot</groupId>
        <artifactId>hzero-boot-platform</artifactId>
        <version>${hzero.boot.version}</version>
    </dependency>
    

    1.3 功能特性

    二、使用说明

    2.1 添加依赖

    源服务与目标服务都需要添加hzero-boot-platform依赖,启动服务后,可以在swagger-ui中看到如下API,则说明添加成功 规则引擎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]

    版本 0.10.0.RELEASE [2019-06-23]