使用 WebSphere Adapter 整合 Oracle Workflow Business Event System 實現業務整合

CloudSpace發表於2010-10-13
常 培, 軟體工程師, IBM CSDL
張 凱, 軟體工程師, IBM CSDL

簡介: WebSphere Adapter 是 IBM 對 JCA 標準的實現,用於企業資訊系統(EIS)間的業務整合,在 SOA 解決方案中扮演著重要角色。通過閱讀本文,讀者可以瞭解如何使用 WebSphere Adapter for Oracle E-Business Suite V7.0 整合 Oracle Workflow Business Event System,並實現訂單業務整合的基本原理和最佳實踐;以及如何使用 WebSphere Adapter 開發企業資訊系統整合的示例場景。

引言

WebSphere Adapter for Oracle E-Business Suite 作為 IBM WebSphere 介面卡家族中的重要一員,提供了針對 Oracle E-Business Suite(簡稱 Oracle EBS)系統進行業務整合的能力。利用該介面卡,企業可以方便地將已有的 Oracle EBS 系統資源整合到面向服務的體系架構(SOA)中。

Oracle EBS 是 Oracle 公司重點發展和推廣的新一代 ERP 系統。目前,不論在中國還是全球 ERP 市場,已經擁有非常龐大的使用者群。Oracle EBS 使用 Oracle Workflow Business Event System 來發布或訂閱業務事件,使用者可以根據具體的業務需求來訂閱事件並訂製事件發生時所觸發的行為。

本文根據作者的實際業務整合經驗,以訂單模組為例,闡述如何使用 WebSphere Adapter for Oracle E-Business Suite 整合 Oracle Workflow Business Event System,並提供詳細的開發和測試過程,以便於讀者可以輕鬆瞭解使用 WebSphere Adapter 整合 Oracle Workflow Business Event 實現業務整合的關鍵步驟。

WebSphere Adapter for Oracle E-Business Suite V7.0

WebSphere Adapter for Oracle E-Business Suite 是 IBM WebSphere 針對 Oracle EBS 系統整合的介面卡產品。它提供了對 Oracle EBS 各個應用模組全面、穩定的連線能力,支援多種連線方式,方便滿足客戶在不同層級的整合需求。它提供了整合應用與 Oracle EBS 系統資源的雙向連線,即入站(inbound)和出站(outbound)。

入站 進行入站操作時,Oracle EBS 系統資料發生任何改變都會生成相應事件,WebSphere Adapter 通過主動監控事件儲存,發現事件後從 Oracle EBS 資料儲存中查詢並得到相應業務資料,將其傳送到特定目的端。

出站 進行出站操作時,應用程式通過 WebSphere Adapter 將業務資料首先插入 Oracle Interface Table,然後通過呼叫儲存過程執行 Oracle EBS 系統中的標準併發方法(Concurrent Program)進行資料的完整性和一致性校驗,並將合法資料轉移到 Oracle Base Table。

Oracle E-Business Suite 和 Oracle Workflow Business Event System

Oracle E-Business Suite(Oracle 電子商務套件)是 Oracle 公司提供的一套企業資源規劃系統,為客戶提供全新概念的兼具企業級應用能力和麵向服務基礎架構的強大系統。主要應用於金融,零售,電信,保險,製造等行業。訂單管理(Order Management)作為 Oracle EBS 最重要的應用模組之一,擁有覆蓋大、中、小各種規模企業的大量客戶群體。客戶往往將其訂單業務建立在 Oracle EBS 之上。因此,針對 Oracle EBS 訂單業務的整合具有廣大客戶需求。

在 Oracle E-Business Suite 中,進行業務處理比如採購訂單的批准、發票的確認時都會產生相應的業務事件,這些事件可以是 Oracle EBS 系統預定義的事件,也可以是客戶自定義的事件。Oracle Workflow Business Event System 主要由以下 3 個部件構成:

Oracle Workflow Builder 包括了 Oracle Workflow Standard Item Type 和 Oracle XML Gateway Standard Item Type。前者主要是用來定義 workflow process。

Oracle Workflow Administrator 用來註冊新的業務事件和訂閱,或修改系統中預定義的事件的訂閱。

Oracle Workflow processing engine 用來執行 workflow process。

本文側重於 Oracle Business Event 的整合示例,關於 Oracle Workflow 的整合,我們將另文詳述。

WebSphere Adapter for Oracle E-Business Suite V7.0 和 Oracle Workflow Business Event System 互動場景

