3.3 我的第一个规则
3.3.1 示例规则需求【信贷审批自动化】
(1)场景概述:
小额贷款自动审批。
基于【信用评分】和【年收入】条件自动决定是否批准贷款申请。
(2)规则逻辑

(3)BOM定义信息

(4)参数定义信息

3.3.2 示例规则实现过程

3.3.2.1 准备阶段
1)web端创建规则项目

2)vscode端创建规则
在本地系统中创建一个空文件夹,然后在vscode中打开,即作为一个“规则项目”,并无特殊要求。
3)规则项目同步设置


3.3.2.2 创建BOM库
在业务系统开发过程中,会用到大量包含Getter和Setter方法的简单的Java对象,它们被称之为POJO(Plain Ordinary Java Object),或BOM(Business Object Model)对象,这些对象在开发中作为数据的载体,负责数据的传递。在UDM当中,变量库就是用来映射这些POJO对象,从而使得我们可以在具体的规则文件中使用它们,从而完成规则与业务数据的交互。
如下图所示,在UDM的BOM设计器中,完成【LoanApplication 贷款申请】的定义。

3.3.2.3 创建参数库
在UDM编辑器中,在vscode“资源管理器”任一文件上右键菜单,点击【规则项目属性】即可打开如下画面,我们可以发现下图示例已配置好的参数项,其类型可以是复杂 BOM 类型或简单类型(String, Number, Boolean)。

3.3.2.4 实现方式一:业务规则+决策流
1)创建业务规则

2)编写【高风险客户】规则

3)编写【高信用低收入客户】规则

4)编写【中等信用和收入客户】规则

5)编写【低信用高收入客户】规则

6)编写【其它情况转人工】规则

7)编写规则流
说明:细心的读者已经发现同一贷款申请人,不会同时满足这5个业务规则(存在互斥的关系),故而我们以规则流串联起上述的5个业务规则,并让其按照指定的顺序执行(if...elseif...elseif...elseif...else),须在决策流的【规则任务】节点上指定了“要执行的规则文件”算法为【顺序】且“排序”为【优先级】。

另一种实现:其实我们也可以不指定规则文件的指定顺序,毕竟按顺序执行性能极低,不能发挥出UDM高性能优势;可以将上述规则流进行改进,拆分成两个 ”规则任务节点“,指定算法为【快速路径】,第一个节点绑定4个规则文件,第二个节点绑定“其它情况.brl”文件作为兜底规则。最终规则执行结果也符合预期。


8)快速测试验证结果


3.3.2.5 实现方式二:决策表

3.3.2.6 实现方式三:决策树

3.3.3 启用规则服务
3.3.2.1 从vscode中发布规则

3.3.2.2 管理规则包
管理员用户登录到web后台,进入到如下画面,即可对已发布规则包进行管理。

1)启用规则服务
用户选中一个规则包,如下图所示选中了【贷款决策树】,然后点击右上角的【启用规则服务】按钮,即可启用了http Rest服务,外围系统可访问此url地址即可消费此规则服务。

2)Mock测试
点击右上角【模拟测试】按钮,打开如下窗口,填充请求数据后,点击提交即触发规则的调用,并返回决策结果。

3)在三方工具中模拟规则消费情况
