从Siddhi接收流中的对象

时间:2016-07-26 21:20:52

标签: object complex-event-processing siddhi

我有一个Siddhi扩展名,返回下一个信息,例如:

{
 "licenseKey": "WxyzChXjhJ-dgjfZfHnL9-bWd4e2vxjD-eIs5hDu0To-VOxL111BAj",
 "siteUrl": "http://www.URL.net/",
 "clientPublicId": "CLIENT1",
 "host": "www.urlclient.net"
}

{
 "licenseKey": "WxyzChXjhJ-dgjfZfHnL9-bWd4e2vxjD-eIs5hDu0To-VOxL111BAj",
 "siteUrl": "http://www.URL2.net/",
 "clientPublicId": "CLIENT2",
 "host": "www.urlclient2.net"
}

我希望将此信息存储在Stream中,并且我希望使用属性" clientPublicId"来获取过滤器信息。

我正在使用下一个代码,wlist:whitelist()是我的扩展名Siddhi。

from sensorStream[temperature>98.6]
select wlist:whitelist() AS arreglo
insert into outputStream;

我的问题是outputStream是使用名为" arreglo"的属性创建的,所以我无法通过clientPublicId进行过滤。

请帮助我。

1 个答案:

答案 0 :(得分:0)

如果你想在Siddhi中处理JSON或XML,那么你可以在Siddhi中使用'map'扩展支持。您可以使用google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { "use strict"; var result1 = document.getElementById('finalScore').value; var result2 = document.getElementById('finalScoreD').value; var data = google.visualization.arrayToDataTable([ ['Quality', 'Delivery'], [ 0, 0], [ 'result1', 'result2'] ]); var options = { title: '', hAxis: {title: 'Quality', minValue: 0, maxValue: 1, gridlines: { count: 3, color: '#000000' }, titleTextStyle: {italic: false}}, vAxis: {title: 'Delivery', minValue: 0, maxValue: 1, gridlines: { count: 3, color: '#000000'}, titleTextStyle: {italic: false}}, width: 370, height: 300, colors: ['#6db33f'], pointSize: 30, pointShape: 'circle', fontName: 'proximaNovaLight', fontSize: '15', backgroundColor: { fill:'transparent' }, legend: 'none', }; var chart = new google.visualization.ScatterChart(document.getElementById('chart_div')); } 创建地图,然后通过map:createFromJSON(<string> JSONstring)访问这些值。请注意,您必须在使用map:get(<Map> map, <Object> key)之前投射地图的输出。

例如:cast(<object> toBeCasted, <string> castTo)

希望这可以解决问题。