我正在使用IBM ILOG JRules进行POC,我是JRules的新手。我有一个业务需求,其中:
- 我将在数据库中拥有文档类及其属性
-
在RuleStudio中,我将为每个角色创建一个具有以下条件的决策表:
If Document Class is <abc> and User Role is <xyz> Then Return Properties <P1, P2,…> as editable.
- 我必须找到一种方法来集成数据库和决策表,以便决策表可以识别属性值
有人能帮助我如何使用IRL代码以简单的方式实现它吗?
如果您是JRules的新手,请记住,您在JRules中定义的和"口头化"的任何内容上编写业务规则工件(业务规则、决策表、决策树)
从BRMS的角度来看,你试图做的只是错误的
在一个决策表(DT)中,你可以有数百行,这意味着数百条个人规则。每一行都被翻译成一条规则
因此,如果你这样做,你会调用数据库数百次,这不是你想要的
有人可能会说,您可以在规则任务中使用fastPath算法,但您是JRules的新手,我只想提醒您这一点
您想要的是:
1/用Java创建一个对象模型
2/基于对象模型(Java库)在JRules中创建BOM
3/描述您的BOM(可以在JRules中导入时在设计时自动执行)
4/写下您的DT
5/用Java在编排层中创建对DB的调用
6/从编排层填充对象实例和属性
7/使用正确的输入/输出(规则集参数)从规则项目中导出规则集
8/使用规则集调用引擎
9/检索结果
工作已完成
请记住,在执行时从规则引擎调用数据库很可能是错误的想法,因为您的规则可能会被测试多次,因此会调用数据库n次,这是无效的。
尝试预先从数据库加载数据。应该使用加载的数据调用JRules,并将结果返回给调用系统,然后由调用系统将数据存储回DB。我不建议与DB直接集成。
如果数据库中的数据不经常更改,并且可以在发生更改时重新部署,则可以将数据加载到BOM中。如果是这种情况,您可以使用将数据插入BOM的动态域插件加载数据,但正如我所说,这需要重新部署RuleApp。