博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Business Events和Business Monitor对传感器数据进行智能分析
阅读量:2493 次
发布时间:2019-05-11

本文共 9869 字,大约阅读时间需要 32 分钟。

, 软件工程师, IBM
张鹏,是 IBM 中国开发中心的软件工程师,目前从事 IBM WebSphere Sensor Events 的开发和测试工作,加入 IBM 前从事政府采购软件的相关研发工作。
, 软件工程师, IBM
胡桂兵,是 IBM 中国开发中心的软件工程师,目前从事 BM Premises Server 的开发和测试工作。他擅长的领域包括 IBM WebSphere Premises Server API,J2EE,OSGI,LAS 等。他在 J2EE 相关领域具有 4 年多的开发和测试经验。
, 软件工程师, IBM
李楠,是 IBM 中国开发中心的软件工程师,目前从事 IBM WebSphere Sensor Events 的开发和测试工作,此前曾就职于 IBM 销售部门,有多年的客户服务经验。

简介: 传感器技术在智慧的地球中起着非常重要的作用,借助于各类传感器我们可以将日常生活中物体的位置、温度、重量以及气体浓度、水流速度等信息实时输送到后台系统。IBM WebSphere Sensor Events(WSE)中间件可以帮助收集、过滤现实中各种类型的传感数据,再将统一格式的传感数据传送给 IBM WebSphere Business Events(WBE)中间件,按照事先定义的复杂事件规则对传感数据进行分析,从而产生出更有意义的带有商业逻辑的事件数据,最终我们可以借助 IBM WebSphere Business Monitor(WBM)的仪表盘等功能形象、直观的监控这些现实世界的事件,帮助我们更加科学有效地发现和解决问题。本文将着重向读者介绍怎样将 WSE、WBE、WBM 集成在一起,完成相互消息传输、加工的方法,并提供一个完整的开发案例让读者直观的感受到通过以上三个产品的集成使用给企业日常生产带来的好处。

<!--

IBM WebSphere Sensor Events(下面简称为 WSE)是一个针对传感器解决方案而设计开发的中间件产品平台,它提供了一套灵活的硬件管理、数据传输及消息适配方案,使用户能够轻而易举的接收和处理各类传感器事件,并能够快速集成、扩展现有的企业系统架构。而在 V6.2 版本中软件本身又通过两个全新的消息转换可重用组件及相关消息输入输出通道,实现了与 IBM WebSphere Business Events(下面简称为 WBE),IBM WebSphere Business Monitor(下面简称为 WBM)的系统集成,今后用户可以借助 IBM 强大的企业数据管理软件对传感数据进行智能分析,以应对各类商业挑战,帮助企业及时预估潜在风险,果断且快速地作出决策处理。如图 1 所示 WSE 和 WBE,以及 WBM 的系统集成架构图。

图 1. WebSphere Sensor Events 与 WebSphere Business Events,WebSphere Business Monitor 的系统集成架构图

用户通过使用 WSE 的数据采集功能(Data Capture)将实时的传感器数据进行加工处理(过滤、聚合、标准化等),然后将基于 CBE 格式的传感器事件 XML(如 RFID 标签读取事件)通过事件网关发布到指定的 SIBUS 上,再由 WSE 的可重用组件对消息进行订阅及进一步的加工(业务逻辑、格式转换等),最后将符合 WBE 或 WBM 消息格式要求的信息通过多种 WSE 输出通道发送给 WBE 或 WBM 进行数据智能分析。同时用户也可以将 WBE 事件处理引擎的反馈信息再次通过事件网关发布到 SIBUS 上供 WSE 使用。

下面我们将要介绍 WSE 和 WBE,以及 WBM 集成过程中涉及到几点关键技术。

IBM 传感器事件是基于 IBM 公共基础事件模型,该传感器事件是 WSE 中间件产品内部使用的标准消息格式。它主要由三部分组成:

  • 事件头部 - 包含消息的来源信息(何人,何地,何时等)
  • 事件内容体元数据 - 为用户提供一些有关消息的附加信息
  • 事件内容体 - 包含从传感设备识别到的实际传感数据

