整合 MDM Server 與企業資訊系統(使用 SAP 作為示例),第 1 部分: 向 SAP 提供客戶記錄
您將學到的知識
IBM InfoSphere Master Data Management Server 是一種儲存庫,它能集中和管理一個組織中至關重要的主資料實體,例如客戶、產品、供應商等。這些實體的集中能打造單一的客戶和產品檢視,從而改善服務、提高客戶滿意度,加強與合作伙伴和供應商的關係。組織的許多(甚至是全部)應用程式(例如 SAP 應用程式)和業務流程均對這些實體進行操作,因此,以可靠而又靈活的方式交付主資料是解決方案架構的一個關鍵特徵。本教程提供了這方面的完整說明,以幫助您理解 IBM InfoSphere Master Data Management Server 如何能夠與 SAP 協力工作,以及如何管理客戶資料。本教程演示的整合方法同時適用於 MDM Server 管理的其他業務物件(產品、供應商等)。
如圖 1 所示,本教材中介紹的場景同時包括兩個方向。在 MDM Server 中託管的客戶資料以及傳送給 SAP 的客戶資料。我們使用了一個 SAP 事務為客戶記錄新增納稅 ID。這些附加資訊需要傳送到 MDM Server,以便更新中央客戶實體。
為了使教程更清晰明瞭,我們將教程劃分為兩部分。第 1 部分介紹建立一個解決方案所需的步驟,該解決方案會通知 SAP 位於 MSM Server 中的客戶資料已發生更改。第 2 部分增加了使用 SAP 中新增的納稅 ID 來更新 MDM Server 管理的客戶實體的步驟。
圖 1. 解決方案概述
客戶資料是使用 IBM Master Data Management Data Stewardship Console 進行建立或更新的,儲存在 MDM 系統中。MDM Server 行為擴充套件為新紀錄建立了一個 SAP 客戶 ID(即 SAP KUNNR),並將客戶資料傳送到某個 JMS 主題。企業服務匯流排 (ESB) 中介流可以讀取 JMS 主題中的客戶資料,執行國家和省份編碼的轉碼,隨後呼叫 WebSphere adapter for SAP,它會將一個 DEBMAS IDoc 傳送給 SAP 系統。
“擴充套件 MDM Server” 一節將介紹如何在 MDM Server 資料庫中啟用通知。用來提供客戶資料的 JMS 主題已在 MDM Server 中定義。但要在 ESB 中接收此資料,Process
Server 中必須包含相應的主題。這一節將介紹如何在 Process Server 中建立此主題,以及如何將其連線到 MDM Server 中定義的 JMS 主題。利用連線的主題,傳送到 MDM Server 主題的訊息即可使用 Process Server 主題進行接收。最後,這一節還將介紹如何使用 MDM Workbench 利用行為擴充套件來擴充套件 MDM Server 模型。利用行為擴充套件,即可在 MDM Server 事務之前或之後執行業務邏輯。這一節將展示如何建立一個在 MDM Server
addParty
“配置 SAP 系統” 一節介紹了配置 SAP 系統的步驟。SAP 系統將接收採用 SAP Intermediate Document (IDoc) 結構的客戶資料。這一節使用的是預先定義的 Debmas IDoc。本節還介紹瞭如何建立必要的 SAP Remote Function Call (RFC) 連線、埠、邏輯系統、合作伙伴配置檔案和 IDoc 分發模型。
“建立 ESB 中介流” 一節將介紹如何實現 MDM Server 傳送的訊息與要傳送至 SAP 系統的 IDoc 之間的中介。中介流是使用 WebSphere Integration Developer 實現的。由於 MDM Server 訊息需要採用 XML 資料型別以便於讀取訊息,因此這一節首先將介紹如何將 MDM Server XML Schema 匯入中介流專案。隨後給出了建立監聽傳入訊息的 JMS 元件的步驟和 SAP 介面卡元件的配置。最後,這一節介紹瞭如何實現 XSLT 轉換,以便將 MDM 訊息對映到 SAP IDoc 結構。由於 MDM Server 和 SAP 使用不同的程式碼來指定國家或省份,因此需要對轉換進行翻譯。在本教程中,我們使用了一個簡單的轉碼錶。不過,也可以採用不同的實現方法,例如,呼叫轉碼 web 服務。下載 部分的 ZIP 檔案提供了建立轉碼錶的資料庫指令碼。
“執行場景” 一節將介紹如何使用 MDM Data Stewardship Console 新建和更新現有 MDM 客戶記錄,以及如何使用 SAP UI 檢查 SAP 系統中的客戶物件。
系統要求
本教程是使用下列產品版本和補丁開發的。您需要安裝以下軟體:
- IBM Master Data Management Workbench V9.0.1。按照 Workbench 使用者指南 (MDMWorkbenchUserGuide.pdf) 中的說明安裝 Rational® Software Architect 中的 Workbench 與開發和測試環境。
- 使用 IBM Rational Software Architect for WebSphere Software V7.5.5.4,包括 IBM WebSphere Application Server V7 Test Environment 7.0.0.13 Update 1。
- 轉到您的 WebSphere Application Server 管理控制檯,解除安裝 MDM Enterprise Application。這是必不可少的步驟,因為我們要在 MDM workbench 中根據本教程的示例場景修改 MDM,並重新部署它。
- WebSphere Application Server 上的 IBM Master Data Management Data Stewardship Console
- MDM Server 示例包中提供了 Data Stewardship Console 原始碼 (MDMDataStewardship_src.zip)。將專案匯入 RSA 工作區。
- 在 CustomerDataStewardship 專案中,開啟 propertiesUI.jar 檔案,編輯 mdmUIConfiguration.properties 檔案。您需要指定 java.naming.provider.url 和 UserGroupImpl 屬性(請參見屬性檔案內提供的示例)。
- 在 MDM Server 應用伺服器上安裝 CustomerDataStewardship 應用程式。
- IBM WebSphere Integration Developer V7.0.0.201
- IBM WebSphere Process Server V7.0.0.2(作為 WebSphere Integration Developer 的整合化測試環境)。確保安裝了以下 Process Server 補丁:
- JR36507 7.0.0.2
- JR36532 7.0.0.2
- IBM WebSphere Process Server V7.0.0.2(作為 WebSphere Integration Developer 的整合化測試環境)。確保安裝了以下 Process Server 補丁:
- IBM DB2® V9.7
- 一個能夠傳送和接收型別為 debmas06 的 SAP IDoc 的 SAP 系統。我們使用的是 SAP ECC V6.0 IDES 系統。
注意:本教程中執行的步驟將修改您的 SAP 系統中儲存的主資料。請勿使用生產系統。
本教程介紹瞭如何使用 MDM Server 開發和測試環境實現示例場景。教程中並未描述如何使用獨立 MDM Server 執行示例場景。
擴充套件 MDM Server
啟用 MDM Server 通知
要使用 MDM Server 通知,必須按照如下說明啟用 MDM 通知機制:
- 開啟 DB2 命令視窗,連線到您的 MDM 資料庫:
db2 connect to mdm
- 在應用程式級別上啟用通知:
db2 update configelement set value='true', last_update_dt=current timestamp where name='/IBM/DWLCommonServices/Notifications/enabled'
- 與 MDM 資料庫斷開連線:
db2 disconnect mdm
建立並連線主題
在您的 ESB 上設定 JMS:
- 開啟 Process Server 的管理控制檯,展開 Resources 分支和 JMS 分支。
- 單擊 Topics。
- 選擇範圍 Node=yournode,Server=server1(其中 yournode 是您的 WebSphere Application Server 節點的名稱)。
- 單擊 New 按鈕新增新主題。
- 確保選中 Default messaging provider,單擊 OK。
圖 2. 預設訊息提供程式
- 此時將顯示主題配置面板:
圖 3. 主題配置面板
輸入MDMTopic
作為 name,輸入com/dwl/base/notification/MDMTopic
作為主題的 JNDI 名稱。 - 將 Topic name 設定為主題名稱 notification/ElementChange,與 MDM Server 的定義一致。
- 將 Bus name 設定為 other, please specify,並輸入
MDM.SIB.server1
作為 Bus name,與 MDM Server 的定義一致。 - 將 Topic space 設定為 other, please specify,並輸入
notification.ElementChange
作為 origin Topic Bus destination 的名稱。 - 單擊 OK 確認更改。
- 儲存配置。
建立並連線啟用規範
在這一節中,您將配置 JMS 的啟用規範:
- 單擊 Activation specifications。
- 選擇範圍 Node=yournode,Server=server1(其中 yournode 是您的 WebSphere Application Server 節點的名稱)。
- 單擊 New 新增一個 Activation Spec。
- 確保選中 Default messaging provider,並單擊 OK。
圖 4. 預設訊息提供程式
- 此時將顯示啟用規範配置窗格: 輸入
MDMTopicAS
作為 Name,輸入jms/MDMTopicAS
作為啟用規範的 JNDI 名稱。 - 為 Destination 型別選擇 Topic。
- 將 Destination JNDI 名稱設定為恰當的 MDM 主題的 JNDI 名稱 (com/dwl/base/notification/ElementChange)。
- 將 Bus 名稱設定為 other, please specify,輸入
MDM.SIB.server1
作為原始 MDM bus name 的名稱。 - 在 Multi-entry Provider endpoints 欄位中,按以下格式輸入 MDM 伺服器目標:
host:port:chainname
(port 是您的 MDM Server 的 SIB_ENDPOINT_ADDRESS 埠)
(例如:mdmhost:7277:BootstrapBasicMessaging
,對於安全主機來說則是mdmhost:7287:BootstrapSecureMessaging
圖 5. 建立 JMS 啟用規範
- 單擊 OK 確認更改。
- 儲存配置。
建立 MDM 行為擴充套件
要獲得資料更新通知,我們需要在 MDM Server 中建立一個行為擴充套件:
- 在 MDM Workbench 中,建立一個 Hub Module 選項,方法是選擇 File > New > other,並向下滾動到 InfoSphere Master Information Hub 資料夾。現在選擇
Hub Module project,並單擊 Next。
圖 6. 建立一個 Hub Module 專案
- 填寫嚮導頁面的欄位:
- 專案名稱:
PartyExtensions
- 基本 Java 包名稱:
com.example.mdmsap
- 服務名稱空間 URI:
http://example.com/mdmsap
- EAR 專案名稱:
MDM
- Hub 基本名稱:
MDM
- 資料庫模式名稱:
db2admin
圖 7. 指定 hub module 專案的設定
單擊 Finish 建立專案。 - 專案名稱:
- 新增所需的行為擴充套件:
- 選擇 Model 選項卡切換到 Hub Module 模型。
- 單擊 PartyExtensions 資料夾,隨後選擇 New,並單擊 Behavior Extension。
圖 8. 新增行為擴充套件
- 在 Name 欄位中輸入
PartyBehaviorExtensions
,確保在 Implementation 欄位中選中 Java。 - 右鍵單擊 PartyBehaviorExtensions 擴充套件,選擇 New > Action Event。
圖 9. 新增一個活動事件
- 在 Name 欄位中輸入
AddPartyEvent
,單擊該事務的 Edit。 - 展開 Party model,再展開 CoreParty 模型。選擇
addParty 事件並單擊 OK。
圖 10. Add party
- 重複 d 至 f 步驟,新增以下活動事件。
名稱 事件 UpdatePartyEvent updateParty AddPartyAddressEvent addPartyAddress UpdatePartyAddressEvent updatePartyAddress AddPersonNameEvent addPersonName UpdatePersonNameEvent updatePersonName - 再一次重複 d 至 f 步驟,新增 AddPartyPreEvent 活動事件。但這一次選中 Pre 複選框。此擴充套件將在事務之前呼叫,將用於建立 SAP 客戶編號。
圖 11. Add party 擴充套件
- 單擊底部的 Validate model。此時將顯示一個訊息框,其中的訊息是 “Model validation complete: no problems found”。若非如此,請糾正錯誤。
- 糾正了所有問題之後,單擊 Generate Implementation。此時將顯示一個訊息框,顯示文字 “Generating Code ...”,擴充套件程式碼生成將啟動。
- 程式碼生成結束後,開啟 PartyExtensions 專案,切換到 ejbModule > com.example.mdmsap.behaviour。
圖 12. EJB 行為擴充套件
將下載包中的 PartyBehaviorExtensions.java 和 PartyNotification.java 這兩個檔案複製到此包中(替換之前的步驟中已生成的 PartyBehaviorExtensions.java 檔案)。 - 確保已啟用 Project > Build automatically 選項。重新整理專案。此時將出現一些 Java 編譯錯誤,稍後我們會糾正這些錯誤。
- 右鍵單擊專案 PartyExtensions 並選擇 Properties,以便更新類路徑。現在,切換到
Java EE Module Dependencies,檢視列表中的 Party.jar 項。選中 Party.jar 旁邊的複選框。
圖 13. Java EE 模組依賴項
單擊 OK。此時會出現 Java 錯誤。 - 使用所生成的行為擴充套件更新資料庫。
圖 14. 執行 SQL 指令碼來更新行為擴充套件
開啟一個 DB2 命令視窗,切換到您的 RSA 工作區內的 PartyExtensions\resources\sql\db2 目錄。現在執行 PartyExtensions_MetaData_DB2.sql SQL 指令碼:db2 connect to mdm
db2 -tvf PartyExtensions_MetaData_DB2.sql
db2 disconnect mdm - 在本例中,擴充套件程式碼將使用一個 DB2 資料庫表生成 SAP 客戶編號。可使用 sapkey.sql SQL 指令碼來建立這個表。開啟一個 DB2 命令視窗,切換到包含已經解壓縮的教程檔案的目錄,並執行以下 db2 命令:
db2 connect to mdm
db2 -tvf sapkey.sql
db2 disconnect mdm
配置 SAP 系統
要使您的 SAP 系統能夠接收 WebSphere Adapter for SAP Software 傳送的 IDoc,則必須配置 SAP 系統的一些設定。本教程僅介紹出站場景(MDM 資料的更改將傳播到 ESB,ESB 利用 WebSphere Adapter for SAP Software 將 IDoc 傳送到您的 SAP 系統)。然而,以下配置步驟也會為入站場景設定 SAP 系統(SAP 端的資料更改將觸發 IDoc 傳送至 ESB,隨後 ESB 會將更改後的資料傳播至 MDM 系統)。入站場景將在本系列的第 2 部分中介紹。請在您的 SAP 系統上執行以下配置步驟:
- 必須在您的 SAP 系統上配置 RFC 連線,以便接收 WebSphere Adapter For SAP 傳送的資料。
- 必須定義一個新的 RFC 埠,以便以事務的方式接收資料。
- 必須定義一個邏輯系統。
- 必須設定一個合作伙伴配置檔案,定義 SAP 系統與外部系統(ESB)之間的通訊。
- SAP IDoc 分發模型將調整為在 SAP 主資料發生更改時將 IDoc 傳送至 ESB。
設定 RFC 連線
- 登入您的 SAP 系統,呼叫 SM59。
- 單擊 New 新建一個連線:
圖 15. 新建連線
- 現在輸入以下值:
- Field RFC Destination:
MDM_SAP_TUTORIAL_DESTINATION
- Connection Type:
T
- Field RFC Destination:
- 切換到 Technical Settings 選項卡:
- 選擇 Registered Server Program 作為啟用型別。
- 輸入
MDM_SAP_TUTORIAL_PROGRAM_ID
作為已註冊伺服器程式的程式 ID。
圖 16. 新建連線
- 單擊磁碟圖示儲存設定。
建立 tRFC 埠
- 輸入 SAP 事務程式碼
WE21
。 - 開啟 Ports 部分,選擇其中的 Transactional RFC 子部分。
- 單擊 Create 圖示建立一個新的 tRFC 埠。
- 選擇選項 own port name,輸入
MDM_PORT
作為埠名稱。單擊綠色對號儲存設定圖 17. 新建 tRFC 埠
- 輸入
MDM_SAP_TUTORIAL_DESTINATION
作為之前的步驟中建立的 RFC 目標的名稱,也可從列表中選擇名稱。單擊磁碟圖示儲存設定。圖 18. 新建 tRFC 埠
建立一個新的邏輯系統
- 導航到 SAP 事務 BD54。
- 從閱讀模式切換到編輯模式,在表中新增以下條目:
- Log. System:
MDMSAP
- Name:
MDM_SAP_LOGICAL_SYSTEM
- Log. System:
- 單擊磁碟圖示儲存設定。
圖 19. 新建 tRFC 埠
建立合作伙伴配置檔案
- 開啟事務 WE20,單擊 Create 按鈕。
- 輸入之前的步驟中建立的邏輯系統的名稱(
MDMSAP
)。 - 將 Partner Type 設定為 LS(表示邏輯系統)。
- 切換到 Post processing: permitted agent 選項卡。
- 輸入以下值:
- Type:
US
(表示使用者) - Agent:
<your username>
- language:
EN
- Type:
- 在繼續後面的操作之前,請單擊磁碟圖示儲存更改。
圖 20. 建立合作伙伴配置檔案
- 單擊 Outbound 引數表下方的 Create outbound parameter 圖示
- 在開啟的彈出對話方塊中,輸入以下內容:
- Message Type:
DEBMAS
- Receiver Port:
MDM_PORT
- Basic Type:
DEBMAS06
- Message Type:
- 確保設定了 Transfer IDoc Immed. 選項。
- 單擊磁碟圖示儲存您的更改。
- 單擊綠色的返回圖示返回上一個螢幕。
圖 21. 配置出站引數
- 在開啟的彈出對話方塊中,輸入以下內容:
- 單擊 Create inbound parameter 圖示,此圖示位於 Inbound parameters 表下方
- 在開啟的彈出對話方塊中,輸入以下內容:
- Partner No.:
MDMSAP
- Partn. Type:
LS
- Message type:
DEBMAS
- Process code:
DEBM
- Partner No.:
- 單擊磁碟圖示儲存您的更改。
- 單擊綠色的返回圖示返回上一個螢幕。
圖 22. 配置入站引數
- 在開啟的彈出對話方塊中,輸入以下內容:
- 此時,您的合作伙伴配置檔案配置應與第 6 步所示的螢幕快照相似。
修改 IDoc 分發模型
- 呼叫 SAP 事務 BD64。
- 切換到編輯模式。
- 開啟 Model views > Subsystems > itself system。(如果存在多個系統,請選擇客戶端 ID 屬於您的系統的系統。對於 IDES 系統,客戶端 ID 通常是 800。)
- 現在,單擊 Add message type 按鈕。
- 在開啟的彈出對話方塊中,輸入以下值:
- Receiver:
MDMSAP
- Message Type:
DEBMAS
- Receiver:
- 在彈出對話方塊關閉後,單擊磁碟圖示儲存您對於 IDoc 分發模型的修改。
圖 23. 修改 IDoc 分發模型
建立 ESB 中介流
將 MDM Server 型別匯入 WebSphere Integration Developer
為了在 ESB 中處理 MDM Server 訊息,MDM Server 資料型別需要匯入 ESB 模組:
- 開啟 MDM Workbench,選擇 File > Export...。
- 在 Export 視窗中,展開 General 資料夾,選擇 File System。
- 展開 CustomerResources 資料夾,選擇 xsd(不要選中複選框)。
- 在右側的檔案列表中,選擇以下檔案:
- DWLCommonRequest.xsd
- DWLCommonRequest_extension.xsd
- myTCRM.xsd
- tcrmRequest_extension.xsd
- 指定要將檔案匯出到哪個目錄,單擊 Finish。
圖 24. 匯出 XSD
- 開啟 WebSphere Integration Developer,確保使用了 Business Integration 透檢視。
- 選擇 File > New > Other...。
- 展開 Business Integration 資料夾,選擇 Library。
- 指定庫名稱 MDMDataTypes,隨後單擊 Finish。
- 選擇 File > Import...。
- 在 Import 視窗中,展開 Business Integration 資料夾,選擇 WSDL and XSD,隨後單擊 Next。
- 選擇 Local WSDL or XSD file,單擊 Next。
- 使用 browse 按鈕,導航到包含 XSD 檔案的目錄(您在第 5 步中指定的目錄)。
- 在右側的檔案列表中,單擊 myTCRM.xsd 旁邊的複選框。
- 在 Target 模組或庫欄位列表中,選中您在第 9 步中建立的庫(例如 MDMDataTypes)。
- 確保選中了 Import dependent resources 選項,確保依賴項樹顯示了 4 個 XSD 檔案。
圖 25. 匯入 XSD
- 單擊 Finish。
- 選擇 Window > Show View > Other...。
- 展開 Business Integration 資料夾並選擇 Physical Resources。
- 在 Physical Resources 檢視中,展開 MDMDataTypes 資料夾。您將看到已匯入 XSD 檔案的列表。在接下來的步驟中,您將為這些檔案新增名稱空間定義。
注意:請使用下面指定的名稱空間;否則將無法正確接收 MDM Server 行為擴充套件生成的訊息。 - 右鍵單擊 DWLCommonRequest_extension.xsd,選擇 Open With > Text Editor。
將 schema 元素從:<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
更改為:<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://example.com/mdmsap" targetNamespace="http://example.com/mdmsap" elementFormDefault="qualified">
使用 Ctrl+S 儲存更改。 - 右鍵單擊 DWLCommonRequest.xsd,選擇 Open With > Text Editor。
將 schema 元素從:<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
更改為:<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://example.com/mdmsap" targetNamespace="http://example.com/mdmsap" elementFormDefault="qualified">
使用 Ctrl+S 儲存更改。 - 右鍵單擊 myTCRM.xsd,選擇 Open With > Text Editor。
將 schema 從:<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:include schemaLocation="DWLCommonRequest.xsd"/>
<xsd:include schemaLocation="tcrmRequest_extension.xsd"/>
更改為:<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://example.com/mdmsap" targetNamespace="http://example.com/mdmsap" elementFormDefault="qualified">
<xsd:include schemaLocation="DWLCommonRequest.xsd"/>
<!-- <xsd:include schemaLocation="tcrmRequest_extension.xsd"/> -->
使用 Ctrl+S 儲存更改。 - 右鍵單擊 tcrmRequest_extension.xsd,選擇 Open With > Text Editor。
將 schema 從:<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
更改為:<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://example.com/mdmsap" targetNamespace="http://example.com/mdmsap" elementFormDefault="qualified">
<xsd:include schemaLocation="myTCRM.xsd"/>
使用 Ctrl+S 儲存更改。 - 確認 Physical Resources 檢視未顯示任何錯誤。
建立偵聽傳入的 MDM Server 訊息的 JMS Export 元件
MDM Server 資料型別在 WebSphere Integration Developer 中可用之後,即可建立能夠接收 MDM Server 訊息的 JMS 元件:
- 開啟 WebSphere Integration Developer。
- 右鍵單擊您在前面的步驟中建立的 MDMDataTypes 庫模組,選擇 New >Interface。
- 在 New Interface 視窗中,確保選中了 MDMDataTypes 庫,並指定一個名稱(例如,
MDMInput
),隨後單擊 Finish。 - 在介面編輯器中,單擊 Add One Way Operation 圖示。
圖 26. 介面編輯器
- 最初,新操作有一個名為 input1、型別為字串的輸入。單擊 string to,並在選擇視窗中選擇 Browse...。
- 在 Data Type Selection 視窗的 filter 欄位內鍵入
TCRMService
,在結果列表中選擇 TCRMService 資料型別。單擊 OK。驗證操作 input 的名稱和型別已經更改為 TCRMService。圖 27. 定義操作
- 使用 Ctrl+S 儲存更改。
- 選擇 File > New > Other...,展開 Business Integration 資料夾,選擇 Module,隨後單擊 Next。
- 指定一個模組名稱(例如 MDM2SAP),然後單擊 Next。
- 選中 MDMDataTypes 庫旁邊的複選框,單擊 Finish。
- 在 Business Integration 檢視中,雙擊 Assembly Diagram。
- 在 Assembly Diagram 編輯中,展開 Components 部分,將一個 Export 拖動到工作區中。
圖 28. 新建一個 export 元件
- 右鍵單擊新建的 Export1 元件,選擇 Rename,指定一個名稱(例如,
MDMRequest
)。 - 右鍵單擊新建的 MDMRequest 元件,選擇 Add Interface。選擇 MDMInput 介面並單擊 OK。
- 右鍵單擊 MDMRequest 元件,選擇 Generate Binding... > Message Binding > JMS Binding。
- 在 Configure JMS Export Service 視窗中,選擇 Publish-Subscribe 作為 JMS messaging domain。
- 選擇 Use pre-configured messaging provider resources。
- 單擊 activation specification 欄位旁的 Select... 按鈕,選擇您的目標伺服器,單擊 Next,從列表中選擇 jms/MDMTopicAS,隨後單擊 Finish。
- 按下 receive destination 欄位旁的 Select... 按鈕,選擇您的目標伺服器,展開 Topics 資料夾,選擇
com/dwl/base/notification/MDMTopic,單擊 Finish。
圖 29. 指定 JMS 配置設定
- 單擊 OK。
- 按 Ctrl+S 儲存 Assembly Diagram。
圖 30. Assembly diagram 與 JMS export
設定 SAP 介面卡
為了能夠向 SAP 系統傳送訊息,必須配置 WebSphere Adapter for SAP Software:
- 由於介面卡使用了 SAP Java Connector (JCo),因此需要將 sapjco3.dll 和 sapjco3.jar 檔案複製到執行 ESB 的系統。兩個檔案均可從 SAP 市場的下載部分 獲得。將兩個檔案複製到 WebSphere Process Server 的 lib 目錄(例如 C:\Program Files\IBM\WID7_WTE\runtimes\bi_v7\lib)。
- 在 MDM2SAP Assembly Diagram 編輯器中,展開 Outbound Adapters 部分,將一個 SAP 元件拖動到工作區中。
- 在 New External Service 視窗中,選擇 IBM WebSphere Adapter for SAP Software with transaction support。
圖 31. 新建 IBM WebSphere Adapter for SAP Software
- 單擊 Next。
- 在下一頁中,保留預設設定即可,單擊 Next。
- 在下一頁中指定 SAP JCo 檔案的位置。
圖 32. 指定 JCO 聯結器檔案的位置
- 單擊 Next。
- 在下一頁中,指定 SAP 系統連線資訊。要使用的 SAP 介面名稱是
ALE
。圖 33. 指定發現屬性
- 單擊 Next。
- 展開 ALE 節點,選擇 Discover IDoc From System。
- 單擊 filter 按鈕,在 pattern 欄位中鍵入
*debmas*
。務必包含萬用字元(*
)。圖 34. 在企業系統中查詢物件
- 單擊 OK。
- 展開 Discover IDoc from System (filtered) 節點。
- 在已發現物件的列表中,選擇 DEBMAS06,將其新增到右側的選中物件列表中。此時將出現一個配置對話方塊。
- 在 DEBMAS06 的配置屬性中,選中前四個複選框,指定 IDoc release version 700。
圖 35. IDoc DEBMAS06 的配置屬性
- 單擊 OK,再單擊 Next。
- 為所生成的業務物件指定一個資料夾。在 Folder 欄位中輸入
debmas
,單擊 Next。 - 在 Deployment Properties 中,選擇 Using security properties from the managed connection factory,隨後單擊 Next。
- 單擊 Finish。
- 按 Ctrl+S 儲存 MDM2SAP Assembly Diagram。
圖 36. Assembly diagram
建立中介模組
現在,您必須建立傳入的 MDM 訊息與 SAP 訊息之間的中介。由於 MDM Server 和 SAP 為國家或省份使用不同的程式碼,因此中介必須對恰當的值進行轉碼。
建立 MDMSAP 轉碼資料庫
- 開啟一個 DB2 命令視窗,切換到包含已經解壓縮的教程示例檔案的目錄。
- 建立轉碼資料庫:
db2 create database MDMSAP
- 連線資料庫:
db2 connect to MDMSAP
- 輸入此命令建立國家程式碼表:
db2 -tvf countryCodes.sql
- 輸入此命令建立省份程式碼表:
db2 -tvf provinceCodes.sql
- 斷開資料庫連線:
db2 disconnect MDMSAP
建立 MDMSAP 資料來源
- 在 WebSphere Integration Developer 中,開啟 Servers 檢視,右鍵單擊 WebSphere Process Server v7.0,選擇
Start。等待狀態將更改為
Started
。 - 右鍵單擊 WebSphere Process Server v7.0,選擇 Administration > Run administrative console。
- 在左側的 Admin Console 中,展開 Security 並單擊 Global security。
- 在右側的 Authentication 部分中,展開 Java Authentication and Authorization Service 並單擊 J2C authentication data。
- 單擊 New 按鈕。
- 指定一個別名(例如,
MDMSAP_DB_Auth_Alias
)和使用者用於連線到 MDMSAP 資料庫的使用者 ID 和密碼。單擊 OK。在頁面頂端的訊息中,單擊 Save 儲存您的更改。圖 37. J2C 身份驗證資料
- 在左側的 Admin Console 中,展開 Resources > JDBC。
- 單擊 Data sources。
- 在 Data sources 頁面中,選擇 server1 範圍並單擊 New。
- 在 Basic data source information 頁面中,輸入資料來源名稱(
MDMSAP
)和 JNDI 名稱(jdbc/MDMSAP
),隨後單擊 Next。 - 在 JDBC provider 頁面中,選擇 Create new JDBC provider,隨後單擊 Next。
- 在 new JDBC provider 頁面中,選擇 Database type: DB2;Provider type:
DB2 Universal JDBC Driver Provider;Implementation type:
XA data source。
圖 38. 新建 JDBC 提供程式
- 單擊 Next。
- 在資料庫類路徑資訊視窗中,指定您的包含 db2jcc.jar 檔案的 DB2 安裝目錄。將 Native library path 欄位留空,然後單擊 Next。
- 在 database-specific properties 頁面中,選擇 Driver type: 4;Database name: MDMSAP 和 (DB2) Server 名稱。單擊 Next。
- 在 Component-managed authentication alias 下拉列表中,選擇 MDMSAP_DB_Auth_Alias,然後單擊 Next。
- 單擊 Finish。在頁面頂端的訊息中單擊 Save。
圖 39. MDMSAP 資料來源
- 選中 MDMSAP 旁的複選框,單擊 Test connection 按鈕。在頁面頂端的訊息中,確認 MDMSAP 的連線測試是否已經成功。
- 重新啟動應用伺服器。
建立中介流元件
- 在 MDM2SAP Assembly Diagram 編輯器中,展開 Components 部分,將一個 Mediation Flow 元件拖動到工作區。
- 右鍵單擊新的 Mediation Flow 元件,選擇 Rename,並指定一個名稱(例如,
MDM2SAPMediation
)。 - 在選項板中,單擊 Wire 圖示。
圖 40. 新的中介工作流
- 單擊 MDMRequest 元件和 MDM2SAPMediation 元件。
- 在 Add Wire 對話方塊中,單擊 OK。
- 單擊 MDM2SAPMediation 元件和 SAPImport 元件。
- 在 Add Wire 對話方塊中,單擊 OK。
- 右鍵單擊工作區,選擇 Automatic Layout。
- 在選項板中,單擊 Selection Tool。
圖 41. 連線元件
- 按 Ctrl+S 儲存更改。
實現中介元件
- 在 WebSphere Integration Developer 中,右鍵單擊 MDMDataTypes 庫專案,選擇 New > Business Object。
- 指定名稱(例如,
TranscodingBO
)。單擊 Finish。 - 在 TranscodingBO 編輯器中,使用 Add a Field to a business object 圖示建立字串型別的四個欄位:
- MDMCountryCode
- MDMProvinceCode
- SAPCountryCode
- SAPProvinceCode
- 新增一個型別為 TCRMPersonBObjType 的 TCRMPersonBObj 欄位(要指定型別,請單擊字串,選擇 Browse...,輸入
TCRMPerson
,並從 Matching data types 列表中選擇 TCRMPersonBObjType。圖 42. 新增欄位
- 按 Ctrl+S 儲存更改。
- 在 MDM2SAP Assembly Diagram 中,雙擊 MDM2SAPMediation 元件並在開啟的對話方塊中選擇 Yes。
- 在 Generate Implementation 視窗中,單擊 OK。
- 在 MDM2SAPMediation 編輯器視窗中,選擇 MDMInput 介面的 operation1。
- 選擇 Blank Mediation Flow。
圖 43. Blank Mediation Flow
- 在右側的 MDMSAPMediation 編輯器中,單擊 Transient Context 旁的加號(+)。
- 在 Filter 欄位中,輸入
TranscodingBO
,從 Matching data types 列表中選擇 TranscodingBO,並單擊 OK。圖 44. Transient Context
- 在左側的 MDMSAPMediation 編輯器中,展開 Service Invocation 部分,將一個 Callout 拖動到工作區。
- 選擇 SAPImportPartner 引用,隨後單擊 OK。
- 在 Routing 部分中,將一個 Message Filter 拖動到工作區。右鍵單擊 Message Filter,選擇 Rename,並指定名稱 validate message。
- 在 Transformation 部分中,將以下內容拖動到工作區:
- XSLT Transformation(名稱:prepare context)
- Database Lookup(名稱:transcode province codes)
- Database Lookup(名稱:transcode country codes)
- XSLT Transformation(名稱:create SAP message)
- 按照如下方法連線已建立的工件:
- 將
Input
與 validate message 連線 - 將驗證訊息的
match1
輸出與 prepare context 連線 - 將準備訊息的
out
輸出與 transcode province codes 連線 - 將轉碼省份編碼的
out
輸出與 transcode country codes 連線 - 將轉碼國家編碼的
out
輸出與 create SAP message 連線 - 將 create SAP message 與 Callout 連線
- 將
- 右鍵單擊工作區,選擇 Automatic Layout。
圖 45. Automatic Layout
- 單擊 validate message。
- 在 Properties 檢視中,選擇 Details 選項卡,隨後單擊右側的 Add... 按鈕。
- 在 Add/Edit 視窗中,輸入以下模式。在本例中,我們僅確認已經設定了 City 元素。
boolean(/body/operation1/TCRMService/TCRMTx/TCRMObject/TCRMPersonBObj/TCRMPartyAddressBObj/TCRMAddressBObj/City)
- 選擇 match1 作為終端名稱。
圖 46. Add/Edit 屬性
- 單擊 Finish。
- 雙擊 prepare context。
- 在 New XML Map 視窗中,單擊 Next。
- 在 Message Root 下拉框中,選擇 '/'。
- 確認 Input Message Body 已設定為 operation1RequestMsg。
- 要指定 Output Message Body,請單擊欄位旁的 Browse 按鈕,先選擇 Specific message type,再選擇
MDMInput/operation1/operation1RequestMsg,然後單擊 OK。
圖 47. 新建 XML 對映
- 單擊 Finish,對映編輯器將開啟。
- 在對映編輯器中,建立左側結構元素與右側結構元素之間的以下連線:
左側元素 右側元素 轉換函式 body body Move body/operation1/TCRMService/TCRMTx/TCRMObject/TCRMPersonBObj/ context/transient/TCRMPersonBObj Move body/operation1/TCRMService/TCRMTx/TCRMObject/TCRMPersonBObj/ TCRMPartyAddressBObj/TCRMAddressBObj/CountryType context/transient/MDMCountryCode Move body/operation1/TCRMService/TCRMTx/TCRMObject/TCRMPersonBObj/ TCRMPartyAddressBObj/TCRMAddressBObj/ProvinceStateType context/transient/MDMProvinceCode Move 圖 48. 上下文對映
- 按 Ctrl+S 儲存更改。
- 在 MDMSAPMediation 編輯器中,單擊 transcode province codes。
- 單擊 Terminal 選項卡。
- 展開 Input terminal,單擊 in。然後單擊 Message type 欄位旁的 Change 按鈕,選擇 MDMInput/operation1/operation1RequestMsg。
- 在 Details 選項卡內單擊。
- 輸入以下值:
- 在 Data source 欄位中輸入
jdbc/MDMSAP
。 - 在 Table 欄位中輸入
MDMSAP.PROVINCE_CODES
。 - 在 Search column 欄位中輸入
MDM_PROVINCE
。 - 在 Search location 欄位中輸入
/context/transient/MDMProvinceCode
。 - 在目標位置表中,輸入
SAP_PROVINCE
作為 Column,在 Type 欄位中輸入string
,並在 Target location 中輸入/context/transient/SAPProvinceCode
。
圖 49. 在資料庫中查詢省份編碼
- 在 Data source 欄位中輸入
- 按 Ctrl+S 儲存您的更改。
- 在 MDMSAPMediation 編輯器中,單擊 transcode country codes。
- 輸入以下值:
- 在 Data source 欄位中輸入
jdbc/MDMSAP
。 - 在 Table 欄位中輸入
MDMSAP.COUNTRY_CODES
。 - 在 Search column 欄位中輸入
MDM_COUNTRY
. - 在 Search location 欄位中輸入
/context/transient/MDMCountryCode
。 - 在目標位置表中輸入
SAP_COUNTRY
作為 Column,在 Type 欄位中輸入string
,並在 Target location 中輸入/context/transient/SAPCountryCode
。
圖 50. 在資料庫中查詢國家編碼
- 在 Data source 欄位中輸入
- 按 Ctrl+S 儲存您的更改。
- 在 MDMSAPMediation 編輯器中,雙擊 create SAP message。
- 在 New XML Map 視窗中,按 Next。
- 在 Message Root 下拉框中,選擇 '/'。
- 要指定 Input Message Body,單擊欄位旁的 Browse 按鈕,選擇 Specific message type,選擇 MDMInput/operation1/operation1RequestMsg,再單擊 OK。
- 驗證 Output Message Body 已設定為 executeSapDebmas06RequestMsg。
圖 51. 指定訊息型別
- 單擊 Finish,此時將開啟對映編輯器。
- 在對映編輯器中,在左側結構的欄位與右側結構的欄位之間建立以下連線:
# 左側欄位 右側欄位 轉換函式 以下的所有欄位均與
body/executeSapDebmas06/executeSapDebmas06Input/SapDebmas06IDocBO/ SapDebmas06DataRecord/SapDebmas06E2kna1m005 相關1 context/transient/SAPProvinceCode REGIO Move 2 context/transient/SAPCountryCode LAND1 Move 3 body/operation1/TCRMService/TCRMTx/TCRMObject/TCRMPersonBObj/ TCRMPartyAddressBObj/TCRMAddressBObj/AddressLineOne STRAS Move 4 body/operation1/TCRMService/TCRMTx/TCRMObject/TCRMPersonBObj/ TCRMPartyAddressBObj/TCRMAddressBObj/City ORT01 Move 5 body/operation1/TCRMService/TCRMTx/TCRMObject/TCRMPersonBObj/ TCRMPartyAddressBObj/TCRMAddressBObj/ZipPostalCode PSTLZ Move 6 body/operation1/TCRMService/TCRMTx/TCRMObject/TCRMPersonBObj/ TCRMPartyIdentificationBObj/IdentificationNumber STCD1 Move 7 兩項輸入:
body/operation1/TCRMService/ TCRMTx/TCRMObject/TCRMPersonBObj/TCRMAdminContEquivBObj/
AdminPartyId 和
body/operation1/TCRMService/TCRMTx/TCRMObject/TCRMPersonBObj/ TCRMAdminContEquivBObj/AdminSystemTypeKUNNR If (下文提供了有關這種 If 轉換的配置說明) 8 兩項輸入:
body/operation1/TCRMService/TCRMTx/ TCRMObject/TCRMPersonBObj/TCRMPersonNameBObj/GivenNameOne
和
body/operation1/TCRMService/TCRMTx/TCRMObject/TCRMPersonBObj/ TCRMPersonNameBObj/LastNameNAME1 Concat (下文中提供了有關這種 Concat 轉換的配置說明) 9 body/operation1/TCRMService/TCRMTx/TCRMObject/TCRMPersonBObj/ TCRMPersonNameBObj/LastName SORTL Move - 上表第 7 行 If 轉換的配置說明:
利用表示轉換函式的框,將 AdminPartyId 與 KUNNR 和 AdminSystemType 連線。隨後將轉換的型別切換為 If。單擊 If 轉換,指定條件:$AdminSystemType = '1'
。 最後,雙擊 If 轉換,並將 AdminPartyId 與 KUNNR 連線。現在,僅在系統型別的值為 “1” 時才能將 party ID 賦予客戶編號。其他系統將被忽略。 - 上表第 8 行 Concat 轉換的配置說明:
利用表示轉換函式的框,將 GivenNameOne 與 NAME1 和 LastName 連線。此時即建立了一個 Concat 轉換。單擊 Concat 轉換。在 General 選項卡中選擇 Space character 作為預設分隔符。確認 Example 字串如下所示:<GivenNameOne> <LastName>
(包括空格字元)。
- 上表第 7 行 If 轉換的配置說明:
- SAP 訊息的某些欄位需要設定預設值。可以使用 Assign 函式賦予預設值。要建立 Assign,請右鍵單擊恰當的欄位並選擇
Create Assign。在 Assign 的 Properties 中,可在
General 選項卡中指定該值。建立下表中列出的賦值。
# 欄位賦值 將賦予的值 SAP 轉換 下面的所有欄位均與
body/executeSapDebmas06/executeSapDebmas06Input/ SapDebmas06IDocBO/SapIDocControlRecord/ 相關1 RCVPOR MDM_PORT we21 2 SNDPRT LS 3 IDOCTYP DEBMAS06 4 SNDPRN MDMSAP we20 5 TABNAM EDI_DC 6 MANDT 800 7 MESTYP DEBMAS 8 RCVPRN T90CLNT090 bd64,檢查定義 MDMSAP 邏輯系統的子系統 9 SNDPOR TRFC 10 RCVPRT LS # 欄位賦值 將賦予的欄位 下面的所有欄位均與
body/executeSapDebmas06/executeSapDebmas06Input/SapDebmas06IDocBO/ SapDebmas06DataRecord/SapDebmas06E2kna1m005/ 相關1 MSGFN 005 2 KTOKD 0001 3 SPRAS E 4 LZONE 0000000003 - 按 Ctrl+S 儲存您的更改。
- 在 MDMSAPMediation 編輯器中,某些元件仍存在尚未連線的終端。在選項板的 Error Handling 部分中將各 fail 終端連線到一個 Fail 元件。在選項板的 Error Handling 部分中將其餘所有未使用的終端連線到一個 Stop 元件。
- 右鍵單擊工作區,選擇 Automatic Layout(為了適應螢幕,下圖所示佈局經過修改)。
圖 52. 最終的請求流
- 在 MDMSAPMediation 編輯器中,單擊 Response 選項卡