我有一个带有String类型输入参数的规则。我可以使用BAL从此参数保存的值中删除空格。
如果没有,那么另外一个选项是什么。在这个JRule中有一个决策表,其中condition列是这个参数,然后输出是action列。
假设您为Rule IsDepartmentManager定义了类型为String的Rulset Paramter“Name”,其中输出规则集参数为boolean。
现在在决策表中,Name列中的值为“John”,而out为True。否则为假。
现在,当此规则作为Web服务调用时,输入发送为“John”。由于名称包含空格并且决策表执行完全匹配,因此结果返回为False。
答案 0 :(得分:4)
你能发布一条规则的例子吗?很高兴看到为什么你需要首先修剪字符串。
但您可以编写一个函数来执行此操作并通过BOM公开它。这可以通过两种方式完成。首先,您可以直接在BOM中编写虚拟函数,该函数采用字符串并对其进行修剪。如果使用Java XOM,第二个选项是用Java编写函数并通过BOM公开它。
如果您使用虚函数方法,那么代码将使用IRL编写,但这实际上是Java的缩减版本,因此它将具有修剪所需的String对象方法。例如:
return theString.trim();
要添加BOM功能,请执行以下步骤:
完成此操作后,您应该能够在BAL编辑器中查看规则中的新方法。
但是,我要说的是,您应该在将数据传递到规则集之前尝试修剪和准备数据。理想情况下,您希望规则集中的一些自定义函数尽可能保持规则的清洁。
答案 1 :(得分:3)
您可以在规则任务(包含决策表或规则)中添加Initial Action,您可以在其中执行TheInputString.trim();