一个标准的 WSE6.2 传感器事件(标签读取类型)如下:

BDDR%2Freport%2FTagReport50IBMSensorEvent_39d7e401-204e-4d05-ae5b-951ee4b627feP22010-06-07T09:05:29.312Z6.1com.ibm.sensorevent.model.payload.PassiveRFIDTagReadPayloadurn%3Aepc%3Aid%3Agrai%3A1234567.00110.1urn%3Aepc%3Atag%3Agrai-96%3A2.1234567.00110.1urn%3Aepc%3Araw%3A96.x33544B5A1C001B800000000133544b5a1c001b8000000001

传感器事件网关向外提供了一个数据输入接口,用户可以通过它将传感器事件发布到一个名字叫做 ibmsensorevent 的 WebSphere application server service integration bus(SIBUS),然后 WSE 可以通过 MDB 订阅并处理这些消息。传感器事件网关同时提供了 Java 消息服务(JMS),HTTP 和 Web 服务接口,用户可以使用任意一种方式将事件消息发布到 SIBUS。

以上的这些传感器事件网关接口都会先行将传感器事件 XML 转化为 IBMSensorEvent 对象后再发送至 SIBUS,所以传递于 ibmsensorevent 总线上的消息都是以 IBMSensorEvent 形式存在。

WSE 按照不同商业应用场景,抽象并剥离出了一些可以重复使用的功能模块(如资产注册,标签打印,第三方事件格式转化等),并遵循标准的 J2EE 开发模式进行重新构建,这样便形成了许多 WSE 中可重用的 J2EE 应用。如果用户希望扩展自己的 WSE 功能,又不希望花费过多时间放在消息处理及架构设计上,可以使用可重用组件开发框架制作出用来满足其特殊业务需求的可重用组件,由此大大提高了系统的灵活度及可扩展性。

可重用组件框架要求将公共接口以以下三种方式公开出来,供其他开发者使用:

  • Stateless session beans
  • Web services interfaces
  • Message-driven beans

在 WSE 中 每种事件输出都有其事件类型标识,如果用户希望只输出一种或多种特定事件类型的消息时就需要使用事件模板功能,用户可以在自定义消息类型的过滤条件后再选择 将这些消息通过何种输出渠道进行输出。输出通道用来指定 WSE 的消息输出以何种方式,何种规格,向哪些外部目标输送。

一共有以下七种输出方式可供选择:

  • Email
  • HTTP
  • JMS
  • JMS Topic
  • MQ
  • WS-Notification
  • WS-Gateway

WSE 的 Event Template 和 Output Channel 功能为用户提供了灵活的消息筛选,路由及传送机制。

本章将向读者详细介绍怎样将 IBM WebSphere Sensor Events ,IBM WebSphere Business Events 和 IBM WebSphere Business Monitor 集成在一起,完成对一个 RFID 标签读取事件的消息传输和加工的过程,以及提供验证这些集成是否成功的方法。

WBE 提供了易于使用的图形创作工具,您可以将其用于定义业务策略和逻辑,以便响应业务事件和模式,以及发起相应的业务操作。业务策略描述系统将如何对某些组合中或在某些时间发生或未发生的事件做出反应。

WSE 中的可重用组件 WBE RUC 可以帮助用户将 sensor event 转化为 WBE 标准格式。可以被 WBE 处理的事件(标签读取类型)格式如下:

IBMSensorEvent_A1DE870DB91E9F50CB21B83833386663P2BDDR/report/TagReport6.1302010-06-07T14:59:47+0800112010-06-07T14:59:47+0800P2urn:epc:tag:grai-96:2.1234567.00110.1urn:epc:id:grai:1234567.00110.1urn:epc:raw:96.x33544B5A1C001B800000000133544b5a1c001b8000000001127.0.0.12010-06-07T14:59:47+0800An event of type: BDDR/report/TagReport has arrived from location: P2