本文將介紹使用 WebSphere Adapter 整合 Oracle Workflow Business Event System 實現訂單業務整合的基本工作原理和最佳實踐。圖 1 以訂單模組為例描述了一個 WebSphere Adapter 的入站流程,通過 Oracle Workflow Business Event System 中的事件及事件的訂閱機制,將 Oracle EBS 訂單模組中新產生的訂單事件,從 Oracle Workflow Business Event System 轉存到 WebSphere Adapter 監聽的事件儲存中。WebSphere Adapter 監聽到該事件後,從 Oracle EBS 系統中獲取該訂單的詳細資訊。


圖 1. WebSphere Adapter 與 Oracle Workflow Business Event System 互動場景
圖 1. WebSphere Adapter 與 Oracle Workflow Business Event System 互動場景

示例場景介紹

本場景將在 Oracle EBS 系統訂單模組中建立一個新的訂單,使用 WebSphere Adapter 整合 Oracle Workflow Business Event System,獲得訂單事件,並且獲取訂單的詳細資訊。

在本場景實現過程中,使用到 Oracle Workflow Business Event System 中的事件 oracle.apps.po.event.xmlpo,Oracle EBS 系統訂單模組中的資料表 PO_HEADERS_ALL,PO_LINES_ALL,PO_LINE_LOCATIONS_ALL 和 PO_DISTRIBUTIONS_ALL。

場景開發

場景開發的主要的過程如下:

1. 建立 WebSphere Adapter 監聽的 event table。

2. 建立 stored function,將 Oracle EBS 系統訂單模組中新產生的訂單事件,從 Oracle Workflow Business Event System 轉存到 WebSphere Adapter 監聽的事件儲存中。

3. 建立 Oracle Workflow Business Event 的 subscription,並在 subscription 中訂製事件發生時觸發執行 stored function。

4. 開發 WebSphere Adapter 的入站應用程式。

建立 event table

清單 1 中的 SQL 指令碼,將在 Oracle EBS 資料庫系統的 APPS schema 下建立 WebSphere Adapter 監聽的 event table:IBM_WEBSPHERE_EVENTS。在具體的應用中,可以新增或者修改此表中的一些欄位以滿足實際業務整合需求。


清單 1. 建立 event table: APPS.IBM_WEBSPHERE_EVENTS

				  
 
 DROP TABLE APPS.IBM_WEBSPHERE_EVENTS; 
 CREATE TABLE APPS.IBM_WEBSPHERE_EVENTS( 
	 event_id 			 NUMBER, 
	 object_key 			 VARCHAR2(100), 
	 object_name 			 VARCHAR2(100), 
	 object_function 		 VARCHAR2(50), 
	 event_priority 		 NUMBER, 
	 event_time 			 DATE, 
	 event_status 			 NUMBER, 
	 event_comment 			 VARCHAR2(240), 
	 xid 				 VARCHAR(100), 
	 connector_ID 			 VARCHAR2(40) 
 ); 

建立 stored function

在建立 stored function 之前,我們先建立一個 event 序列(如清單 2 所示),在 store function 中我們將使用這個序列自動生成 event table 中的 event id 欄位。

清單 3 中的 SQL 指令碼,將在 Oracle EBS 資料庫系統的 APPS schema 下建立 IBM_RULE_FUNCTION,將 Oracle EBS 訂單模組中新產生的訂單事件,從 Oracle Workflow Business Event System 轉存到 WebSphere Adapter 監聽的事件儲存中,即 IBM_WEBSPHERE_EVENTS 中。


清單 2. 建立 event 序列 : APPS.IBM_WEBSPHERE_EVENTS_S

				  
 
 DROP SEQUENCE APPS.IBM_WEBSPHERE_EVENTS_S; 
 CREATE SEQUENCE APPS.IBM_WEBSPHERE_EVENTS_S 
 START WITH 1; 


