WSO2 CEP执行计划错误

时间:2014-08-20 12:17:48

标签: wso2 complex-event-processing

我刚刚开始测试WSO2 CEP。我使用的是3.1.0版本。

我使用单个属性事件和非常简单的查询完成了第一次成功的测试。 但不,我试图让测试更加真实,并为我的事件添加更多属性,以及更复杂的查询。执行计划XML文件副本位于我的消息末尾。

我不明白为什么查询中的“insert into so”语句会产生错误消息,说明输出流定义了两次。实际上,流是出口的。

当我删除“insert into so”时,计划已部署,但没有事件发生......

知道我没有按预期做什么吗?

感谢您的帮助。

问候。

XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<executionPlan name="Fifi_Test_Execution_Plan_1" statistics="enable"
  trace="enable" xmlns="http://wso2.org/carbon/eventprocessor">
  <description/>
  <siddhiConfiguration>
    <property name="siddhi.persistence.snapshot.time.interval.minutes">0</property>
    <property name="siddhi.enable.distributed.processing">false</property>
  </siddhiConfiguration>
  <importedStreams>
    <stream as="si" name="Fifi_Test_Event_Stream_1" version="1.0.0"/>
  </importedStreams>
  <queryExpressions><![CDATA[

from si#window.timeBatch(10 sec)
select code, count(code) as number, sum(value) as total
group by code
insert into so;

]]></queryExpressions>
  <exportedStreams>
    <stream name="Fifi_Test_Event_Stream_2" valueOf="so" version="1.0.0"/>
  </exportedStreams>
</executionPlan>

错误消息:

Exception: Invalid query specified, Stream so is already defined as StreamDefinition{streamId='so', attributeList=[Attribute{name='code', type=STRING}, Attribute{name='number', type=LONG}, Attribute{name='total', type=INT}]}, hence cannot define StreamDefinition{streamId='so', attributeList=[Attribute{name='code', type=STRING}, Attribute{name='number', type=LONG}, Attribute{name='total', type=LONG}]}

1 个答案:

答案 0 :(得分:0)

上述问题的原因仅通过例外表达。以下是该问题的更详细原因..

我认为,最初您已经创建了一个执行计划,该计划将事件导出为流“Fifi_Test_Event_Stream_2”。此流包含以下属性

attributeList = [Attribute {name ='code',type = STRING},Attribute {name ='number',type = LONG},Attribute {name ='total',type = INT}]

但是,现在你已经编写了另一个查询来计算总和,在计算总和后,你将这些事件导出到同一个流“Fifi_Test_Event_Stream_2”(流“so”只是流“Fifi_Test_Event_Stream_2”的别名)。

由于您正在计算总和,因此导出的流包含以下类型的属性

[属性{name ='code',type = STRING},属性{name ='number',type = LONG},属性{name ='total',type = LONG}]

然后,您无法将这些事件转发到流“Fifi_Test_Event_Stream_2”..