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

在项目中有时会用到实时图表的显示,例如电压监测图、水文监测图、桥梁监测图、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代码

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值