0

到目前为止,我一直在使用 Stateful Sessions (KieSession),并设法使用带有一些 Java 包装器的 Scala 让我的项目按需要运行。我现在正试图切换到 StatelessKieSessions。根据我找到的文档,我设法运行以下命令将对象/集合插入到会话中,触发它们的规则并更新事实:

val cmd = CommandFactory.newInsert(myObject, "myObject")
val result = ksession.execute(cmd)

当我打印result(属于 org.drools.core.common.DefaultFactHandle 类)时,它显示了所需事实的结构,按预期更新,前面是“事实 0:1:2050275256:1971742898:2:默认值:NON_TRAIT:”

文档说我应该能够编写类似的东西,result.getValue("myObject")但是这个选项在 Scala 中似乎不可用。(https://docs.jboss.org/drools/release/6.0.0.Beta1/kie-api-javadoc/org/kie/api/runtime/StatelessKieSession.html

我知道尚未完全提供 Scala-Drools 互操作性,但是有人知道从 StatelessKieSession 或包含它的 DefaultFactHandle 中提取更新事实的方法吗?

4

1 回答 1

1

你从这个执行命令中得到的是新插入的事实的事实句柄。其中的对象仍然是您插入、更新或未更新的对象。您必须调查这是否可以在 Scala 中使用。

没有命令可以检索在会话执行期间已更改的所有事实。您必须使用一些可用的技术对此进行监控。

运行“无状态会话”并没有什么好处。如果您可以使用常规(有状态的)会话来实现您想要的,请保留它。无状态会话可能有其优势,但不要从 Scala 中解决它。

于 2015-03-10T16:38:00.277 回答