1

我有一个采用字符串类型输入参数的规则。我可以使用 BAL 从这个参数保存的值中删除空格吗?

如果不是这样做的其他选择是什么。在这个 JRule 中有一个决策表,其中条件列是此参数,然后输出是操作列。

假设您为 Rule IsDepartmentManager 定义了 String 类型的 Rulset 参数“名称”,其中输出规则集参数是布尔值。

现在在决策表中,名称列中的值是“John”,因此为 True。否则为假。

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

4

2 回答 2

4

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

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

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

return theString.trim();

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

  1. 右键单击 Eclipse 规则项目中的“bom”文件夹。
  2. 从菜单中选择“BOM 条目”。
  3. 选择“创建一个空的 BOM 条目”选项,然后单击“完成”。
  4. 双击新的 BOM 条目以打开 BOM 编辑器视图,然后单击“新建类”。
  5. 输入班级名称,然后单击“完成”。
  6. 双击列表中的新 BOM 类,然后在“成员”部分下,单击“新建”按钮。
  7. 在新成员对话框中,选择“方法”选项,输入方法名称,并添加一个字符串类型的参数。最后将返回类型设置为String类型。然后单击“完成”按钮。
  8. 然后双击“成员”部分下的新方法,并选择“静态”和“最终”选项,并在“成员语言化”部分下创建默认语言化。
  9. 在“BOM 到 XOM 映射”部分下,输入我在上面的原始答案中输入的代码,更改参数名称以匹配您使用的名称。
  10. 返回到类级别 BOM 编辑器,在“BOM 到 XOM 映射”部分中将“执行名称”设置为值“void”。这是必需的,因为 BOM 类未链接到 Java 类 (XOM)。

完成此操作后,您应该能够在 BAL 编辑器中看到规则的新方法。

但是,我想说的是,您应该在将数据传递到规则集之前尝试修剪和准备数据。理想情况下,您希望规则集中尽可能多的自定义函数,以使规则尽可能干净。

于 2013-12-18T14:37:23.190 回答
3

您可以在规则任务(包含决策表或规则)中添加一个初始操作,您可以在其中执行 InputString.trim();

于 2013-12-19T14:12:43.393 回答