使用WebSphere Business Events REST介面從應用程式發出簡單業務事件

CloudSpace發表於2010-08-19
Madhu Ananthapadmanabh, TXSeries 軟體開發人員, IBM

簡介: 本文介紹如何使用 WebSphere® Business Events 的 REST 介面從任何使用 Web 協議的應用程式發出業務事件。

簡介

瞭解業務處理、更具靈敏性、近乎實時地監測管理和遵從性情況是不斷增長的企業業務線需求。基於事件的解決方案通過快速有效地利用機會和減少異常來支援業務和 IT 管理企業風險。當業務事件處理技術與業務線應用結合時,就創造了一個機會來構建解決方案,從而提供更多的靈活性並幫助檢測關鍵遵從性和管理情況。事件支援即時發現機會和異常,也可以發起適當的響應。

IBM® WebSphere Business Events(以下稱為 Business Events)是一個複雜的事件處理引擎,有助於業務基於可操作事件模式的發現檢測、評估和響應業務事件。它能夠將任何來源的業務事件在任何時間範圍內關聯起來。Business Events 支援各種接收事件和發起操作的傳輸。分散式應用程式可以使用的最簡單的一個傳輸是基於 HTTP 的具象狀態傳輸(Representational State Transfer,REST)介面,儘管新 REST API 是在 Business Events V7 中引入的,但本文涉及的基於 REST 的事件建立在 V6.2.1 和 V7 中都受支援。

REST 是一種架構風格,其中的每一個資源都是用一個統一資源識別符號(Universal Resource Identifier,URI)惟一表示的。當使用者在網路上使用 URI 訪問多個資源時,將會有一個狀態上的改變或者轉換。這就是具象狀態傳輸。在 Business Events 中,每個定義的事件是一個資源,都有一個 URI 可用來建立事件的特定例項。

儘管其他 IBM 產品,比如 CICS® Transaction Server 和 WebSphere Message Broker,都提供直接從應用程式或流中發出事件的機制。但仍然有很多應用程式沒有這種功能。在本文中,您將學習如何使用 Business Events REST 介面從任何使用 Web 協議的應用程式發出業務事件。

 

先決條件

為了完成本文的步驟,您需要掌握以下幾點:

  • WebSphere Business Events。
  • Java™ 程式語言
  • Web 協議

您必須安裝以下軟體:

  • WebSphere Business Events V6.2.1 或更高版本。
  • JDK 1.6 (用來編譯和執行示例)。

業務事件就是在業務中發生(或者沒有發生)的事情。事件源可以是從 RFID 感測器到業務應用程式的任何東西。事件被髮送到一個諸如 Business Events 的複雜事件處理引擎。事件處理引擎可將這些事件關聯起來,然後根據使用者定義的規則發出操作。

讓我們看一個出現在銷售網點應用程式中的訂單事件示例。您可以對其進行如下定義:

如果一個訂單值超過 $1000,收集以下資料:

  • Name
  • Contact number
  • Item
  • Order value

該事件的操作是將該客戶放入一個溢價名單,為後續訂單提供較好的報價。在這個例子中,銷售網點應用程式是事件來源,將會傳送事件給 Business Event。Business Events 根據事件處理邏輯採取使用者定義的適當行動。圖 1 展示了這一場景。


圖 1. 訂單事件示例
訂單事件示例

繼續以銷售網點應用程式為例,我們假設應用程式本身沒有傳送業務事件功能。我們將看到,如何輕鬆地嚮應用程式新增事件發出功能。

第一步是確認事件出現的地點併為事件收集必要資料。所有資料收集完成之後,建立一個事件包(Business Event 格式)然後呼叫 Business Events 的 REST 介面。

理解 Business Events 事件格式

Business Events 支援多種傳輸協議,比如 JMS、檔案和 HTTP,來傳送事件。本文中我們使用 HTTP。

HTTP 可傳輸兩種不同的事件格式:HTML Form. 和 Connector Packet。顧名思義,在 HTML Form. 格式中,事件是通過一個 HTML 表單直接傳送。Connector Packet 是事件的標準 Business Events XML 格式。本文中我們將使用 Connector Packet 格式。

Connector Packet 格式

Connector Packet 格式如清單 1 所示,是一個事件和操作的常用模式。


清單 1. Business Events Connector Packet 格式




field-value
field-value


[SENDING.SYSTEM.INSTITUTION.COM]
[0000-00-00T00:00:00]
[ MESSAGE]

            

表 1 對清單 1 中的元素進行了說明。* 是可選元素。


表 1. Connector Packet 欄位描述

元素 說明
packet-type 事件/操作包的型別
packet-name 事件/操作名
connector-name 聯結器名或接觸點
event-object-name 物件事件名
system* 傳送有效載荷的系統名
time stamp* ISO8601 格式的時間戳,表示事件時間
loginfo* 包含在 WBERuntime 事件日誌中的訊息

