java 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后,我得到了两个值强>
现在的问题是有两个字符串变量。类类型,我需要知道哪个值用于error,哪个值用于validationMsg,以便我们执行下一个任务
同样对于输入,如果我们从会话中添加两个字符串变量,现在我需要在这些变量上添加条件。所以同样的问题也会发生在同样的情况下。到目前为止,我们通过将变量声明为全局变量来解决输入变量问题。我还需要改变这个策略,因为声明全局变量不是一个好的决定
请帮帮我
# 1 楼答案
这应该是非常明显的:如果您有几个字符串对象,除非它们的值具有某些特征,否则您无法区分它们。(在您的例子中,错误字符串是数字,而另一个不是。)但不推荐基于此的应用程序
因此,必须为字符串值附加标识。为此,可以创建一个包含
String name
和String value
的对象。您的RHS将变成:您可以对多个输入使用相同的原则