我在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))");
}
}
答案是JESS中有两个插槽的反映。我正在用Java读取文本文件并将值插入deftemplate的插槽中。
谢谢, 阿里
答案 0 :(得分:0)
如果answer
是对插槽ident
和text
进行反击,则以下代码段看起来像是构建了一个事实:
(answer(ident headers.get(i)(text patientData.get(j).get(i))
Rete.executeCommand
执行的Jess命令。executeCommand
;使用eval
。List<String>
,您不能简单地在Jess上抛出Java方法调用,而Jess一开始并不理解Java语法,并且(可能)没有#J?至少知道pojo header
。patientData
也是如此。i
和j
之类的简单变量来说,这是绝对不可能的。考虑所有这些(大部分都很容易从优秀的Jess手册中学习),使用
r.eval( "(assert (answer (ident \"" +
headers.get(i) +
"\")(text \"" +
patientData.get(j).get(i) +
"\")))" );
可能有成功的机会并且确实会将新事实插入工作记忆中。