如何在没有更改XOM的情况下定义在ODM决策表中使用的函数?

时间:2014-04-10 18:29:11

标签: jrules ibm-odm

我正在使用ODM 8.5(JRules继承者)。在我的Java域中,我有一个三字符的字符串field代表一个数字," 000"至" 999"。我想要一个代表逻辑的决策表:

if field is between "000" and "012" then set the result to "tiny"
if field is between "013" and "060" then set the result to "less tiny"
...

IBM的documentation on defining columns州 - "条件语句是不完整的BAL谓词表达式..."。 BAL中有什么东西可以进行我想做的字符串比较吗?如果没有,是否可以从BAL调用IRL中定义的函数?如果是这样,怎么样?我也对如何在ODM中处理这个简单问题提出了其他建议(不改变现有的Java XOM)。现在,我认为我不能使用ODM决策表,尽管基础逻辑似乎非常适合决策表。

1 个答案:

答案 0 :(得分:2)

这个答案很大程度上基于Justin Phillips对this question的精彩回答,针对ODM 8.5进行了更新。请加上答案。

主要思想是在业务对象模型(BOM)中创建一个可以从规则中调用的函数。要添加BOM功能:

  1. 右键单击Eclipse规则项目中的bom文件夹。
  2. 从菜单中选择New -> BOM Entry
  3. 选择Create an empty BOM entry选项,然后点击Finish
  4. 双击新的BOM条目以显示BOM编辑器视图,以及 然后点击New Class
  5. 输入班级名称,然后点击Finish
  6. 从列表中双击新的BOM类,然后在下面 Members部分,点击New按钮。
  7. New Member 对话框,选择Method选项,输入NameisBetween), 返回Type方法(boolean),并添加三个字符串参数(testee - 正在测试的值,minmax)。点击Finish按钮。
  8. 双击Members部分下的新方法,然后选择StaticFinal选项。
  9. 点击“会员文字说明”部分下的“创建”链接,然后使用{0} is between {1,min} to {2,max}
  10. 填写“模板”文本框
  11. BOM to XOM Mapping部分下,输入您的Java代码。
  12. enter image description here  11.返回到班级BOM编辑器,并在“BOM to XOM Mapping”部分中将Execution name设置为值void。这表明BOM类未链接到Java类(XOM)。

    现在,在填写决策表Test中的Condition Column时,可以访问新创建的成员的语言表格。