在事件物件中,您可以將事件(也叫做事件有效載荷)的資料放置在名/值對中。關於 Connector Packet 格式的更多資訊,請參閱 WebSphere Business Events 資訊中心。

事件物件

讓我們建立一個名為 WBEEvent 的物件,獲取事件資料,構建一個事件聯結器包,並將其傳送給 Business Events。圖 2 顯示了 WBEEvent 物件的類圖。該物件有四個屬性和兩個方法,詳述如下。


圖 2. WBEEvent 物件類圖
圖 2. WBEEvent 物件類圖

其中:

  • EventName 是事件名。
  • HostName 是 Businesses Events 執行所在的主機名。
  • PortNumber 是 Application Server 埠號。參考 WebSphere Business Events 資訊中心 獲取更多關於如何識別埠的資訊。
  • DataElements 是一個在名/值對中包含事件資料的向量。
  • AddData()是一個將事件資料作為名/值對的方法,並將其儲存在 DataElements 向量中。
  • Send() 是一個使用事件名和資料組成事件聯結器包的方法。此方法也可以使用 EventNameHostNamePortNumber 為事件構建一個 URI。它將使用 HTTP POST 方法呼叫 REST 介面。如果 POST 成功,Business Events 將傳送一個 HTML 響應 “Form. processed” 。

事件傳輸格式

事件傳輸格式有兩部分:一個 HTTP 請求頭和事件有效載荷(是事件聯結器包)。圖 3 顯示了線上路上傳送的最終事件訊息。


圖 3. 事件傳輸格式
事件傳輸格式

本文將提供一個用 Java 編寫的 WBEEvent 物件的示例實現供您 下載PointOfSale 類例項化 WBEEvent 物件並向 Business Events 傳送事件。

在 Business Events 中定義事件

為了測試示例,您需要定義 OrderEvent 和 Business Events 操作。為此,完成以下步驟:

  1. 選擇 Start => Programs => IBM WebSphere Business Events V7.0 => Design Data,開啟 Design Data 工具。
  2. 選擇 Insert => Touchpoint,建立一個名為 REST 的接觸點。出現輸入名稱提示時,輸入 REST 並單擊 OK
  3. 選擇 Insert => Event => Blank,出現輸入名稱提示時,輸入 OrderEvent 並單擊 OK
  4. 右鍵單擊 OrderEvent 並選擇 Event Properties,更改事件屬性來配置 HTTP 連線。單擊 Connection 選項卡並選擇 HTTP Connection
  5. 單擊 Configure,然後選擇 Connector Packet 作為格式、http 作為傳輸協議。
  6. 單擊 OK,再次在 Event OrderEvent Properties 對話方塊單擊 OK。所有屬性設定完成後,您的對話方塊如圖 4 所示。

    圖 4. 事件屬性
    事件屬性

  7. 選擇 Insert => Event bject=> Blank 來插入一個事件物件。呼叫物件 OrderEvent_Data。該物件名是很重要的,因為在組成聯結器包示例中,我們假設事件物件名是 _Data
  8. 右鍵單擊 OrderEvent_Data 物件並選擇 Insert Event Object Field,然後插入表 2 所列欄位:


表 2. 事件物件欄位

欄位名 資料型別
Name 字串
ContactNumber 字串
Item 字串
OrderValue 整型

定義了所有的欄位之後,您的螢幕看起來像圖 5 這樣。


