gpt4 book ai didi

java - Drools 从 session 中获取相同类型的对象

转载 作者:行者123 更新时间:2023-12-01 10:04:35 24 4
gpt4 key购买 nike

我有一个简单规则,其中我在 session 中插入了两个字符串类型的变量。现在我需要获取变量。

相同的代码:

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 类型的变量,我需要知道哪个值是 error 的值,哪个值是 validationMsg 的值,以便我们执行下一个任务。

与输入相同,如果我们从 session 中添加两个字符串变量,现在我需要在这些变量上添加条件。所以同样的问题也会发生。到目前为止,我们通过将变量声明为全局变量来解决输入变量问题。我还需要更改此策略,因为这对于声明全局变量来说不是一个好的决定。

请帮帮我。

最佳答案

这应该是非常明显的:如果您有多个 String 对象,您将无法区分,除非它们的值具有某些特征。 (在您的情况下,错误字符串是数字,而另一个不是。)但不建议以此为基础构建应用程序。

因此您必须将标识附加到字符串值。为此,您可以创建一个包含字符串名称字符串值的对象。你的 RHS 变成:

  insert( new Result( "error", "2528" ) );
insert( new Result( "message", "Header Account must not be null" ) );
modify( cAccount ) {
setErrorCode( "2528" )
}
System.out.println("Header Account null check called");

您可以对多个输入使用相同的原理。

关于java - Drools 从 session 中获取相同类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36545549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com