使用Business Events和Business Monitor對感測器資料進行智慧分析

CloudSpace發表於2010-09-13
張 鵬, 軟體工程師, IBM
胡 桂兵, 軟體工程師, IBM
李 楠, 軟體工程師, IBM

簡介: 感測器技術在智慧的地球中起著非常重要的作用,藉助於各類感測器我們可以將日常生活中物體的位置、溫度、重量以及氣體濃度、水流速度等資訊實時輸送到後臺系統。IBM WebSphere Sensor Events(WSE)中介軟體可以幫助收集、過濾現實中各種型別的感測資料,再將統一格式的感測資料傳送給 IBM WebSphere Business Events(WBE)中介軟體,按照事先定義的複雜事件規則對感測資料進行分析,從而產生出更有意義的帶有商業邏輯的事件資料,最終我們可以藉助 IBM WebSphere Business Monitor(WBM)的儀表盤等功能形象、直觀的監控這些現實世界的事件,幫助我們更加科學有效地發現和解決問題。本文將著重向讀者介紹怎樣將 WSE、WBE、WBM 整合在一起,完成相互訊息傳輸、加工的方法,並提供一個完整的開發案例讓讀者直觀的感受到通過以上三個產品的整合使用給企業日常生產帶來的好處。

<!--

IBM WebSphere Sensor Events 簡介

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 的系統整合架構圖
圖 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%2FTagReport 
       
       
         50 
       
       
         IBMSensorEvent_39d7e401-204e-4d05-ae5b-951ee4b627fe 
       
       
         P2 
       
       
         2010-06-07T09:05:29.312Z 
       
       
         6.1 
       
    
    
    
    
     com.ibm.sensorevent.model.payload.PassiveRFIDTagReadPayload 
       
         
            
              
                urn%3Aepc%3Aid%3Agrai%3A1234567.00110.1 
               
               
                  urn%3Aepc%3Atag%3Agrai-96%3A2.1234567.00110.1 
                
                
                  urn%3Aepc%3Araw%3A96.x33544B5A1C001B8000000001 
                
                
                  33544b5a1c001b8000000001 
                
             
          
       
    
    
       
    
    
  

感測器事件閘道器

感測器事件閘道器向外提供了一個資料輸入介面,使用者可以通過它將感測器事件釋出到一個名字叫做 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 標籤讀取事件的訊息傳輸和加工的過程,以及提供驗證這些整合是否成功的方法。

WebSphere Sensor Events 與 WebSphere Business Events 的整合

WBE 提供了易於使用的圖形創作工具,您可以將其用於定義業務策略和邏輯,以便響應業務事件和模式,以及發起相應的業務操作。業務策略描述系統將如何對某些組合中或在某些時間發生或未發生的事件做出反應。

WSE 中的可重用元件 WBE RUC 可以幫助使用者將 sensor event 轉化為 WBE 標準格式。可以被 WBE 處理的事件(標籤讀取型別)格式如下:

  
  
   
    IBMSensorEvent_A1DE870DB91E9F50CB21B83833386663 
	 P2 
	 BDDR/report/TagReport 
	 6.1 
	 30 
	 2010-06-07T14:59:47+0800 
    
    
    
    
	 1 
	 1 
	 2010-06-07T14:59:47+0800 
	 P2 
	 urn:epc:tag:grai-96:2.1234567.00110.1 
	 urn:epc:id:grai:1234567.00110.1 
	 urn:epc:raw:96.x33544B5A1C001B8000000001 
	 33544b5a1c001b8000000001 
     
    
   127.0.0.1 
 2010-06-07T14:59:47+0800 
 An 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. 定義中間物件
    圖 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. 定義中間物件域
    圖 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. 建立互動設定
    圖 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 的整合就成功完成了。

WebSphere Sensor Events 與 WebSphere Business Monitor 的整合

WBM 是 IBM 為使用者提供的一個可以利用度量指標、可視顯示和報警提供實時業務監控的工具,它為業務活動監控提供了業務流程的實時檢測。

WSE 中的可重用元件 BAE RUC 可以幫助使用者將 sensor event 轉化為 WBM 標準格式。可以被 WBM 處理的事件(標籤讀取型別)格式如下:

  
  
   
	  
	  
  
    
   
2010-06-07T05:56:41.484Z IBMSensorEvent_A1DE6F71EFEB0CC0F934E43934623231 BDDR/report/TagReport 30 P2
urn:epc:id:grai:1234567.00110.1 urn:epc:raw:96.x33544B5A1C001B8000000001 33544b5a1c001b8000000001 urn:epc:tag:grai-96:2.1234567.00110.1 1 just a testing 2010-06-07T05:49:36.531Z 1 100G 3.2G 33544b5a1c001b8000000001 3G

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. 匯入工程
    圖 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
    圖 6. JMS Output Channel

  5. 建立 WSE 的 Event Template
    選擇 Event Processing Configuration>Event Templates
    建立一個新的 Event Template,如圖 7 所示。

    圖 7. Event Template
    圖 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
圖 8. Dashboard
 

結束語

以上內容以一個最基本的 RFID 標籤讀取事件為例描述了 IBM Webpshere Sensor Events 和 WebSphere Business Events 以及 WebSphere Business Mointor 整合的具體配置方法,以及驗證過程。根據具體的業務需求,使用者還可以依此對專案進行擴充套件,已達到更好的整合使用效果。

原文連結:http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1009_zhangp_weesysintegration/1009_zhangp_weesysintegration.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-673749/,如需轉載,請註明出處,否則將追究法律責任。

相關文章