圖 5. 事件物件欄位
事件物件欄位

  1. 現在您需要建立一個 Intermediate 物件。Intermediate 物件是代表那些被用於構建事件處理邏輯的業務物件。選擇 Insert =>Intermediate bject => Blank 並指定 OrderEvent_Obj
  2. 選擇所有事件物件欄位(使用 Ctrl 鍵來選擇多個欄位),然後將其拖放到 Intermediate object 視窗。完成這些操作之後。您的視窗如圖 6 所示。

    圖 6. Intermediate 物件
    Intermediate 物件

  3. 現在您需要為該事件定義一個操作。您可以定義任何型別的操作,從傳送一個 email 到更新一個儀表板。對於本例,我們將建立一個操作,該操作在檔案系統中建立一個名為 Action_data 的檔案。要插入操作,選擇 Insert => Action> Blank,然後呼叫操作 OrderAction
  4. 右鍵單擊 OrderAction 並選擇 Action properties,為操作設定連線屬性。
  5. Connection 選項卡上,選擇 File System Connection。為格式選擇一個 Connector Packet 並單擊 Configure
  6. 輸入圖 7 所示屬性,並單擊 OK,然後再次單擊 OK 關閉操作屬性。

    圖 7. 操作屬性
    操作屬性

  7. 單擊 File => Save As => Project To Server Store 儲存專案。開啟的對話方塊顯示專案儲存。專案儲存是儲存專案的區域,可以使用設計工具找到。選擇一個資料夾或者建立一個新資料夾來儲存專案,然後在對話方塊底部的輸入框中指定專案名 simple_rest,並單擊 Save
  8. 接下來您需要為訂單事件定義邏輯;也就是說,收到 OrderEvent 後, 如果 OrderValue 大於 1000 則呼叫 OrderAction。為此,可以使用 Business Space 中的設計工具。
  9. 選擇 Start => Programs => IBM WebSphere Business Events V7.0 => Business Space
  10. 輸入您的 UserIDPassword 登入 Business Space。
  11. 如果您是第一次登入,將會看到一個歡迎頁面。單擊 Start
  12. 單擊 Create Space 建立您自己的空間。指定 Simple Rest 作為頁名。
  13. 單擊 Edit Page。在頂部您將看到許多小部件。將 Business Events Design 小部件拖到頁面上。操作完成後,您的螢幕如圖 8 所示。

    圖 8. Business Events Design 小部件
    Business Events Design 小部件

  14. Design Data 中,您將資料模型儲存在專案儲存中,這意味著您可以輕鬆地開啟 Business Space 中的專案來新增業務邏輯。為此,單擊 Business Events Design 小部件,並選擇 Project =>Open
  15. 您可以看到您的資料夾和 simple_rest 專案。選擇 simple_rest 並單擊 Open
  16. 在 Current Project 皮膚中,您可以看到迄今為止您已經建立的資產的樹狀結構以及互動集佔位符和過濾器。
  17. 為訂單值大於 1000 的訂單建立一個過濾器。單擊 New filter,然後單擊 new filter 為過濾器命名。呼叫過濾器 Order more than 1000
  18. 選擇 operand => Select a field,然後單擊 OrderEvent_Obj 展開列表,並選擇 OrderValue
  19. 選擇 operator => Numeric operators,然後選擇 Is Greater Than
  20. 選擇 click for operandEnter value。輸入 1000

    完成這些操作之後,過濾器如圖 9 所示。



    圖 9.過濾器
    過濾器

  21. 單擊 New interaction set,建立一個互動集。
  22. 單擊 new interaction set 區域並指定名稱為 Order Interaction。單擊 Click to select an event => REST 並選擇 OrderEvent。單擊靠近 Always 的三角形,然後選擇 Add a Filter。單擊資料夾名(預設是 New Folder)並選擇 Order more than 1000 過濾器。單擊靠近 Action 的三角形並選擇 REST=> OrderAction。您剛剛為 OrderEvent 建立了業務邏輯:為了響應 OrderEvent,如果 OrderValue 大於 1000,OrderAction 立即被呼叫。您的互動集如圖 10 所示。

    圖 10. 互動集
    互動集

  23. 既然您已經完成了資料模式和業務邏輯定義,那麼就需要將專案釋出到 Business Events 執行時。在 Business Events Design 小部件的工具欄上單擊 Runtime,然後單擊 Publish to runtime,專案資產釋出到執行時。檢視狀態列(在工具欄下面)。狀態訊息是:“Publishing project: published successfully。”
  24. 現在,配置完成了!啟動聯結器(位於 Design Data 工具中)。當聯結器準備接收事件時,您將看到如圖 11 所示的 Connectors 控制檯。

    圖 11. Connectors 控制檯
    Connectors 控制檯

  25. 您可以執行示例 Java 程式來測試訂單事件。示例有兩個命令列引數:執行 Business Events 的主機的名稱和應用程式埠號。如果一切順利,程式輸出將如清單 2 所示。


清單 2. 示例程式輸出

C:\>java -jar OrderEvent.jar leander.ibm.com 9080

Creating OrderEvent Object....
Adding Event data:
        Name = John
        ContactNumber = 847-111-1111
        rderValue = 5000
        Item = Computer
Sending event to WBE........
Event sent successfully

  1. 如果您在 Connectors 控制檯中檢視訊息,將會看到 OrderEvent 被接收且 OrderAction 被呼叫。Connectors 控制檯如圖 12 所示。

    圖 12.帶有事件訊息的 Connector 控制檯
    帶有事件訊息的 Connector 控制檯

在本文中,您學習了什麼是業務事件以及如何使用它們獲取業務洞察。現在您理解了 WebSphere Business Events 事件格式。我們建立了一個可以收集事件資料的物件,構建了 connector packet 格式的事件,並使用 REST 介面將其傳送到 Business Events。現在您可以參考本文使用 Business Events 的 REST 介面從任何應用程式發出業務事件。

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

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

相關文章