首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 第二书店 程序员
您的位置:middleware->使用WebLogic Event Server和Web 2.0处理基于位置的信息

使用WebLogic Event Server和Web 2.0处理基于位置的信息2008-03-25 来自:lizhe1985  [收藏到我的网摘]

来源:dev2dev

摘要

  基于位置的信息系统将生成连续的数据流。比如说,物流公司各辆卡车的当前位置。WebLogic Event Server (WLEvS)可以高效且实时地处理位置数据,并能检测出重要的事件,比如接近特定地点或偏离预定路线。位置信息可与其他类型的数据相互关联,这利益于WLEvS的强大功能:处理海量数据提要并在它的事件处理语言(Event Processing Language,EPL)中捕获复杂的业务规则。

  本文将介绍如何使用WLEvS和 Web 2.0 技术实现一个基于位置的用例。这个用例涉及到物流、运输、分销商和公共部门机构。

前往圣荷西

  一辆卡车正从圣塔罗莎驶向圣荷西。我希望将卡车的位置显示在地图上,并在距目的地15英里之内提供报警。如图1所示。

  

  图1. 红色标记表示卡车已接近圣荷西

  本例将演示如何使用WLEvS在基于位置的信息系统中测试有用的条件,比如说接近某个位置。

  本例的第二个目的是演示将WLEvS集成到已有的基础架构中构建功能复杂的应用程序。卡车的位置和WLEvS生成的接近报警将实时地显示在地图上。我将回顾数据库的集成、JMS服务器和所使用的Web 2.0技术。

  解决方案大体分为两个主要组件:

使用WLEvS处理和通知 GPS 位置数据
使用 WebLogic Server 和 Yahoo! Maps 在地图 混搭 中显示位置和报警
使用WLEvS处理GPS数据

  在生产环境中,卡车将携带一个GPS单元并将自己的位置传输给运行WLEvS的中央服务器。在本例中,我将使用WLEvS中的 loadgen 工具模拟GPS数据提要。我按照预先定义的时间间隔将位置坐标(经度和纬度)发送给WLEvS。WLEvS中实现的事件处理网络(Event Processing Network,EPN)如图2所示。

  

  图2. 事件处理网络——EPN(单击图像查看大图)

  Location事件进入EPN并通过两个并行分支进行处理:

距离计算分支(EPN图的上部)将检测输入位置距离目的地是否在15英里之内。如果检测到此条件,它将发送一个消息给WebLogic JMS Server上的JMS TOPIC。
事件记录分支(EPN图的下部)将捕获所有事件并将这些信息存储在一个数据库表。

  我们仔细查看一下EPN。Loadgen工具将从文件中读取逗号分隔的值并通过TCP套接字将它们发送给WLEvS。WLEvS附带的csvAdapter将使用TCP服务器套接字接收这些值并将它们作为事件发送给相关的流组件。流组件再将事件分发给与之连接的所有处理器。

  处理器将对传入事件应用事件处理语言(Event Processing Language)规则。如果事件与规则相符,则处理器再发送一个事件给相关的流组件。我将在下文中介绍预先定义在处理器中的规则。

  每个分支的结束部分都有两个 POJO 组件用于接收事件并将数据发送给外部服务器。距离计算分支将生成接近报警将其作为消息发送给外部WebLogic JMS服务器上的JMS TOPIC。事件记录分支将使用JDBC连接到Oracle库并在其中插入所有GPS事件。

事件处理语言规则

  EPL规则 将在EPN的处理器上执行。事件记录分支处理器将对所有经过的事件执行一个简单的规则:

select * from GPSInputEvent retain 1 event  在这个规则中,GPSInputEvent是存储库中注册的一种事件类型。它由含有事件数据的另一个POJO实现。

  距离计算分支处理器中的规则比较复杂:

select * from (
   insert into GPSDistanceEvent
   select id, lat, lon, time, seq,
   Utils.distance(lat, lon, 37.352889, -121.905531) as distance,
   'San Jose, CA' as target
   from GPSInputEvent
   )
   retain all events
   where distance < 15 and target = 'San Jose, CA'

  这个规则将根据与目的地的距离筛选GPS事件。内部的选择语句将计算当前位置与目的地之间的距离。用户定义的函数 Utils.distance 将执行计算,该函数是Java类的一个静态方法。输入参数为当前位置和目标位置的经度和纬度。函数的返回值为计算得出的距离,以供稍后在外部选择语句中使用。

  使用内嵌选择语句的原因是距离函数只用计算一次。这提供了更佳的执行时间,尤其是当函数占用的CPU周期和I/O非常多时。

