分享一个Drools规则引擎微服务Docker部署
通常我们都是把Drools作为嵌入式使用,但在微服务泛滥时代,还在老套的嵌入式显然不符合微服务架构要求,本文分享一个把Drools作为微服务独立部署的方案。
本方案基于Drools引擎微服务,提供REST接口。
- 1、可以动态部署Drools规则
- 2、规则存储在RDBMS中
- 3、可以动态运行规则,运行模式有两种,
- 3.1. 一种是直接输入一组数据,运行规则后返回反结果
- 3.2. 一种模式是从源数据逐页读取数据,执行规则处理后,输出结果到目标数据源中。
- 4、可以动态修改规则,修改后重新部署规则。
另外,我们还支持业务人员采用图形方式配置规则(SourceRule),然后再编译成Drools的规则文件,然后再部署到规则服务中。
定义:
- 1、domain:规则领域,定义规则的分组,比如:税务计算,工资计算,考勤计算等。
- 每个domain内的所有规则会同时调用,比如有若干个工资计算规则,它们会按顺序一起执行。
- 每个domain会有同一个数据源和数据目标配置。
- 2、SourceRule:基于可视化图形,由业务人员定义的源规则,源规则会编译成Drools规则文件,然后部署到规则服务中。
模块结构:
-
- irmp-rule-api:提供REST接口定义,方便客户端自己根据定义实现远程客户端,调用服务。
-
- irmp-rule-service:规则引擎服务提供模块,提供规则引擎,规则存储,规则执行等核心功能。
-
- irmp-rule-client:规则引擎客户端,基于Spring-boot Rest Client框架,实现规则引擎客户端,方便客户端调用。
未完待续。。。
代码链接:https://gitee.com/iisp_team/irmp-rule