0
我有简单的规则,其中我在Session中插入了两个String类型的变量。现在我需要获取变量。Drools从会话中获取同一类型的对象
代码对于相同:
rule "Header Account Null Check"
dialect "java"
ruleflow-group "TB:Header Account Null Check"
when
cAccount : AccountPair(headerAccount == null)
then
String error=new String();
String validateMsg=new String();
error="2528";
validationMsg="Header Account must not be null"
modify(cAccount) {
setErrorCode("2528")
}
insert(error);
insert(validateMsg);
System.out.println("Header Account null check called");
end
query "fetch validation variables"
#conditions
s:String();
end
Java代码:
Collection<Object> myfacts = kSession.getObjects(new ClassObjectFilter(String.class));
在myfacts检查后,我得到了两个值。
现在的问题是有两个变量与String.class类型,我需要知道哪些值是错误和值是validationMsg,使我们将执行下一个任务。
与输入相同,如果我们从Session中添加两个字符串变量,现在我需要在这些变量上添加条件。所以也出现同样的问题。现在我们通过将变量声明为全局变量来解决输入变量问题。我也需要改变这个策略,因为它不是一个宣布全局变量的好决定。
请帮我一把。
谢谢,我知道这种方法,场景是我们用JRule有大型系统,我们正在转换成Drools,JRule有一个设置输入和输出参数的工具。我需要上面的设施,因为我们不想从Java更改代码。 – Viral
那么,如果你知道所有这些:问这个问题有什么意义? – laune
,因为想知道是否存在不创建包装类的方法,但能够获取变量值并能够识别哪个变量的值。 – Viral