我目前正试图弄清楚如何处理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也会在此过程中丢失......
到目前为止,我唯一得到的是文档字段在我的流中转换为序列化字符串,因此检索其中包含的实际数据似乎毫无用处......
我在这里展示的例子非常简单,反对我必须管理的其他东西,封装的对象和数组中的数组。因此,如果有人可以指出我关于如何处理数组和对象的一般方向,当这些不是事件数据的根,或者甚至在其他人之上分层时,它真的会帮助我!
答案 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数据?因为我真的认为不是......