您的位置:首页 > 移动开发

SODBASE CEP学习(九):SODBASE View 实时图表显示和移动端消息

2015-05-08 16:07 363 查看
在项目中有时会用到实时图表的显示,例如电压监测图、水文监测图、桥梁监测图、IT运维监控性能图、预警信息显示、经营分析监测等等。本文介绍SODBASE CEP自带的SODBASE View以及RESTful接口。用户可以在此基础上二次开发,定制自己的图表。用户也可以使用RESTful接口拓展自己的图表类型。

原理很简单,将需要显示的最新数据缓存在内存中,前端Javasript或flash定时取最新值在图表中刷新。SODBASE View模块做了fail retry和自带垃圾回收机制,防止因为网络不稳定引起图表数据掉线,同时避免长时间实时图表绘制引起内存泄露。

1. 示例操作步骤

准备:机器上安装有JDK和Tomcat

(1)下载sodbase-view-highcharts 工程sodbase-view-highcharts.zip,将
sodbase-view-highcharts工程中的WebRoot文件夹,拷贝到Tomcat的webapps中,命名为sodbase-view-highcharts,启动tomcat。

TomcatURI编码设置为UTF-8。并查看Tomcat端口,比如说是18080

(2)下载Sodbase StudioSODBASE-CEP-Studio-2.0.19,解压后运行

(3)下载模拟数据源SODBASE-View示例数据源,解压后将VD0001,
VD0000导入Sodbase Studio。左边点击VD0001,工作区面板右键点击,测试运行。左边点击VD0002,工作区面板右键点击,测试运行。

(4)在Firefox浏览器中打开http://localhost:18080/sodbase-view-highcharts/voltage.jsp



可以测试停掉模拟数据源,在启动。实时图形能够继续显示。

2.工作原理

2.1配置方法

(1)通过sodbase-view-highcharts工程下WebRoot/voltage.jsp

配置图形显示

$.post("ChartChangeServlet2D.do?series=220KV%20I%E6%AE%B5PT%E7%94%B5%E5%8E%8B|110KV%20I%E6%AE%B5PT%E7%94%B5%E5%8E%8B&attribute=voltagevalue",function(data,status){

series是显示分组字段中哪些值的数据

attribute是数据字段的名称

(2)WebRoot/WEB-INF/lib/ sodbase-view-dataservlet.jar 中com.sodbase.view.dataservlet目录下

config.properties 中配置接收数据端口和数据分组使用的字段。数据分组使用的字段需要在VD0001的输出中。默认为viewgroupbyid

2.2 com.sodbase.view.dataservlet中的数据接口

2.2.1原理

根据com.sodbase.view.dataservlet目录下配置文件config.properties中的groupby属性,将数据在内存中统一进行存储。不同的servlet则代表了不同的数据查询方式。

在VD0001中,viewgroupbyid就是lineid。sodbase-view-dataservlet会为每个lineid的数据建立一个缓冲区,一般图表前端显示的是某lineid最新的数据值。

2.2.2 数据接口

数据接口兼容FusionWidget显示。Highcharts是Javascript图形显示,好处是移动端也可以用。具体接口以官方最新版为准,下面是写示例时版本中的接口。

2.2.2.1ChartChangeServlet1D

查询格式:series= groupbyid的值 &attribute=一个查询字段

输出格式:&value=数值

例如:series=220KV线路&attribute=voltagevalue

返回的是220KV线路最新的电压值。

2.2.2.2ChartChangeServlet2D

查询格式:series= groupbyid的值列表以|分开 &attribute=一个查询字段

输出格式:&label=time&value=series1'svalue|series2's value|......

例如:series=110KV线路|220KV线路&attribute=voltagevalue

返回的是110KV线路和220KV线路最新的电压值

2.2.2.3ChartChangeServlet3D

查询格式:series= 一个groupbyid的值 &attribute=一个查询字段

输出格式:&label=time&value=值1|值2|.....

不同series现在用不同的图表示,即一张图就一个series,可用在分组柱状图中, 一个series一次查询包含多个值,输出时用"|"分割。.

注:要求CEP event输入的被查询数据字段包含多个数据,用","分割

。即要求事件字段attribute的值为以(值1,值2)以,分开的字符串。

例:

查询ChartChangeServlet3D.do?series=测点1&attribute=voltagevalue_amp

输出&label=time&value=3|0.1|2

返回的是测点1的voltagevalue_amp最新值。要求voltagevalue_amp的值就是’3,0.1,2’,返回值用|分开是与fusionwidgets的格式兼容,在highcharts等其它图表中也容易使用。

3. 移动端消息提醒(以Android为例)

功能将某个SODSQL语句输出的新事件发到Android客户端中,以Notification的形式提醒用户。应用场景如:环境指标COD超阈值,发提醒。

下面第1、2步在SODBASEView(highcharts)示例中使用过,如果有了webapps中的目录名称改为sodbase-view-highcharts即可。

第一步:Eclipse中,将 sodbase-view-highcharts工程中的WebRoot文件夹,拷贝到Tomcat的webapps中,命名为sodbase-view-highcharts,启动tomcat

Tomcat的URI编码设置为UTF-8。服务器需要有外网地址,手机才能访问到。

第二步:在SodbaseStudio中同时运行例子VD0001, VD0000。VD0001的输出适配器的ip参数设置为tomcat服务器ip地址。

第三步:修改res\values\strings.xml中url的ip:port为自己的tomcat地址。运行sodbase-view-androidnotifications工程



原理:需要在之前Tomcat sodbase-view-highcharts的基础上,运行这个Web应用,就提供了一个Restful接口获取新的消息(也就是新的事件)
http://ip:port/sodbase-view-highcharts/NotificationServlet1D.do =?series=***&attribute=****&afterindex=****&indexattribute=_end_time_

使用方法见SodbaseDataService.java的FetchViewDataTask代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: