| 使用WebLogic Event Server和Web 2.0处理基于位置的信息 |
|
| 作者是 PacoGomez001 | |
| 2008-03-20 08:16:50 | |
摘要基于位置的信息系统将生成连续的数据流。比如说,物流公司各辆卡车的当前位置。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数据在生产环境中,卡车将携带一个GPS单元并将自己的位置传输给运行WLEvS的中央服务器。在本例中,我将使用WLEvS中的 loadgen 工具模拟GPS数据提要。我按照预先定义的时间间隔将位置坐标(经度和纬度)发送给WLEvS。WLEvS中实现的事件处理网络(Event Processing Network,EPN)如图2所示。 图2. 事件处理网络——EPN(单击图像查看大图) Location事件进入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 ( 这个规则将根据与目的地的距离筛选GPS事件。内部的选择语句将计算当前位置与目的地之间的距离。用户定义的函数 Utils.distance 将执行计算,该函数是Java类的一个静态方法。输入参数为当前位置和目标位置的经度和纬度。函数的返回值为计算得出的距离,以供稍后在外部选择语句中使用。 使用内嵌选择语句的原因是距离函数只用计算一次。这提供了更佳的执行时间,尤其是当函数占用的CPU周期和I/O非常多时。 业务逻辑组件接收处理器筛选事件的业务组件将使用标准JDBC和JMS API。 对于JDBC连接,数据源定义在 WLEvS域配置文件中(config/config.xml): <data-source> 业务逻辑组件可以使用@Service 方法注释 注入此数据源: @Service(filter = "(Name=oracle.xe)") 对访问远程的WLS JMS Topic,EPN Assembly文件 中将定义一个 JNDI模板,如下所示: <bean id="wlsjndiTemplate" class="org.springframework.jndi.JndiTemplate"> 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提供的基础架构将实时地检测基于位置的数据中的相关模式。我们可以使用这种功能实现一些激动人心的应用程序。下面是一些类别和示例:
结束语WebLogic Event Server非常适合用于在基于位置的信息系统中检测相关模式。由于其处理机制的实时性和低延时性,我们可以使用WebLogic Event Server设计监控和报警应用程序,以提醒一些重大事件,如接近、需求遵从、编组和复杂相关。 本文的用例使用WebLogic Event Server检测车辆与特定位置的接近事件,并使用Web 2.0技术通过一个动态的图形界面显示信息。 感谢 Alexandre Alves、David Read、James Taylor和Mark dos Santos对本文提供的帮助。 参考资料
|
|
| 最近更新 ( 2008-03-20 08:16:50 ) |