业务逻辑组件
  接收处理器筛选事件的业务组件将使用标准JDBC和JMS API。

  对于JDBC连接,数据源定义在 WLEvS域配置文件中(config/config.xml):

<data-source>
<name>oracle.xe</name>
<driver-params>
<url>jdbc:oracle:thin:@localhost:1521:XE</url>
...
</data-source>

  业务逻辑组件可以使用@Service 方法注释 注入此数据源:

@Service(filter = "(Name=oracle.xe)")
public void setDataSourceService(DataSourceService dss) {
this.dataSource = dss.getDataSource();
}

  对访问远程的WLS JMS Topic,EPN Assembly文件 中将定义一个 JNDI模板,如下所示:

<bean id="wlsjndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">
weblogic.jndi.WLInitialContextFactory
</prop>
<prop key="java.naming.provider.url">
t3://localhost:7001
</prop>
</props>
</property>
</bean>
<bean id="outboundMessageAdapter"
class="com.bea.wlevs.demo.gpstracking.OutboundMessageAdapter"
factory-method="createInstance">
<constructor-arg ref="wlsjndiTemplate"/>
</bean>

  Spring框架将bean注入组件,用于获取Topic的连接工厂和JNDI名称。通过使用这两个JNDI对象,组件可以将消息发送给JMS Topic。

The Big Picture

  应用程序的用户接口将使用Web 2.0技术开发。图演示了如何通JMS和DB服务器检索WLEvS生成的信息的报警并最后显示在用户的浏览器中。

  

  图3.解决方案的总体架构(单击图像查看大图)

  这个Web应用程序 混搭 了 Yahoo! Maps JavaScript - Flash API 和运行在 WebLogic Server 10 上的 Beehive应用程序。浏览器将使用 Ajax 技术轮询(poll)WebLogic,获取自上次请求以来的新位置信息和报警。应用程序查询数据库并使用 JSON 格式发送新数据。页面中的JavaScript将在后台为地图添加新标记,而不需要用户介入或页面刷新。最终,页面将显示刚经过WLEvS实时处理的车辆的当前位置。有关用户接口的一些详细信息,请参见下图。

  

  图 4. 从Atlanta出发,其中有两种不同的报警(单击图像查看大图)

  

  图 5. 标记扩展信息和文本报警的细节

应用程序

  WLEvS提供的基础架构将实时地检测基于位置的数据中的相关模式。我们可以使用这种功能实现一些激动人心的应用程序。下面是一些类别和示例:

数据报告验证。比如说,当车辆在特定时间段内未报告其位置,则系统将发出报警。

接近特定地点。即本文所使用的用例。

遵从已计划的管理约束,比如说:

当车辆未按照预期路线行驶时发出报警
当车辆速度高于允许的最低限速时发出报警
当车辆在特定时间段内未行驶时发出报警
当车辆可能无法按时抵达目的地时发出报警

编组需求。比如说,如果一些车辆在同一组中行驶,当这些车辆之间的距离超过5英里时发出报警。

关联各类数据。比如说,结合位置信息与车辆速度(同样由GPS单元提供),以及其他数据提要,如温度、动向、交通量、天气和RFID传感器。WLEvS 复杂事件处理(CEP)功能允许您设计复杂的规则和事件网络对复杂模式进行建模。

结束语

  WebLogic Event Server非常适合用于在基于位置的信息系统中检测相关模式。由于其处理机制的实时性和低延时性,我们可以使用WebLogic Event Server设计监控和报警应用程序,以提醒一些重大事件,如接近、需求遵从、编组和复杂相关。

  本文的用例使用WebLogic Event Server检测车辆与特定位置的接近事件,并使用Web 2.0技术通过一个动态的图形界面显示信息。

  感谢 Alexandre Alves、David Read、James Taylor和Mark dos Santos对本文提供的帮助。

推荐人评论

基于位置的信息系统将生成连续的数据流。WebLogic Event Server可以高效且实时地处理位置数据,并能检测出重要的事件。本文将介绍如何使用WLEvS和 Web 2.0 技术实现一个基于位置的用例。这个用例涉及到物流、运输、分销商和公共部门机构。

用户评论

正在载入评论列表...

是谁推荐了此篇文章

专家头像李哲
个人blog发送信息
李哲推荐的其他文章

赞助商精华文章

热点新闻

热点评论

    精彩专题

    资源下载

    
      网站简介广告服务网站地图帮助联系方式诚聘英才English问题报告
    北京百联美达美数码科技有限公司 版权所有京 ICP 证 020026 号
    北京创新乐知广告有限公司 提供技术支持
    Copyright © 2000-2006, CSDN.NET, All Rights Reserved