WebSphere Business Events 端的配置(以标签读取事件为例)

  1. 定义接触点,在 WBE 中为 WSE 创建一个接触点。具体步骤如下:双击“Design Data”。

    右击接触点区域,选择插入一个新的接触点,命名为 WebSphere Sensor Events Server。

  2. 定义中间对象,根据 WSE 发送给 WBE 事件的格式,需要定义在 WBE runtime 中处理的 个中间对象。具体步骤如下:双击“Design Data”,右击中间对象区域,选择插入一个新的空白的中间对象,对象名为 IBMSE_Header。

    按照同样的方法创建另外两个中间对象 IBMSE_PassiveRFIDTagRead_Payload 和 IBMSE_PayloadMetaData,如图 2 所示

    图 2. 定义中间对象
  3. 定义中间对象域,每个中间对象包含一个或多个中间对象域,需要为上面所建的三个中间对象分别添加各自的域。右击需要创建中间对象域的中间对象,选择插入新的对象域。

    按照同样的方法为 IBMSE_Header 定义以下中间对象域

    Name Data type
    eventId String
    sourceId String
    eventType String
    ibmseversion String
    priority Integer
    dateTime DateTime

    按照同样的方法为 IBMSE_PayloadMetaData 定义以下中间对象域

    Name Data type
    epcprocess String

    按照同样的方法为 IBMSE_PassiveRFIDTagRead_Payload 定义以下中间对象域

    Name Data type
    count Integer
    antenna Integer
    discovered DateTime
    reader String
    taguri String
    tagidrui String
    rawuri String
    tagid String
    图 3. 定义中间对象域
  4. 定义事件,右击接触点,选择新建一个事件,命名为 WSE_PassiveRFIDTagRead
  5. 将步骤 2 定义好的三个中间对象加入到 WSE_PassiveRFIDTagRead 事件中
  6. 定义动作,右击新建的接触点 WebSphere Sensor Events Server,选择插入行动,命名为 WSE_TagReadValidation
  7. 定义动作对象,右击新建的动作 WSE_TagReadValidation,选择插入一个动作对象,命名为 WSE_TagReadValidation_Object
  8. 配置动作对象域,右击新建的动作对象,选择插入动作对象域,命名为 eventType,数据类型为 String,定义类型为 Field,点击插入对象域 >IBMSE_Header>eventType。

    按照同样的方法定义以下动作对象域

    Name Data type Type Expression
    eventId String Field IBMSE_Header.eventId
    Event_type String Field IBMSE_Header.eventType
  9. 编辑动作属性,右击动作 WSE_TagReadValidation,选择动作属性,在连接选项卡中选择文件方式,并定义输出文件夹及文件名称属性(如 C:\WBE\*PassiveTagRead.xml),保存项目文件并退出
  10. 用 Design 工具打开刚才的项目文件
  11. 创建交互设置,点击交互设置,重命名文件夹为 Sensor Events IS,重命名交互设置为 WSE Tag Read IS,选择 WSE_PassiveRFIDTagRead 为响应事件,选择 WSE_TagReadValidation 为一贯跟随动作,点击新建的交互设置 WSE Tag Read IS 并选择定义上下文关系,然后选择 IBMSE_Header.eventId,保存项目文件并退出,如图 4 所示
    图 4. 创建交互设置
  12. 用 Design Data 工具上传项目资产
  13. 保存项目文件并退出,在 WAS 中重启 wberuntimeear 应用以便前面的改动生效。

