在规则开发过程中,往往会遇到某个规则会反复被使用的情况。因此,我们总是希望能通过某种方式调用这些规则,也就是所能实现规则复用。我们知道在“决策树”中,不仅可以实现规则的复用,而且还可设置复用规则执行的条件和复用规则间的条件。但是在“决策池”中,会执行“决策池”里所有的被复用的规则,被复用规则的执行的顺序与规则被引用的先后顺序是一致的。
我们先创建一个名为“基本工程2”的规则包,该规则包下的规则,作为“决策池”的复用规则。
右键名为“功能解析”的工程,点击“新建规则包”,创建一个名为“基本工程2”规则包。如下图所示:
该规则包中需要在对象库中,需要定义三个“string”类型变量:a(a),b(b),c(c)。如下图所示:
变量“a”“b”“c”都是在“传入数据”中添加的,然后要在规则包对象库的“外部调用”添加两个方法(公式)。按下图描述的添加:
这些方法是规则引擎封装的一些常用方法,可以在“外部调用”添加这些常用方法,然后可以在规则调用。
添加了“字符截取”中“从左截取字符”的方法之后,继续添加方法。如下图所示:
点击了“确认”之后,就在外部调用里添加了两个方法。如下图:
在变量定义完成之后,然后要在规则包中实现具体规则逻辑。右键选择规则包“基本工程2”添加名为“b取值”的规则,添加过程如下所示:
规则添加好了之后,我们要在规则中给变量“b”赋值,赋值过程如下图所示:
确认之后,规则“b赋值”就完成了。我们在规则包“基本工程2”再添加个规则“c取值”,如下图所示:
最后,我们需要在规则中添加规则逻辑,如下图所示:
在规则包编写完成之后,我们要保存该规则包。点击“全部保存”按钮,如下图所示:
点击“保存全部”保存之后,规则配置器会自动保存该规则包的rpk文件和生成规则包对应的rsc文件,在消息栏可以看到如下信息:
“基本工程2”规则包完成之后,我们再创建一个名为“决策池”的规则包。在规则包的“决策池”中,将调用“基本工程2”中的规则。
右键工程“功能解析”,选择“新建规则包“,添加个名为“决策池”的规则包。如下图所示:
和规则包“基本工程2”一样,在规则包“决策池”中,我们也需定义三个“string”类型的变量“a”,“b”,“c”。如下图所示:
我们在规则包中添加“决策池”,在“决策池”中实现对“基本工程2”中规则的复用,添加“决策池”过程如下图所示:
如果要实现对“基本工程2”中的规则复用,首先要在“决策池”的属性栏的“所有规则”中找到该规则包,如下所示:
我们将“b取值”和“c取值”拖动到“决策池”之后,我们看到“决策池”如下图所示:
这样“决策池”就实现了对规则“b取值”、“c取值”复用:规则包“决策池”将会依次执行“b取值”“c取值”中的规则逻辑。
我们在规则逻辑完成之后,要测试规则包正确性。给规则规则包添加个“批量测试”,然后在“批量测试”中添加若干测试用例、期望结果值,最后我们只需比对测试用例的期望结果值与规则包的实际输出结果值是否相同。若相同,则测试完成,规则包未发现错误;若不同,测试不通过。
选择规则包,选择“添加批量”,操作步骤如图所示:
“批量测试”添加完成之后,我们要在该“批量测试”下添加测试用例。添加测试用例步骤如下图所示:
按照上述步骤,我们再给“批量测试”添加两个测试用例。添加完成后,“批量测试”如下图所示:
测试用例添加完成之后,我们要保存并编译规则包,如下图所示:
点击“全部保存”会保存规则包的rpk文件,生成规则包的rsc文件。我们可以在消息栏看到下图信息:
最后测试该规则包,在这些测试数据下实际输出的结果值。测试过程如下所示:
从上图中可以发现,所有的期望结果与实际输出结果相同,规则包测试完成!