(查看 图 4 的更大版本。)
这组步骤为 XOM 中的所有元素创建 BOM 条目,使用默认的语言表达来访问和设置每个 BOM 元素。图 5 显示了 Rule Explorer 中的一些 BOM 元素和包。
图 5. Rule Explorer 中的 BOM 项目
默认的语言表达在大部分情况下已足够了。例如,为 EventCode 的 value 的设置和获取所生成的语言表达可在 BOM 编辑器中看到,只需双击 BOM 元素即可,如 图 6 中所示。
图 6. BOM 编辑器中的语言表达
(查看 图 6 的更大版本。)
扩展 BOM 并细化词汇表
规则词汇表是一组可用于准确定义一条业务规则的词汇。这些词汇是 BOM 的语言表达。我们常常需要增强 BOM,添加元素或方法来简化规则的编写。例如,Parameter 的 value 在输入模型中显示为一个字符串。为了将此值与规则中的数字值对比,我们定义在 BOM 类 Parameter 中定义了一个 “虚拟” 或 “合成” 方法 getNumericValue,它从字符串提取一个双精度值并为它提供一种语言表达。这一步使我们能够编写如下这样的规则:
if the numeric value of this parameter is at least 15
then …
每个 BOM 元素需要最终映射回可执行的 XOM。对于没有相应的 XOM 实现的 “虚拟” 方法,此映射通过 BOM 到 XOM 的映射来完成。在运行时,规则引擎分析规则集,使用 BOM 到 XOM 的映射访问 XOM。
图 7 在 BOM 编辑器中显示了虚拟方法。要定义此虚拟方法,在 BOM 编辑器中执行以下步骤:
1. 将 Name 设置为 getNumericValue。
2. 将 Type 设置为 java.lang.Double。
3. 在 Member Verbalization 区域,将 Navigation 设置为 {this} 的 {numeric value}
4. 在 BOM to XOM Mapping 区域,输入以下代码:
Double d = 0;
try {
d = Double.parseDouble(this.value);
} catch (Exception e) { }
return d;
图 7. 添加一个虚拟方法
(查看 图 7 的更大版本。)
除了虚拟方法,我们还添加了一些虚拟类来实现合成的对象。图 8 突出显示了这些虚拟类。(参见 参考资料 获取更多细节。)
图 8. 实现合成对象的虚拟类
创建一个规则项目
从技术上讲,ccc-bom 项目也是一个可包含业务规则的规则项目。但是,我们建议将 BOM 放在它自己的项目中,将业务规则放在不同的项目中。此方法支持在未来将 BOM 重用于其他规则集。因此,我们使用新建规则项目向导来创建一个名为 ccc-rules 的独立规则项目。
图 9 描绘的一系列步骤可用于将规则项目创建为一个引用 ccc-bom 规则项目的标准规则项目。要创建规则项目,执行以下步骤:
1. 选择 File – New – Rule Project。
2. 在打开的窗口中,选择 Standard Rule Project 作为模板并单击 Next。
3. 在接下来的窗口中,指定 “ccc-rules” 作为项目名称并单击 Next。
4. 选择 Rule Project Reference 中的 ccc-bom 并单击 Finish。
图 9. 创建规则项目
以下文章点击率最高
Loading…