Home 文章 Weblogic 使用WebLogic Event Server和Web 2.0处理基于位置的信息

feedsky
抓虾
google reader
my yahoo
使用WebLogic Event Server和Web 2.0处理基于位置的信息 E-mail
User Rating: / 0
PoorBest 
作者是 PacoGomez001   
2008-03-20 08:16:50

摘要

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

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

前往圣荷西

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

  A trip to San Jose

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

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

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

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

使用WLEvS处理GPS数据

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

  Event Processing Network

  图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生成的信息的报警并最后显示在用户的浏览器中。

  The big picture

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

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

  Atlanta

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

  GUI Details

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

应用程序

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

  • 数据报告验证。比如说,当车辆在特定时间段内未报告其位置,则系统将发出报警。
  • 接近特定地点。即本文所使用的用例。
  • 遵从已计划的管理约束,比如说:
    • 当车辆未按照预期路线行驶时发出报警
    • 当车辆速度高于允许的最低限速时发出报警
    • 当车辆在特定时间段内未行驶时发出报警
    • 当车辆可能无法按时抵达目的地时发出报警
  • 编组需求。比如说,如果一些车辆在同一组中行驶,当这些车辆之间的距离超过5英里时发出报警。
  • 关联各类数据。比如说,结合位置信息与车辆速度(同样由GPS单元提供),以及其他数据提要,如温度、动向、交通量、天气和RFID传感器。WLEvS 复杂事件处理(CEP)功能允许您设计复杂的规则和事件网络对复杂模式进行建模。

结束语

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

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

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

参考资料

最近更新 ( 2008-03-20 08:16:50 )
 
Java家,