Java中与Jess交互的全面指南
1. 处理Fact对象
1.1 多插槽(Multislots)
Jess事实可以包含多插槽,即单个插槽可容纳多个数据项。可以使用 addMultiSlot
方法向 Deftemplate
添加多插槽,然后像往常一样设置事实中该插槽的值,但插槽值必须是 RU.LIST
类型的 jess.Value
。 LIST
值包含一个 ValueVector
, ValueVector
的元素就是多插槽的内容。示例代码如下:
Rete engine = new Rete();
Deftemplate d =
new Deftemplate("student", "A student", engine);
d.addSlot("name", Funcall.NIL, "STRING");
d.addMultiSlot("courses", Funcall.NILLIST);
engine.addDeftemplate(d);
Fact f = new Fact("student", engine);
f.setSlotValue("name", new Value("Fred Smith", RU.STRING));
ValueVector courses = new ValueVector();
courses.add(new Value("COMP 101", RU.STRING)