简介

RuleEngine 基于web可视化配置,简单高效快捷。业务逻辑实现不再依赖于代码开发,可零代码实现复杂业务逻辑!

技术栈/版本介绍:

  • SpringBoot 2.2.11
  • RabbitMQ
  • Redis、Redisson
  • MySQL 5.7.9
  • Mybatis-plus
  • Maven 3.3
  • Swagger

用法

通过在 http://ruleengine.cn 配置规则,配置完成后我们就可以调用接口来执行引擎中的规则了

POST http://ruleserver.cn/ruleEngine/generalRule/execute
Content-Type: application/json

{
      "code": "phoneRuletest",
      "workspaceCode": "default",
      "accessKeyId": "略", 
      "accessKeySecret": "略",
      "param": {
            "phone": "13400000000"
      }
}

现在我们让此使用方式更加简单易用!调用规则方项目pom.xml文件引入以下依赖

<dependency>
    <groupId>cn.ruleengine</groupId>
    <artifactId>rule-engine-client</artifactId>
    <version>2.0</version>
</dependency>

SpringBoot项目application.yml配置文件配置如下:

rule.engine:
  baseUrl: http://ruleserver.cn
  workspaceCode: default
  accessKeyId: root
  accessKeySecret: 123456
  # 可选配置
  feignConfig:
    request:
      connectTimeoutMillis: 3000
      readTimeoutMillis: 3500
    retryer:
      period: 2000
      maxPeriod: 2000
      maxAttempts: 3

然后编写如下代码进行测试:


@EnableRuleEngine
@RunWith(SpringRunner.class)
@SpringBootTest
public class RuleTest {

    @Resource
    private RuleEngineClient ruleEngineClient;

    @Test
    public void test() {
        // 构建规则请求参数
        PhoneTestRule phoneTestRule = new PhoneTestRule();
        phoneTestRule.setPhone("134000000000");
        // 调用执行引擎中的规则
        GeneralRule generalRule = this.ruleEngineClient.generalRule();
        Output output = generalRule.execute(phoneTestRule);
        System.out.println(output);
    }

}

@Data
@Model(code = "phoneRuletest")
public class PhoneTestRule {

    /**
     * 可选,默认code为属性name
     */
    @InputParameter(code = "phone")
    private String phone;

}

我们默认使用Feign请求,当然你也可以自定义,只需要在项目中配置如下代码:


@Component
@Import({RestTemplate.class})
public class RuleEngineClientConfig {

    @Resource
    private RestTemplate restTemplate;

    @Bean
    public GeneralRuleInterface generalRuleInterface() {
        return new GeneralRuleInterface() {

            @Override
            public ExecuteResult execute(ExecuteParam executeParam) {
                return restTemplate.postForObject("http://ruleserver.cn/ruleEngine/generalRule/execute", executeParam, ExecuteResult.class);
            }

            @Override
            public IsExistsResult isExists(IsExistsParam existsParam) {
                // TODO: 2020/12/30  
                return null;
            }

            @Override
            public BatchExecuteResult batchExecute(BatchParam batchParam) {
                // TODO: 2020/12/30  
                return null;
            }
        };
    }

}

界面截图

版权声明:
1、本网站名称:帝企吧
2、本站永久网址:https://www.diqiba.com
3、本网站的文章部分内容可能来源于网络及作者投稿,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
7、本站所有资源来源于互联网,仅用于学习及参考使用,切勿用于商业用途,如产生法律纠纷本站概不负责! 8、资源除标明原创外均来自网络转载,版权归原作者所有,若侵犯到您权益请联系我们删除,我们将及时处理! 9、若您需使用非免费的软件或服务,请购买正版授权并合法使用!