在ilogjrulesjavaxom模型中使用静态声明



在我的java pojo XOM模型中,我有一个静态变量,比如count。我正在执行5条规则,它将计数变量增加一。所以在执行的最后,我得到了count=5的值。

现在,如果我声明一个非静态变量计数,并在每次执行规则时递增其值,那么该变量是否会初始化5次,并且它是非静态的。

换句话说,如果对象没有声明为静态,那么我的java XOM模型类的5个实例会被创建吗?

不确定我是否理解你的问题
我有一条规则:
"然后将myObj.count设置为myObj.count+1;"然后您将拥有与myObj对象一样多的计数变量
因此,如果在工作内存中插入一个myObj,那么在执行结束和执行过程中只有一个myObj
每一条规则都会随着你在工作记忆中的"匹配"次数而触发
因此,如果你在引擎中传递5个myObj,你将得到5个myObj.count,每个都有一个最终值"5"

如果您使用的是static,那么它将是相同的
除非您在有状态模式下使用引擎(实际上这种情况非常罕见)
BRMS是一个决策服务,因此可以对传入的参数(当然还有规则)做出决策
我并不是说你不能在有状态模式下使用它,但这种使用是罕见的
如果你这样做,那么是的,前面的答案是正确的,你最终会得到一个无限增加的值。每次跑步增加5次

BTW:我从来没有尝试过,因为有一整套属性可以获得是否触发的规则数量和执行时间等等…

总之,你的工作记忆中有你所拥有的。这意味着,如果您有一个对象的实例,那么引擎在运行时将永远不会创建更多的实例。由于RETEPlus算法,这将导致疯狂(:)。(也不经常使用)
创建更多对象实例的唯一方法是直接通过规则在集群时间内自己创建。例如:在报告的消息中添加消息"hello world"。
希望它能帮助

静态变量只是类变量。因此,它将在规则调用之间"持久化"。换句话说,下次运行时,计数将为10。如果您没有使用static,那么它将为每个规则调用初始化一次,而不是为每个规则初始化一次。因此,简而言之,编号

相关内容

  • 没有找到相关文章

最新更新