清單 3. 建立 stored function: APPS.IBM_WEBSPHERE_EVENTS
				  
 
 CREATE OR REPLACE PACKAGE IBM_WEBSPHERE_PKG AS 
	 FUNCTION IBM_RULE_FUNCTION(    
 p_subscriptionIN  RAW,                                
 p_eventIN  OUT  NOCOPY  WF_EVENT_T 
        ) RETURN VARCHAR2; 
 END; 
 / 
 CREATE OR REPLACE PACKAGE BODY IBM_WEBSPHERE_PKG AS 
	 FUNCTION IBM_RULE_FUNCTION( 
 p_subscription IN  RAW,                                
 p_event        IN  OUT  NOCOPY  WF_EVENT_T 
        ) RETURN VARCHAR2IS 
  
 v_ruleVARCHAR2(20);   
	 v_event_id 	 NUMBER; 

	 BEGIN 
   
		 SELECT 	 ibm_websphere_events_s.NEXTVAL 
 INTOv_event_id 
 FROMDUAL; 

 INSERT INTO ibm_websphere_events VALUES ( 
 v_event_id,--event id 
 substr(p_event.getEventKey(), 0, 5),--object key 
'AppsPo_Headers_All',--object name 
'Create',--object function 
 1,--event priority 
 SYSDATE,                       --event time 
 0,--event status 
 NULL,--event comment 
 NULL,--xid value 
'001'--connector id 
		 ); 
	
		 v_rule :=  wf_rule.default_rule(p_subscription,p_event);    
		
 RETURN ('SUCCESS'); 
		
	 END IBM_RULE_FUNCTION; 
 END IBM_WEBSPHERE_PKG; 
 / 
 SHOW ERRORS 

建立 Oracle Workflow Business Event 的 subscription

1)使用 sysadmin/sysadmin 帳號登入 Oracle EBS 客戶端;

2)選擇 Workflow Administrator Web Applications 職責;

3)選擇 Administrator Workflow - > Business Events 選單;

4)選擇 Subscriptions 子選單;

5)點選 Create Subscription 按鈕;

6)填寫 subscription 的詳細資訊,如表 1 所示。


表 1. Event Subscription

Attribute Value Description
Subscriber System VIS.CN.IBM.COM The name of your Oracle EBS instance
Triggering Event Source Type Local
Event Filter oracle.apps.po.event.xmlpo Oracle seeded event of creating a Purchase Order
Execution Condition Phase 10
Status Enabled
Rule Data Message
Action Type Action Type Custom
On Error Stop and Rollback
Action PL/SQL Rule Function ibm_websphere_pkg.ibm_rule_function Custom action to convert and store Oracle business event into WebSphere Adapter event table
Priority Normal
Documentation Owner Name JTF
Owner Tag JTF

接下來我們將向您介紹如何使用 WID V7.0 來開發 WebSphere Adapter 入站應用程式,以及如何配置、執行、測試本文中的示例場景。

開發 Oracle EBS 介面卡入站應用程式

1. 開啟 WID V7.0,切換到 Business Integration 檢視。

2. 點選選單 File -> New – > External Service,啟動 WebSphere Adapter for Oracle E-Business Suite 服務發現嚮導。

3. 在 Available Types 中 , 選擇 Adapters -> Oracle E-Business Suite,點選 下一步

4. 選擇 IBM WebSphere Adapter for Oracle E-Business Suite (IBM: 7.0.0.0) 節點,點選 下一步

5. 在 Import a RAR File 頁面 , 保留預設設定,點選 下一步

6. 在 Locate the Required Files and Libraries 頁面,新增 Oracle JDBC driver ojdbc6.jar,點選 下一步

7. 在 Select the Processing Direction 頁面,選擇 Inbound,點選 下一步

8. 在 Specify the Discovery Properties 頁面,選擇資料庫版本並填寫連線 Oracle EBS 系統的必要資訊,如圖 2 所示。點選 下一步,將開始連線目標 Oracle EBS 系統。


圖 2. 配置 Oracle EBS 系統連線資訊
圖 2. 配置 Oracle EBS 系統連線資訊

9. 在 Find Objects in the Enterprise System 頁面,

  1. 開啟 Edit Query 對話方塊,輸入 Schema 過濾條件 APPS,選中 Prompt for additional configuration settings when adding business object,點選 OK
  2. 點選 Run Query,查詢結果將在 Discovered objects 中列出。

