运行 r.execute() 来自 Java 在 for 循环中
running r.execute() from Java in a for loop
我用JESS写了一段代码。我现在 运行 来自 Java 的代码。我有 运行 这个问题,我想在 for 循环中使用 engine.execute("") 命令。
我的示例代码是:
for (int i = 0; i < 10; i++){
for (int j = 0; j < 10; j++){
r.executeCommand("(answer(ident headers.get(i)(text patientData.get(j).get(i))");
}
}
其中 answer 是 JESS 中带有两个插槽的 detemplate。我正在读取 Java 中的文本文件并将值插入 deftemplate 的插槽中。
谢谢,
阿里
如果 answer
是一个带有插槽 ident
和 text
的 detemplate,下面的片段看起来像是一个事实的构造:
(answer(ident headers.get(i)(text patientData.get(j).get(i))
- 事实并不代表可以通过
Rete.executeCommand
. 执行的 Jess 命令
- 您不应该使用已弃用的方法
executeCommand
;使用 eval
.
- 你的括号不平衡,6 个左括号对 4 个右括号。
- 假设 headers 在你的 Java 应用程序中是一个
List<String>
,你不能简单地向 Jess 抛出一个 Java 方法调用,它不理解 Java 语法首先,(大概)根本不知道 pojo header
。
- pojo也是如此
patientData
。
- 虽然您可以将 objects 从 Java 程序传递给 Jess 引擎,但这对于像
i
和 [=22 这样的简单变量来说是绝对不可能的=].
考虑到所有这些(其中大部分很容易从优秀的 Jess 手册中学习),使用
r.eval( "(assert (answer (ident \"" +
headers.get(i) +
"\")(text \"" +
patientData.get(j).get(i) +
"\")))" );
可能有机会成功并确实将新事实插入工作记忆中。
我用JESS写了一段代码。我现在 运行 来自 Java 的代码。我有 运行 这个问题,我想在 for 循环中使用 engine.execute("") 命令。 我的示例代码是:
for (int i = 0; i < 10; i++){
for (int j = 0; j < 10; j++){
r.executeCommand("(answer(ident headers.get(i)(text patientData.get(j).get(i))");
}
}
其中 answer 是 JESS 中带有两个插槽的 detemplate。我正在读取 Java 中的文本文件并将值插入 deftemplate 的插槽中。
谢谢, 阿里
如果 answer
是一个带有插槽 ident
和 text
的 detemplate,下面的片段看起来像是一个事实的构造:
(answer(ident headers.get(i)(text patientData.get(j).get(i))
- 事实并不代表可以通过
Rete.executeCommand
. 执行的 Jess 命令
- 您不应该使用已弃用的方法
executeCommand
;使用eval
. - 你的括号不平衡,6 个左括号对 4 个右括号。
- 假设 headers 在你的 Java 应用程序中是一个
List<String>
,你不能简单地向 Jess 抛出一个 Java 方法调用,它不理解 Java 语法首先,(大概)根本不知道 pojoheader
。 - pojo也是如此
patientData
。 - 虽然您可以将 objects 从 Java 程序传递给 Jess 引擎,但这对于像
i
和 [=22 这样的简单变量来说是绝对不可能的=].
考虑到所有这些(其中大部分很容易从优秀的 Jess 手册中学习),使用
r.eval( "(assert (answer (ident \"" +
headers.get(i) +
"\")(text \"" +
patientData.get(j).get(i) +
"\")))" );
可能有机会成功并确实将新事实插入工作记忆中。