如何从jess的java类中读取变量?

时间:2014-05-20 12:38:40

标签: java jess

我试图将Java类中的两个变量读入我的.clp文件进行比较。

任何人都可以帮助我。谢谢。

我试着这样做..

(deftemplate Alarm  (declare (from-class Alarm)))

(Alarm (measuredValue ?m) (nominalValue ?n))

(printout t ?m ?n crlf)

1 个答案:

答案 0 :(得分:0)

你应该在工作记忆中插入类Alarm的事实。那么像这样的规则

(defrule compalarm
  ?alarm <- (Alarm (measuredValue ?m)(nominalValue ?n))
=>
  (printout t ?m " - " $n crlf)
)

允许您访问某些此类Alarm对象的字段。至于比较这些值:你可以在规则中做到这一点,但你没有写出如何,所以我没有添加任何东西。

稍后使用Java类创建对象并将其作为事实插入:

(bind ?alarm (new pack.age.Alarm))
(set-member ?alarm measuredValue 42)
(set-member ?alarm nominalValue 50)
(add ?alarm)

您可以使用(get-member ...)访问Java对象中的字段。

有关此(及更多)信息,请参阅Jess手册。