10. 在 Synonyms – Nick Names 下分別過濾出訂單模組的四個資料表:PO_HEADERS_ALL,PO_LINES_ALL,PO_LINE_LOCATIONS_ALL 和 PO_DISTRIBUTIONS_ALL,並分別配置各個表的屬性資訊,並新增到 Selected objects 中。

  1. 表 PO_HEADERS_ALL

    如圖 3 所示,在 Specify theConfiguration Properties for ‘ PO_HEADERS_ALL ’ 頁面,配置表 PO_HEADERS_ALL 的屬性資訊,包括主鍵 PO_HEADER_ID,點選 OK



    圖 3. 配置表 PO_HEADERS_ALL
    圖 3. 配置表 PO_HEADERS_ALL

  2. 表 PO_LINES_ALL

    如圖 4 所示,在 Specify theConfiguration Properties for ‘ PO_LINES_ALL ’ 頁面,配置表 PO_LINES_ALL 的屬性資訊,包括主鍵 PO_LINE_ID,父表 PO_HEADERS_ALL,外來鍵 PO_HEADER_ID 等資訊,點選 OK



    圖 4. 配置表 PO_LINES_ALL
    圖 4. 配置表 PO_LINES_ALL-1



    圖 4. 配置表 PO_LINES_ALL-2

  3. 表 PO_LINE_LOCATIONS_ALL

    如步驟 2 所示,在 Specify the Configuration Properties for ‘ PO_LINE_LOCATIONS_ALL ’ 頁面,配置表 PO_LINE_LOCATIONS_ALL 的屬性資訊,包括主鍵 LINE_LOCATION_ID,父表 PO_LINES_ALL,外來鍵 PO_LINE_ID等資訊,點選 OK

  4. 表 PO_DISTRIBUTIONS_ALL

如步驟 2 所示,在 Specify the Configuration Properties for ‘ PO_DISTRIBUTIONS_ALL ’ 頁面,配置表 PO_DISTRIBUTIONS_ALL 的屬性資訊,包括主鍵 PO_DISTRIBUTION_ID,父表 PO_LINES_ALL,外來鍵 PO_LINE_ID 等資訊,點選 OK

經過上述操作,將 PO_HEADERS_ALL,PO_LINES_ALL,PO_LINE_LOCATIONS_ALL 和 PO_DISTRIBUTIONS_ALL 新增到 Selected objects 中,結果如圖 5 所示。


圖 5. 新增訂單模組的資料表
圖 5. 新增訂單模組的資料表

11. 在 Configure Composite Properties 頁面,清除 Generate a business graph for each business object 選項,其它選項保留預設配置,點選 下一步

12. 在 Specify the Service Generation and Deployment Properties 頁面,如圖 6 所示。

  1. 選中 Using security properties from the activation specification
  2. Deploy connector project 中,選擇 With module for use by single application 選項。
  3. Database connection information 中,選擇 Specify database connection information 選項。
  4. 檢查所有連線資訊都是正確的,點選 下一步


圖 6. 配置 Service Generation 和 Deployment Properties
圖 6. 配置 Service Generation 和 Deployment Properties

13. 在 Specify the Location Properties 頁面,建立新的模組名字 POInbound,點選 Finish,完成介面卡服務發現過程。

14. 在生成的 POInbound 入站應用程式下,雙擊 Assembly Diagram,新增 Untyped Component:Component1,如圖 7 所示。Component1 的實現程式碼片段如清單 4 所示,其作用是將介面卡入站應用程式獲取到的訂單資料序列化成 XML String,並輸出在 WPS 控制檯。


圖 7. 建立入站應用程式的 Component
圖 7. 建立入站應用程式的 Component

清單 4. 介面卡入站應用程式 Component 程式碼片段

				  
 
 public void createAppsPo_Headers_All(DataObject createAppsPoHeadersAllInput) { 
	 System.out.println("End point for createAppsPo_Headers_All"); 
	 try{ 
		 String xmlString 
		  = AdapterBOUtil.serializeDataObject(createAppsPoHeadersAllInput); 
		 System.out.println(xmlString); 
 }catch(Exception e){ 
		 System.out.println("Error in tracing the data object"); 
	 } 
 } 

場景測試

場景測試的主要的過程如下:

1. 啟動 WebSphere Process Server v7.0,並將 WebSphere Adapter 的入站應用程式部署到 server 上。

2. 登入 Oracle EBS 客戶端,在訂單模組中建立一個新的訂單。

3. WebSphere Adapter 收到來自 Oracle Workflow Business Event System 的訂單事件後,從 Oracle EBS 系統訂單模組獲取到該訂單的詳細資訊,並列印在 WebSphere Process Server 的控制檯。

在 Oracle EBS 控制檯建立新訂單

  • 使用 operations/welcome 帳號登入 Oracle EBS 控制檯;
  • 選擇 Purchasing, Vision Operations (USA) 職責;
  • 選擇 Purchase Orders -> Purchase Orders 選單;
  • 如圖 8 所示,根據具體業務需求,輸入訂單的詳細資訊,並點選 Approve


