WSO2 CEP:处理复杂的输入JSON对象

时间:2016-07-08 14:51:36

标签: wso2 wso2cep

我目前正试图弄清楚如何处理WSO2 CEP中的复杂数据输入。让我们假设我的输入事件数据如下所示:

ChangeCount

在理想情况下,我希望看到这个爆炸成3个事件,如下面的数组:

ini

我只是无法弄清楚如何获得类似的东西...我正在考虑重新注入{ "item_id":456, "user_id":42, "documents":[ { "type":"word", "name":"ordre de mission" }, { "type":"excel", "name":"horaires" }, { "type":"pdf", "name":"facture" } ] } 数组,就像它是一个单独的事件一样,因此CEP会将数组拆分为3个流项目。但即使我能做到这一点,item_id和user_id也会在此过程中丢失...... 到目前为止,我唯一得到的是文档字段在我的流中转换为序列化字符串,因此检索其中包含的实际数据似乎毫无用处......

我在这里展示的例子非常简单,反对我必须管理的其他东西,封装的对象和数组中的数组。因此,如果有人可以指出我关于如何处理数组和对象的一般方向,当这些不是事件数据的根,或者甚至在其他人之上分层时,它真的会帮助我!

2 个答案:

答案 0 :(得分:0)

你可以使用Siddhi地图扩展来提取那些子元素[1]。在执行计划中,您可以使用map:createFromJSON(文档)函数(根据您的流对应属性是文档)的地图扩展来创建地图。然后从其键中提取相应的值。(word,excel等)请参考[1]。如果要从上面的流输出三个事件,则必须编写自定义StreamProcessor。请参考[2]。

[1] https://docs.wso2.com/display/CEP410/Siddhi+Extensions#SiddhiExtensions-map

[2] https://docs.wso2.com/display/CEP410/Writing+a+Custom+Stream+Processor+Extension

答案 1 :(得分:0)

如果我们以更通用的方式考虑事情,我想知道如何处理Json数据,因为没有对象类型,流属性中的数组都没有......

也许这里的问题比我的问题中的问题要宽......

事情是,我简单地理解如何以正确的方式处理复杂的JSON输入数据......我在WSO2文档或其他任何地方都找不到任何相关内容......

请告诉我,如果我错了,但是我看待事情的方式,如果我必须处理如下所示的输入JSON数据,那么如果没有严重的钩子和丑陋的话,那将是非常困难甚至是不可能的变通方法..

{     "参考":" tiers1",     " emailRecipient":{         "到":[" john.paeuudey@domain.com"],         " carbonCopy":[],         " blindCarbonCopy":[]     } }

在上面的示例中,如何在流中存储"到"的内容。和" carbonCopy"例如数组?如果我使用字符串属性,那么数组将在attibutes中序列化。这几乎是可用的,但是当在发布者中编写这些属性时,被视为字符串,如果指定了JSON,CEP会在它们周围添加一些引号。 这只是许多问题的一个方面......

所以,我的问题毕竟是WSO2 CEP甚至旨在管理这样复杂的JSON数据?因为我真的认为不是......