如何在Red Hat Decision Manager中创建仅含规则元数据的决策表
将FICO元数据驱动的决策表迁移到Red Hat Decision Manager的实现方案
1. 定义业务对象模型(BOM)
- 创建
FieldMetadata实体类,映射原决策表的元数据列:包含id、fieldName、fieldLength、isMandatory属性,同时添加对应各验证场景的错误消息字段(比如mandatoryErrorMessage、lengthErrorMessage),用来存储决策表中第5列及以后的消息内容。 - 创建
FormData实体类,用于承载待验证的表单数据,提供根据字段名获取值的方法(比如getFieldValue(String fieldName))。
2. 导入元数据决策表
- 在RHDM控制台中创建新的决策表,选择导入现有FICO的元数据文件(CSV/Excel格式)。
- 将决策表的列与
FieldMetadata的属性一一映射,确保元数据和对应的验证消息都正确导入到规则引擎的知识库中。
3. 编写规则逻辑替代原FICO的Function
在RHDM中创建DRL规则文件,遍历导入的FieldMetadata实例,针对每个验证场景编写规则:
示例DRL代码片段
// 全局函数:收集验证错误消息 global java.util.List<String> validationMessages; rule "必填字段验证" when $metadata: FieldMetadata(isMandatory == true) $formData: FormData(getFieldValue($metadata.getFieldName()) == null || getFieldValue($metadata.getFieldName()).trim().isEmpty()) then validationMessages.add($metadata.getMandatoryErrorMessage()); end rule "字段长度验证" when $metadata: FieldMetadata(fieldLength > 0) $formData: FormData(getFieldValue($metadata.getFieldName()) != null && getFieldValue($metadata.getFieldName()).length() > $metadata.getFieldLength()) then validationMessages.add($metadata.getLengthErrorMessage()); end
- 可以根据原FICO Function中的逻辑,扩展更多规则(比如数据类型验证等),只需在
FieldMetadata中添加对应元数据字段,再编写对应DRL规则即可。
4. 构建并部署决策服务
- 将
FieldMetadata、FormData模型类,导入的决策表,DRL规则文件打包为一个决策服务包。 - 部署后,调用决策服务时:先加载所有
FieldMetadata实例(从决策表中读取),再传入待验证的FormData对象,执行规则后从全局的validationMessages中获取所有验证错误。
5. 验证与对齐原逻辑
- 使用RHDM的测试场景功能,构造不同的表单数据用例(比如必填字段为空、字段超长等),验证规则触发的错误消息是否和原FICO引擎的输出一致,确保逻辑对齐。
内容的提问来源于stack exchange,提问作者Pushkala P
相关产品推荐
相关产品推荐