圖 8. 在 Oracle EBS 系統中建立新的訂單
圖 8. 在 Oracle EBS 系統中建立新的訂單

介面卡入站程式獲取到訂單詳細資訊並列印在 WPS 控制檯

在上述步驟點選 Approve 後,Oracle Workflow Business Event System 將產生事件 oracle.apps.po.event.xmlpo,由於我們已經訂閱了此事件,並訂製了事件發生時所觸發的行為,即將 Oracle EBS 訂單模組中新產生的訂單事件,從 Oracle Workflow Business Event System 轉存到 WebSphere Adapter 監聽的事件儲存中。當 WebSphere Adapter 監聽到該事件後,從 Oracle EBS 系統中獲取該訂單的詳細資訊,並按入站程式中指定的格式列印在 WPS 控制檯,如圖 9 所示。


圖 9. 訂單資訊輸出
圖 9. 訂單資訊輸出

通過上述的示例開發、配置和測試,我們成功地完成了 WebSphere Adapter 和 Oracle Workflow Business Event System 的整合,並實現了訂單業務在 Oracle EBS 系統和 IBM WebSphere 產品間的整合。在實際應用中,IBM WebSphere 產品在收到訂單資訊後,會做進一步的分析與處理,比如客戶訂單業務分析與風險管理等等。

測試結果分析

在場景開發部分,我們首先在 Oracle EBS 系統中建立了 event table 和 stored function,前者是 WebSphere Adapter 監聽的事件儲存,後者是將 Oracle Workflow Business Event (oracle.apps.po.event.xmlpo)轉存到 WebSphere Adapter 監聽的事件儲存中。然後建立了 Oracle Workflow Business Event(oracle.apps.po.event.xmlpo)的訂閱,並在訂閱中訂製了事件發生時呼叫之前建立的 stored function。

在場景測試部分,我們首先在 Oracle EBS 系統訂單模組中建立一個新的訂單。然後,WebSphere Adapter 通過監聽 event table,監聽到該訂單事件,並獲取到該訂單的詳細資訊,並列印在 WPS 控制檯。至此,使用 WebSphere Adpter 整合 Oracle Workflow Business Event System 實現訂單業務整合執行成功。其成功的關鍵點在於:

1. WebSphere Adpater 成功生成業務資料物件和介面卡服務的相關定義和配置檔案

在執行介面卡服務發現嚮導過程中,訂單事件涉及到的訂單模組的資料表必須準確配置,包括表之間的父子關係,以及表上的主、外來鍵等。只有這些配置準確無誤,業務資料物件和介面卡服務的相關定義和配置檔案才能成功生成。

2. Oracle Worflow Business Event 成功轉存到 WebSphere Adapter 監聽的事件儲存中

將 Oracle Workflow Business Event(oracle.apps.po.event.xmlpo)轉存到 WebSphere Adapter 監聽的事件儲存中,我們使用一個 stored function 來完成,並在 Oracle Workflow Business Event(oracle.apps.po.event.xmlpo)的訂閱中訂製事件發生時呼叫此 stored function。所以整個轉存的核心是該 stored function 的定義,它首先要能正確解析 Oracle Workflow Business Event,把事件的關鍵資訊摘取出來,其次要能按照 WebSphere Apdater 監聽的事件儲存結構,儲存摘取出來的事件關鍵資訊。兩者缺一不可,這就要求讀者在定義這樣一個 stored function 之前,明確 Oracle Workflow Business Event 的結構以及 WebSphere Apdater 監聽的事件儲存結構。

藉助於 WebSphere Adapters for Oracle E-Business Suite V7.2,通過整合 Oracle Workflow Business Event System,我們完成了訂單業務在 Oracle E-Business Suite 和 IBM WebSphere 產品之間的整合。本文通過示例場景介紹瞭如何在 Oracle E-Business Suite 中建立事件訂閱及訂製事件發生時所觸發的行為,並描述了利用 WebSphere Adapter for Oracle E-Business Suite 在 WID/WPS 環境中進行業務整合的示例開發、配置和測試過程。

本文旨在拋磚引玉,希望讀者能夠對 WebSphere Adapter for Oracle E-Business Suite 有所認識,瞭解如何使用 WebSphere Adapter,方便地整合 Oracle Workflow Business Event System,實現訂單業務整合。關於 Oracle E-Business Suite 系統中其它模組的業務整合,與此類似,不在此贅述。

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

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

相關文章