以下已由我们公司实施的实际用例:
我们已经使用rest api作为esper java api的包装器构建了应用程序。 用户可以定义它的地图架构和查询语句。 用户(作为JSON)发送的每个事件(MapEventBean的实例)都有一个公共参数(每次都有不同的值),这些参数将作为附加键值对添加到后台映射到用户map事件。
问题:为了通过UpdateListener检索此附加参数,用户定义的模式和查询语句都将通过编程方式扩展到该属性上。
例如:
用户定义的架构:将地图架构名称创建为(...)
程序。修改后的架构:将地图架构名称创建为(additionalAttribute Map,...)
用户定义的查询stmt:从名称中选择foo,bar
程序。修改后的查询stmt:从Name中选择AdditionalAttribute,foo,bar
问题:方法确实可行,但很容易出错,或者不太独立,正如我们希望的那样。
因此,问题是:是否有可能定义通用查询stmt(例如,在每个事件上选择AdditionalAttribute ...)或告诉更新侦听器在每个成功的查询上检索特定属性,而与是否已在用户定义的stmt中定义无关。 。
谢谢!
更新: 我已经考虑过诸如NamedWindows之类的一些可能性,但是问题是,此附加属性将属于每个特定事件,也就是说,应该由更新侦听器与事件self同时从模式中获取这些属性。
答案 0 :(得分:0)
有一个语句对象模型API,可用于修改查询而无需进行字符串操作。 API的文档链接为http://esper.espertech.com/release-8.0.0/reference-esper/html_single/index.html#apicompiler-soda