WebSphere Sensor Events 端的配置

  1. 配置 WBEAgent,本文假设 WBE 和 WSE 安装在同一台机器上,具体步骤为 :

    打开 WSE 的管理界面(缺省为 http://WSE_Server:9080/ibmrfidadmin),进入 Agent Configuration 界面,点击 WBEAgent,设置 wbe.location=local。

  2. 配置 EventTransformationAgent,EventTransformationAgent 负责事件格式的转发,具体步骤为:

    打开 WSE 的管理界面(缺省为 http://WSE_Server:9080/ibmrfidadmin),进入 Controller group Configuration 界面,点击 EventTransformationAgent,修改 topic.tranform.to.external 属性,使得改属性包含 %LOCATION_AND_APPLICATION_ID%/report/TagReport = com.ibm.sensorevent.model.payload.PassiveRFIDTagReadPayload。

  3. 修改 WAS 配置,让 WBE 处理模块可以从 WSE 的消息总线订阅到 tagreport 消息,具体步骤如下:

    打开 WAS 的管理界面(缺省为 http://WAS_Server:9080/ibm/console),选择资源 >JMS,点击激活规范,找到 WBERUCAS,修改 Message selector 属性为 ibmse='RfidInventory/TagReport' OR ibmse='RfidInventory/TagAggregationReport' OR ibmse LIKE '%/report/TagReport' OR ibmse LIKE '%/report/TagAggregationReport'。

  4. 重新启动 WAS,确保上面所有修改生效。

WebSphere Sensor Events 和 WebSphere Business Events 的集成测试

做完以上的步骤后,下面我们要描述 WSE 和 WBE 的集成测试步骤和验证方法

首先是介绍集成测试步骤,其实非常简单,只需要一下 2 步就可以了。

  1. 启动 WBE 连接器。
  2. 使用 IBM WebSphere Sensor Events Server 扫描 RFID 标签。

接着怎么样验证我们的集成测试成功与否,同样非常简单,可以通过一下 3 个方面去验证 WSE 和 WBE 的集成是否成功。

  1. 查看 WBE 连接器的控制台界面,有被读取的标签 ID 显示。
  2. 登陆 WBE report 控制台,有被读取的标签 ID 显示。
  3. 查看 C:\WBE 目录,确认有 *PassiveTagRead.xml 文件生成。

如果以上验证都没问题,那么 WSE 和 WBE 的集成就成功完成了。

WBM 是 IBM 为用户提供的一个可以利用度量指标、可视显示和报警提供实时业务监控的工具,它为业务活动监控提供了业务流程的实时检测。

WSE 中的可重用组件 BAE RUC 可以帮助用户将 sensor event 转化为 WBM 标准格式。可以被 WBM 处理的事件(标签读取类型)格式如下:

2010-06-07T05:56:41.484ZIBMSensorEvent_A1DE6F71EFEB0CC0F934E43934623231BDDR/report/TagReport30P2urn:epc:id:grai:1234567.00110.1urn:epc:raw:96.x33544B5A1C001B800000000133544b5a1c001b8000000001urn:epc:tag:grai-96:2.1234567.00110.11just a testing2010-06-07T05:49:36.531Z1100G3.2G33544b5a1c001b80000000013G

WebSphere Business Monitor 端的配置

配置 WebSphere Business Monitor server 使其能够通过 WebSphere MQ 接收消息。

  1. 安装 MQtoCEIMediation.ear。

    登陆 WAS admin console,选择 应用程序 > 安装新的应用程序

    点击 浏览并指定应用的完整路径 was_root/scripts.wbm/CEIMQ/MQtoCEIMediation.ear
    完成默认安装。

  2. 修改 was_root/scripts.wbm/CEIMQ/configCEIForMQClients.props 文件。
    WAS_ADMIN_HOST=localhost  WAS_ADMIN_PORT=8880  #WAS_ADMIN_USERID=  #WAS_ADMIN_PASSWORD=  #ME_NAME=myNode.server1-CommonEventInfrastructure_Bus  QM_HOST=localhost  QM_PORT=1414  QM_NAME=myQueueManager  CONNECT_TO_MQ=true  #QM_ADMIN_CHANNEL=  #QM_USERID=  #QM_PASSWORD=  #SCRIPT_FILE_NAME=
  3. 执行配置脚本。

    Windows 平台:was_root/scripts.wbm/CEIMQ/configCEIForMQClients.bat -props configCEIForMQClients.props

    AIX, HPUX, Linux 平台:was_root/scripts.wbm/CEIMQ/configCEIForMQClients.sh -props configCEIForMQClients.props

    脚本在 WebSphere MQ 和 CommonEventInfrastructure_Bus 之间建立了一个 WebSphere MQ 链路,并且创建了一个远程队列 CEIQueue,后面我们会使用它接收来自 IBM Sensor Events server 的消息。

    完成所有以上配置后,需要重新启动 WebSphere Business Monitor server。

使用 WebSphere Business Monitor Development Toolkit 导入并发布 Sample BAM Model 工程

  1. 打开 RAD(已安装 WebSphere Business Monitor Development Toolkit),导入 WSE root\premises\install\ruc\bae\WSEAssetEvents.zip,如图 5 所示。
    图 5. 导入工程
  2. 将 AssetEventModelApplication 发布到 WebSphere Business Monitor Server。

在 BusinessSpace 中建立 Dashboard 用来显示 Tag Read 消息

  1. 访问并登陆 BusinessSpace。
  2. 添加一个新的 Dashboard,并添加一个 Instances 组件,(只显示 RFID Tag ID, Asset Description 和 Asset Count 字段)。

至此,WSE 和 WBM 的集成,WBM 端的配置就完成了。

WebSphere Sensor Events 端的配置

配置 IBM Sensor Events server 使其能够通过 WebSphere MQ 发送消息到 WBM

  1. 创建队列连接工厂

    选择 资源 >JMS> 队列连接工厂

    选择 作用域,点击 新建
    在 选择 JMS 资源提供程序页面 选择 WebSphere MQ messaging provider,点击确定
    编辑队列连接工厂具体信息(注意: QM 主机端口信息参照 WBM 所在主机填写)

  2. 创建队列

    选择 资源 >JMS> 队列

    选择 作用域,点击 新建
    在 选择 JMS 资源提供程序页面 选择 WebSphere MQ messaging provider,点击确定
    编辑队列具体信息。

  3. 修改激活规范 BAERUCAS 的消息选择器

    选择 资源 >JMS> 激活规范 >BAERUCAS

    将消息选择器格式修改为:ibmse='RfidInventory/TagReport' OR ibmse='RfidInventory/TagAggregationReport' OR ibmse LIKE '%/report/TagReport' OR ibmse LIKE '%/report/TagAggregationReport'

  4. 创建 WSE 的 JMS Output Channel
    选择 Event Processing Configuration>Output Channels
    创建一个新的 JMS Output Channel,如图 6 所示。
    图 6. JMS Output Channel
  5. 创建 WSE 的 Event Template
    选择 Event Processing Configuration>Event Templates
    创建一个新的 Event Template,如图 7 所示。
    图 7. Event Template

完成所有以上配置后,需要重新启动 WebSphere Sensor Events server 以让上述改动生效。

WebSphere Sensor Events 和 WebSphere Business Monitor 的集成测试

使用 IBM WebSphere Sensor Events Server 扫描 RFID 标签

测试验证:

使用 IBM WebSphere Sensor Events Server 扫描一个 RFID 标签,然后查看刚才建立的 Dashboard,识别到的 RFID 标签信息会显示在报表中,如图 8 所示

图 8. Dashboard
 

以上内容以一个最基本的 RFID 标签读取事件为例描述了 IBM Webpshere Sensor Events 和 WebSphere Business Events 以及 WebSphere Business Mointor 集成的具体配置方法,以及验证过程。根据具体的业务需求,用户还可以依此对项目进行扩展,已达到更好的集成使用效果。

原文链接:

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14789789/viewspace-673749/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14789789/viewspace-673749/

你可能感兴趣的文章