- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用 Jess 和 Java,并且想在 Jess 规则内调用 Java 函数,但是当我启动代码时,我收到以下消息:
这是代码:
// Create a Jess rule engine
ENGINE.reset();
// Load the rules and the templates
//TEMPLATES
ENGINE.eval("(deftemplate Light (declare (from-class ro.domoticbot.data.Light)))");
ENGINE.eval("(deftemplate Door (declare (from-class ro.domoticbot.data.Door)))");
//RULES
ENGINE.eval("(defrule switch-light \"rule to switch light state\" (Light {lightOn == FALSE}) => "
+ "(call flip)(printout t \"the lamp is on\" crlf))");
ENGINE.eval("(defrule open-door \"rule to open a door\" (Door {open == FALSE}) => "
+ "(call flip)(printout t \"the door is open\" crlf))");
这是 Door 和 Light 两个类:
public class Door implements Programmable, Serializable{
private static final long serialVersionUID = 1L;
private boolean open = false;
private final Map<Integer, List<Timeslot>> timeslots = new HashMap<>();
private final String name;
public Door(String name) {
this.name = Objects.requireNonNull(name);
}
/**
* Change the state of the door (open / close)
* Return the new state
*/
@Override
public void flip() {
this.open = !this.open;
}
public boolean getOpen() {
return open;
}
public class Light implements Programmable, Serializable {
private static final long serialVersionUID = 1L;
private boolean lightOn = false;
private final Map<Integer, List<Timeslot>> timeslots = new HashMap<>();
private final String name;
public Light(String name) {
this.name = Objects.requireNonNull(name);
}
/**
* Change the state of the light (light on/off).
*/
@Override
public void flip() {
this.lightOn = !this.lightOn;
}
public boolean getLightOn() {
return lightOn;
}
我想在规则内调用函数flip(),但该方法是在类Light和Door中定义的。谢谢。
最佳答案
“call”的第一个参数可以是调用方法的对象,也可以是静态方法的类名称。将 Door 对象绑定(bind)到一个变量(位于 OBJECT 槽中),然后将该变量作为第一个参数传递。
关于java - JESS异常: expected method name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48191378/
为简单起见,假设我有以下两个模板: (deftemplate JessObjA (declare (from-class JessObjA)) ) (deftemplate JessObjB (dec
在我看来,Jess 是一种动态改变我们在 Java 类中放入的内容的方法,当我面对 java Reflection 时,令人惊讶的是,它们似乎具有相同的目标。 如果这是真的,我什么时候应该使用其中一种
我正在尝试使用以下 JessTab 代码将本体中的个体与当前日期和时间值链接起来: (slot-insert$ TimeInstant_1 http://www.w3.org/2006/time#in
因此,当您在 Jess 中断言一个已断言的事实时,它会返回 FALSE,而不是断言返回该事实的 id。似乎在Java中你可以使用“findFactByFact”,我认为这是方法,但是如果我没有事实,我
在 Jess 中,假设我的事实库由几个名称-值对组成,例如 (node1 6.5) (node2 100) (node3 0.5) 如何在不手动撤回的情况下“更新”这些值,例如“node1”值从 6.
到目前为止,我对文件路径进行了硬编码,以便保存事实或将它们加载到内存中,但是当我使用 showSaveDialog() 请求文件并使用 getAbsolutePath 获取路径和名称时,我对代码进行了
我通过示例解释我的问题。 (deftemplate point (slot a)(slot b)) (assert (point (a 1)(b 1))) (assert (point (a 1
我用 Jess 编写了代码: ;;;************* ;;;* MODULES * ;;;************* (defmodule EXAMPLE) ;;;***********
我正在尝试在 Jess 中对数字列表求和,但我不确定如何去做: (deffunction sumAll ($?n) (return (+ ?n))) (sumAll 1 2 3) 上面的代码不起作用。
我已经定义了一个接受 lambda 的 bool Jess 函数,如下所示: (deffunction at-least(?n ?lambda $?values) (>= (length$ (
我必须从调用 Jess 脚本的 Java 类发送一些值,以便在 Jess 脚本中进行处理。 这是我到目前为止的代码: int val1=0; int val2=1; Rete engine = new
我已经在netbeans中将jess与java集成了。我想访问字符串变量中的输出。 当我(运行).clp 文件并为其提供输入时,它会显示输出,但我想在字符串变量中获取此输出。我怎样才能做到这一点??请
嗨,我已经用 JESS 编写了所有代码,现在我想在 Java 中使用该代码。我想知道是否需要像教科书中那样重新定义 deftemplate?或者是否可以使用该代码并进行一些细微的更改? 我有两个 cl
我正在通过 Apache Tomcat 服务器编写一个小型 Jess 应用程序。我正在使用 servlet 来获取用户的输入并输出 Jess 结果。我的文件位于 Tomcat 目录中 webapps
以下是我安装 Jess 插件的步骤: 1) 安装 eclipse ide (Oxygen)。 2) 从http://www.jessrules.com/jess/download.shtml下载jav
我对杰西是个新手。我试图运行 jess 手册中提供的示例,但失败了。任何人都可以帮助我完成有关如何运行随附的定价引擎示例的步骤。 手册 http://www.jessrules.com/jess/do
我很快就开始为我的计算机科学最后一年项目开发一个移动应用程序。关于使用什么来创建应用程序,我保持开放的选择。我听说 Phonegap 是一个非常方便的 API,但我仍然可以实现诸如 JESS rule
) 我正在写我的硕士论文,我必须使用 JESS 平台。我想问一个问题。 例如,我有一个名为“Main”的 Java 类: public class Main { private String
通过阅读大量文档,我了解了 2 个规则引擎 JESS(工作流程引擎)并垂涎欲滴,所以您能建议我哪一个更好吗? 我的要求是,我正在检查源代码,如果缺少任何标准方法或方法,请获取日志或报告或任何类型的标志
我有一个用 Jess(Java 库之一)编写的界面,它有一个面板和一个组合框 我想让它作为小程序运行。这样我就可以将它嵌入到网络上! 这是我的 applet.java, package uges.ap
我是一名优秀的程序员,十分优秀!