在执行计划中使用自定义函数选择输出属性时出现WSO2CEP 3.0.0错误

时间:2013-12-18 13:37:03

标签: wso2

在执行计划中,如果在选择除最后一个属性之外的属性时调用自定义函数,则抛出java.lang.IndexOutOfBoundsException。如果在选择最后一个属性时调用此自定义函数,则不会发生异常。让我用一个例子来澄清这一点。

我在流中定义了流= [name,surname,address]和outStream = [name,surname,address],分别用作输入和输出流。我编写了一个连接字符串的自定义函数。当我在执行计划中使用它时如下(选择最后一个属性时使用自定义函数),

from inStream
select name, surname, ns:concat('Address is: ' , address) as address
insert into outStream

对于inStream = ['Micheal','Jackson','Indiana'],我得出了流出= ['迈克尔''杰克逊','地址是:印第安纳']。但是,当我将查询更改为

from inStream
select ns:concat('Name is: ', name) as name, surname, address
insert into outStream

我得到了例外。这是一个错误吗?我该如何处理这个问题?

1 个答案:

答案 0 :(得分:2)

是的,这似乎是个错误。创建了JIRA并附加了修复程序。这肯定会在下一个版本中修复。如果您希望修复程序立即可用,您可以签出Siddhi code并应用JIRA中给出的补丁并将相关的jar(在本例中为siddhi-core_2.0.0.wso2v4.jar)复制到repository / components /插件CEP服务器实例的文件夹。

作为一种变通方法,您可以在最后使用自定义函数,然后通过将此查询的输出传递给另一个查询来将属性交换到所需的顺序,该查询只是将属性交换为所需的顺序(如果事件正在进行中)在CEP之外,你也可以在事件格式化程序级别进行重新排序。

HTH,