Java 在Esper中声明类类型实例变量并调用实例方法时未调用实例方法

Java 在Esper中声明类类型实例变量并调用实例方法时未调用实例方法,java,complex-event-processing,esper,Java,Complex Event Processing,Esper,我正在编写一个应用程序,它有一个包含esper引擎的类的实例。我希望使用引擎中EPL的实例方法调用来读取和设置许多实例变量。我没有得到任何编译错误和代码运行。但是实例方法没有被调用 epl声明: 提示可能是,如果我不在方法调用前使用method:keyword,我会得到一个错误,即找不到myClass.getMyProperty类。文档有时使用method:key,有时不在示例中使用method从类类型变量调用实例方法 我还尝试在API中使用addVariable方法,得到了相同的结果 方法的代

我正在编写一个应用程序,它有一个包含esper引擎的类的实例。我希望使用引擎中EPL的实例方法调用来读取和设置许多实例变量。我没有得到任何编译错误和代码运行。但是实例方法没有被调用

epl声明:

提示可能是,如果我不在方法调用前使用method:keyword,我会得到一个错误,即找不到myClass.getMyProperty类。文档有时使用method:key,有时不在示例中使用method从类类型变量调用实例方法

我还尝试在API中使用addVariable方法,得到了相同的结果

方法的代码。

类结果是一个POJO,其中包含字符串的getter和setter

public class Result {
    private String result;

    public String getResult() {
        return result;
    }
    public void setResult(String str) {
        result = str;
    }
}

我遗漏了什么?

您可以查看回归测试类。您可能要查看的具体选项是ExecFromClauseMethodVariable。也许你的代码没有给变量赋值

Github:

问题已解决,我认为分享解决方案可能有用。感谢用户650839为我指明了正确的方向。以下是最终解决问题的方法

我恢复到在运行时配置API中声明变量。我发现我必须注册变量类,用实例对象(this)初始化它,最后导入该类。下面是在运行时配置API中执行此配置的代码片段

Configuration configuration = new Configuration();
configuration.addVariable("myClass", com.tp.main.MyClass.class, this);
configuration.addImport(com.tp.main.MyClass.class);
epService = EPServiceProviderManager.getProvider(trade.getTradeName(), configuration);
在EPL中声明类变量时似乎有一个限制。无法使用要使用的实例对象初始化它。在运行时配置API中,我能够使用对象的“this”实例对其进行初始化,该实例包含我希望从EPL访问的所有实例变量


EPL声明没有改变。但是,您似乎必须使用关键字method:在方法调用之前,否则会出现错误“找不到类…”

您是否调试了代码?您是如何验证它没有运行的?@Stultuske我已经验证了该方法没有被调用,因为logger.info(“此方法被调用”)代码行没有将消息输出到控制台。模块中还有其他epl语句,它们在调用方法时会记录到控制台。但这些都是静态方法,这部分是有效的。实例方法不起作用。您确定记录器已配置为打印到控制台吗?@Stultuske这是一个很好的问题,答案是肯定的。还有其他epl语句(本问题中未显示)调用静态方法,这些方法在运行时会记录到控制台。@Stultuske作为另一个确认,我在方法声明处放置了一个断点,并在调试模式下运行。断点未命中。我确实查看了您推荐的回归测试类,发现我没有在API中正确配置变量。现在它起作用了。谢谢我想不需要进口
public class Result {
    private String result;

    public String getResult() {
        return result;
    }
    public void setResult(String str) {
        result = str;
    }
}
Configuration configuration = new Configuration();
configuration.addVariable("myClass", com.tp.main.MyClass.class, this);
configuration.addImport(com.tp.main.MyClass.class);
epService = EPServiceProviderManager.getProvider(trade.getTradeName(), configuration);