使用ILog Jrule中的BAL从输入字符串类型参数值中删除空格

时间:2013-12-18 12:06:51

标签: string whitespace ilog jrules

我有一个带有String类型输入参数的规则。我可以使用BAL从此参数保存的值中删除空格。

如果没有,那么另外一个选项是什么。在这个JRule中有一个决策表,其中condition列是这个参数,然后输出是action列。

假设您为Rule IsDepartmentManager定义了类型为String的Rulset Paramter“Name”,其中输出规则集参数为boolean。

现在在决策表中,Name列中的值为“John”,而out为True。否则为假。

现在,当此规则作为Web服务调用时,输入发送为“John”。由于名称包含空格并且决策表执行完全匹配,因此结果返回为False。

2 个答案:

答案 0 :(得分:4)

你能发布一条规则的例子吗?很高兴看到为什么你需要首先修剪字符串。

但您可以编写一个函数来执行此操作并通过BOM公开它。这可以通过两种方式完成。首先,您可以直接在BOM中编写虚拟函数,该函数采用字符串并对其进行修剪。如果使用Java XOM,第二个选项是用Java编写函数并通过BOM公开它。

如果您使用虚函数方法,那么代码将使用IRL编写,但这实际上是Java的缩减版本,因此它将具有修剪所需的String对象方法。例如:

return theString.trim();

要添加BOM功能,请执行以下步骤:

  1. 右键单击Eclipse规则项目中的“bom”文件夹。
  2. 从菜单中选择“BOM Entry”。
  3. 选择“创建空BOM表条目”选项,然后单击“完成”。
  4. 双击新的BOM条目以打开BOM编辑器视图,然后单击“新建类”。
  5. 输入班级名称,然后点击“完成”。
  6. 从列表中双击新的BOM类,然后在“成员”部分下,单击“新建”按钮。
  7. 在新成员对话框中,选择“方法”选项,输入方法的名称,并将参数添加为字符串类型。最后将返回类型设置为String类型。然后单击“完成”按钮。
  8. 然后双击“Members”部分下的新方法,选择“Static”和“Final”选项,并在“Member Verbalisation”部分下创建默认语言表达。
  9. 在“BOM to XOM Mapping”部分下,输入我在上面原始答案中输入的代码,更改参数名称以匹配您使用的代码。
  10. 返回到班级BOM编辑器,并在“BOM to XOM mapping”部分中将“Execution name”设置为值“void”。这是必需的,因为BOM类没有链接到Java类(XOM)。
  11. 完成此操作后,您应该能够在BAL编辑器中查看规则中的新方法。

    但是,我要说的是,您应该在将数据传递到规则集之前尝试修剪和准备数据。理想情况下,您希望规则集中的一些自定义函数尽可能保持规则的清洁。

答案 1 :(得分:3)

您可以在规则任务(包含决策表或规则)中添加Initial Action,您可以在其中执行TheInputString.trim();