1. 程式人生 > >整合 MDM Server 與企業資訊系統(使用 SAP 作為示例),第 1 部分: 向 SAP 提供客戶記錄

整合 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. 解決方案概述
展示從 MDM Server 通過 ESB 傳遞到 SAP 再反向傳遞的資料流的示意圖

客戶資料是使用 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 客戶編號。此外,這一節還定義了其他擴充套件,可在執行使用者姓名和地址的新增和更新事務之後執行它們。這些擴充套件共享相同的實現,此實現將 MDM Server 客戶業務物件的一個 XML 表示傳送給 MDM Server JMS 主題。下載 部分的 ZIP 檔案提供了行為擴充套件的原始碼。該檔案還包括建立客戶編號的資料庫表的資料庫指令碼。

配置 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 系統中的客戶物件。

系統要求

本教程是使用下列產品版本和補丁開發的。您需要安裝以下軟體:

  1. 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,並重新部署它。
  2. 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 應用程式。
  3. 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
  4. IBM DB2® V9.7
  5. 一個能夠傳送和接收型別為 debmas06 的 SAP IDoc 的 SAP 系統。我們使用的是 SAP ECC V6.0 IDES 系統。
    注意:本教程中執行的步驟將修改您的 SAP 系統中儲存的主資料。請勿使用生產系統。

本教程介紹瞭如何使用 MDM Server 開發和測試環境實現示例場景。教程中並未描述如何使用獨立 MDM Server 執行示例場景。

擴充套件 MDM Server

啟用 MDM Server 通知

要使用 MDM Server 通知,必須按照如下說明啟用 MDM 通知機制:

  1. 開啟 DB2 命令視窗,連線到您的 MDM 資料庫:
    db2 connect to mdm
  2. 在應用程式級別上啟用通知:
    db2 update configelement set value='true', last_update_dt=current timestamp where name='/IBM/DWLCommonServices/Notifications/enabled'
  3. 與 MDM 資料庫斷開連線:
    db2 disconnect mdm

建立並連線主題

在您的 ESB 上設定 JMS:

  1. 開啟 Process Server 的管理控制檯,展開 Resources 分支和 JMS 分支。
  2. 單擊 Topics
  3. 選擇範圍 Node=yournode,Server=server1(其中 yournode 是您的 WebSphere Application Server 節點的名稱)。
  4. 單擊 New 按鈕新增新主題。
  5. 確保選中 Default messaging provider,單擊 OK
    圖 2. 預設訊息提供程式
    展示選中了 Default messaging provider 按鈕的圖片
  6. 此時將顯示主題配置面板:
    圖 3. 主題配置面板
    展示建立 JMS 主題的圖片
    輸入 MDMTopic 作為 name,輸入 com/dwl/base/notification/MDMTopic 作為主題的 JNDI 名稱。
  7. Topic name 設定為主題名稱 notification/ElementChange,與 MDM Server 的定義一致。
  8. Bus name 設定為 other, please specify,並輸入 MDM.SIB.server1 作為 Bus name,與 MDM Server 的定義一致。
  9. Topic space 設定為 other, please specify,並輸入 notification.ElementChange 作為 origin Topic Bus destination 的名稱。
  10. 單擊 OK 確認更改。
  11. 儲存配置。

建立並連線啟用規範

在這一節中,您將配置 JMS 的啟用規範:

  1. 單擊 Activation specifications
  2. 選擇範圍 Node=yournode,Server=server1(其中 yournode 是您的 WebSphere Application Server 節點的名稱)。
  3. 單擊 New 新增一個 Activation Spec
  4. 確保選中 Default messaging provider,並單擊 OK
    圖 4. 預設訊息提供程式
    展示選中了 default messaging provider 按鈕的圖片
  5. 此時將顯示啟用規範配置窗格: 輸入 MDMTopicAS 作為 Name,輸入 jms/MDMTopicAS 作為啟用規範的 JNDI 名稱
  6. 為 Destination 型別選擇 Topic
  7. 將 Destination JNDI 名稱設定為恰當的 MDM 主題的 JNDI 名稱 (com/dwl/base/notification/ElementChange)。
  8. 將 Bus 名稱設定為 other, please specify,輸入 MDM.SIB.server1 作為原始 MDM bus name 的名稱。
  9. 在 Multi-entry Provider endpoints 欄位中,按以下格式輸入 MDM 伺服器目標:
    host:port:chainname(port 是您的 MDM Server 的 SIB_ENDPOINT_ADDRESS 埠)
    (例如:mdmhost:7277:BootstrapBasicMessaging
    ,對於安全主機來說則是
    mdmhost:7287:BootstrapSecureMessaging
    圖 5. 建立 JMS 啟用規範
    顯示具有輸入欄位的 Activation Spec 窗格的圖片
  10. 單擊 OK 確認更改。
  11. 儲存配置。

建立 MDM 行為擴充套件

要獲得資料更新通知,我們需要在 MDM Server 中建立一個行為擴充套件:

  1. 在 MDM Workbench 中,建立一個 Hub Module 選項,方法是選擇 File > New > other,並向下滾動到 InfoSphere Master Information Hub 資料夾。現在選擇 Hub Module project,並單擊 Next
    圖 6. 建立一個 Hub Module 專案
    展示從資源瀏覽器檢視中選擇嚮導的螢幕快照
  2. 填寫嚮導頁面的欄位:
    • 專案名稱:PartyExtensions
    • 基本 Java 包名稱: com.example.mdmsap
    • 服務名稱空間 URI: http://example.com/mdmsap
    • EAR 專案名稱:MDM
    • Hub 基本名稱:MDM
    • 資料庫模式名稱:db2admin
    注意:模式名稱必須與您在 DEST 安裝過程中輸入的 DB 使用者名稱的模式相同。
    圖 7. 指定 hub module 專案的設定
    展示 Hub Module 專案定義的螢幕快照
    單擊 Finish 建立專案。
  3. 新增所需的行為擴充套件:
    1. 選擇 Model 選項卡切換到 Hub Module 模型。
    2. 單擊 PartyExtensions 資料夾,隨後選擇 New,並單擊 Behavior Extension
      圖 8. 新增行為擴充套件
      顯示選擇行為擴充套件的螢幕快照
    3. 在 Name 欄位中輸入 PartyBehaviorExtensions,確保在 Implementation 欄位中選中 Java
    4. 右鍵單擊 PartyBehaviorExtensions 擴充套件,選擇 New > Action Event
      圖 9. 新增一個活動事件
      展示新增一個活動事件的螢幕快照
    5. 在 Name 欄位中輸入 AddPartyEvent,單擊該事務的 Edit
    6. 展開 Party model,再展開 CoreParty 模型。選擇 addParty 事件並單擊 OK
      圖 10. Add party
      顯示在資源管理器檢視中選擇 addParty 的螢幕快照
    7. 重複 d 至 f 步驟,新增以下活動事件。
      名稱 事件
      UpdatePartyEvent updateParty
      AddPartyAddressEvent addPartyAddress
      UpdatePartyAddressEvent updatePartyAddress
      AddPersonNameEvent addPersonName
      UpdatePersonNameEvent updatePersonName
    8. 再一次重複 d 至 f 步驟,新增 AddPartyPreEvent 活動事件。但這一次選中 Pre 複選框。此擴充套件將在事務之前呼叫,將用於建立 SAP 客戶編號。
      圖 11. Add party 擴充套件
      展示選擇 AddPartyPreEvent 的螢幕快照
  4. 單擊底部的 Validate model。此時將顯示一個訊息框,其中的訊息是 “Model validation complete: no problems found”。若非如此,請糾正錯誤。
  5. 糾正了所有問題之後,單擊 Generate Implementation。此時將顯示一個訊息框,顯示文字 “Generating Code ...”,擴充套件程式碼生成將啟動。
  6. 程式碼生成結束後,開啟 PartyExtensions 專案,切換到 ejbModule > com.example.mdmsap.behaviour
    圖 12. EJB 行為擴充套件
    展示從資源管理器檢視中選擇 com.example.mdmsap.behavior 的圖片
    將下載包中的 PartyBehaviorExtensions.java 和 PartyNotification.java 這兩個檔案複製到此包中(替換之前的步驟中已生成的 PartyBehaviorExtensions.java 檔案)。
  7. 確保已啟用 Project > Build automatically 選項。重新整理專案。此時將出現一些 Java 編譯錯誤,稍後我們會糾正這些錯誤。
  8. 右鍵單擊專案 PartyExtensions 並選擇 Properties,以便更新類路徑。現在,切換到 Java EE Module Dependencies,檢視列表中的 Party.jar 項。選中 Party.jar 旁邊的複選框。
    圖 13. Java EE 模組依賴項
    展示為 Party.jar 新增類路徑依賴項的螢幕快照
    單擊 OK。此時會出現 Java 錯誤。
  9. 使用所生成的行為擴充套件更新資料庫。
    圖 14. 執行 SQL 指令碼來更新行為擴充套件
    展示 PartyExtensions 的資源管理器檢視的圖片
    開啟一個 DB2 命令視窗,切換到您的 RSA 工作區內的 PartyExtensions\resources\sql\db2 目錄。現在執行 PartyExtensions_MetaData_DB2.sql SQL 指令碼:
    db2 connect to mdm

    db2 -tvf PartyExtensions_MetaData_DB2.sql

    db2 disconnect mdm
  10. 在本例中,擴充套件程式碼將使用一個 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 系統上執行以下配置步驟:

  1. 必須在您的 SAP 系統上配置 RFC 連線,以便接收 WebSphere Adapter For SAP 傳送的資料。
  2. 必須定義一個新的 RFC 埠,以便以事務的方式接收資料。
  3. 必須定義一個邏輯系統。
  4. 必須設定一個合作伙伴配置檔案,定義 SAP 系統與外部系統(ESB)之間的通訊。
  5. SAP IDoc 分發模型將調整為在 SAP 主資料發生更改時將 IDoc 傳送至 ESB。

設定 RFC 連線

  1. 登入您的 SAP 系統,呼叫 SM59
  2. 單擊 New 新建一個連線:
    圖 15. 新建連線
    展示 RFC 連線配置的螢幕快照
  3. 現在輸入以下值:
    1. Field RFC Destination: MDM_SAP_TUTORIAL_DESTINATION
    2. Connection Type:T
  4. 切換到 Technical Settings 選項卡:
    1. 選擇 Registered Server Program 作為啟用型別。
    2. 輸入 MDM_SAP_TUTORIAL_PROGRAM_ID 作為已註冊伺服器程式的程式 ID。
    圖 16. 新建連線
    展示新建連線的螢幕快照
  5. 單擊磁碟圖示儲存設定。

建立 tRFC 埠

  1. 輸入 SAP 事務程式碼 WE21
  2. 開啟 Ports 部分,選擇其中的 Transactional RFC 子部分。
  3. 單擊 Create 圖示建立一個新的 tRFC 埠。
  4. 選擇選項 own port name,輸入 MDM_PORT 作為埠名稱。單擊綠色對號儲存設定
    圖 17. 新建 tRFC 埠
    展示 IDoc 處理中的埠的螢幕快照
  5. 輸入 MDM_SAP_TUTORIAL_DESTINATION 作為之前的步驟中建立的 RFC 目標的名稱,也可從列表中選擇名稱。單擊磁碟圖示儲存設定。
    圖 18. 新建 tRFC 埠
    展示建立 tRFC 埠的螢幕快照

建立一個新的邏輯系統

  1. 導航到 SAP 事務 BD54。
  2. 從閱讀模式切換到編輯模式,在表中新增以下條目:
    • Log. System: MDMSAP
    • Name: MDM_SAP_LOGICAL_SYSTEM
  3. 單擊磁碟圖示儲存設定。
    圖 19. 新建 tRFC 埠
    展示已新增條目概覽的螢幕快照

建立合作伙伴配置檔案

  1. 開啟事務 WE20,單擊 Create 按鈕。
  2. 輸入之前的步驟中建立的邏輯系統的名稱(MDMSAP)。
  3. 將 Partner Type 設定為 LS(表示邏輯系統)。
  4. 切換到 Post processing: permitted agent 選項卡。
  5. 輸入以下值:
    • Type:US(表示使用者)
    • Agent:<your username>
    • language:EN
  6. 在繼續後面的操作之前,請單擊磁碟圖示儲存更改。
    圖 20. 建立合作伙伴配置檔案
    展示合作伙伴配置檔案的螢幕快照
  7. 單擊 Outbound 引數表下方的 Create outbound parameter 圖示
    1. 在開啟的彈出對話方塊中,輸入以下內容:
      • Message Type:DEBMAS
      • Receiver Port:MDM_PORT
      • Basic Type:DEBMAS06
    2. 確保設定了 Transfer IDoc Immed. 選項。
    3. 單擊磁碟圖示儲存您的更改。
    4. 單擊綠色的返回圖示返回上一個螢幕。
      圖 21. 配置出站引數
      展示合作伙伴配置檔案的螢幕快照,其中顯示了 SAP 使用者名稱的位置
  8. 單擊 Create inbound parameter 圖示,此圖示位於 Inbound parameters 表下方
    1. 在開啟的彈出對話方塊中,輸入以下內容:
      • Partner No.:MDMSAP
      • Partn. Type:LS
      • Message type:DEBMAS
      • Process code:DEBM
    2. 單擊磁碟圖示儲存您的更改。
    3. 單擊綠色的返回圖示返回上一個螢幕。
      圖 22. 配置入站引數
      展示合作伙伴配置檔案入站引數的螢幕快照
  9. 此時,您的合作伙伴配置檔案配置應與第 6 步所示的螢幕快照相似。

修改 IDoc 分發模型

  1. 呼叫 SAP 事務 BD64。
  2. 切換到編輯模式。
  3. 開啟 Model views > Subsystems > itself system。(如果存在多個系統,請選擇客戶端 ID 屬於您的系統的系統。對於 IDES 系統,客戶端 ID 通常是 800。)
  4. 現在,單擊 Add message type 按鈕。
  5. 在開啟的彈出對話方塊中,輸入以下值:
    • Receiver:MDMSAP
    • Message Type:DEBMAS
    單擊綠色對號關閉對話方塊。
  6. 在彈出對話方塊關閉後,單擊磁碟圖示儲存您對於 IDoc 分發模型的修改。
    圖 23. 修改 IDoc 分發模型
    展示更改分發模型的螢幕快照

建立 ESB 中介流

將 MDM Server 型別匯入 WebSphere Integration Developer

為了在 ESB 中處理 MDM Server 訊息,MDM Server 資料型別需要匯入 ESB 模組:

  1. 開啟 MDM Workbench,選擇 File > Export...
  2. 在 Export 視窗中,展開 General 資料夾,選擇 File System
  3. 展開 CustomerResources 資料夾,選擇 xsd(不要選中複選框)。
  4. 在右側的檔案列表中,選擇以下檔案:
    • DWLCommonRequest.xsd
    • DWLCommonRequest_extension.xsd
    • myTCRM.xsd
    • tcrmRequest_extension.xsd
  5. 指定要將檔案匯出到哪個目錄,單擊 Finish
    圖 24. 匯出 XSD
    展示將資源匯出到本地檔案系統的螢幕快照
  6. 開啟 WebSphere Integration Developer,確保使用了 Business Integration 透檢視。
  7. 選擇 File > New > Other...
  8. 展開 Business Integration 資料夾,選擇 Library
  9. 指定庫名稱 MDMDataTypes,隨後單擊 Finish
  10. 選擇 File > Import...
  11. Import 視窗中,展開 Business Integration 資料夾,選擇 WSDL and XSD,隨後單擊 Next
  12. 選擇 Local WSDL or XSD file,單擊 Next
  13. 使用 browse 按鈕,導航到包含 XSD 檔案的目錄(您在第 5 步中指定的目錄)。
  14. 在右側的檔案列表中,單擊 myTCRM.xsd 旁邊的複選框。
  15. 在 Target 模組或庫欄位列表中,選中您在第 9 步中建立的庫(例如 MDMDataTypes)。
  16. 確保選中了 Import dependent resources 選項,確保依賴項樹顯示了 4 個 XSD 檔案。
    圖 25. 匯入 XSD
    展示匯入本地 WSDL 和/或 XSD 的螢幕快照
  17. 單擊 Finish
  18. 選擇 Window > Show View > Other...
  19. 展開 Business Integration 資料夾並選擇 Physical Resources
  20. 在 Physical Resources 檢視中,展開 MDMDataTypes 資料夾。您將看到已匯入 XSD 檔案的列表。在接下來的步驟中,您將為這些檔案新增名稱空間定義。
    注意:請使用下面指定的名稱空間;否則將無法正確接收 MDM Server 行為擴充套件生成的訊息。
  21. 右鍵單擊 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 儲存更改。
  22. 右鍵單擊 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 儲存更改。
  23. 右鍵單擊 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 儲存更改。
  24. 右鍵單擊 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 儲存更改。
  25. 確認 Physical Resources 檢視未顯示任何錯誤。

建立偵聽傳入的 MDM Server 訊息的 JMS Export 元件

MDM Server 資料型別在 WebSphere Integration Developer 中可用之後,即可建立能夠接收 MDM Server 訊息的 JMS 元件:

  1. 開啟 WebSphere Integration Developer。
  2. 右鍵單擊您在前面的步驟中建立的 MDMDataTypes 庫模組,選擇 New >Interface
  3. 在 New Interface 視窗中,確保選中了 MDMDataTypes 庫,並指定一個名稱(例如,MDMInput),隨後單擊 Finish
  4. 在介面編輯器中,單擊 Add One Way Operation 圖示。
    圖 26. 介面編輯器
    展示定義 MDMInput 的介面編輯器的螢幕快照
  5. 最初,新操作有一個名為 input1、型別為字串的輸入。單擊 string to,並在選擇視窗中選擇 Browse...
  6. 在 Data Type Selection 視窗的 filter 欄位內鍵入 TCRMService,在結果列表中選擇 TCRMService 資料型別。單擊 OK。驗證操作 input 的名稱和型別已經更改為 TCRMService。
    圖 27. 定義操作
    展示 MDMInput 定義操作的螢幕快照
  7. 使用 Ctrl+S 儲存更改。
  8. 選擇 File > New > Other...,展開 Business Integration 資料夾,選擇 Module,隨後單擊 Next
  9. 指定一個模組名稱(例如 MDM2SAP),然後單擊 Next
  10. 選中 MDMDataTypes 庫旁邊的複選框,單擊 Finish
  11. 在 Business Integration 檢視中,雙擊 Assembly Diagram
  12. 在 Assembly Diagram 編輯中,展開 Components 部分,將一個 Export 拖動到工作區中。
    圖 28. 新建一個 export 元件
    展示 MDM2SAP assembly diagram 的螢幕快照
  13. 右鍵單擊新建的 Export1 元件,選擇 Rename,指定一個名稱(例如,MDMRequest)。
  14. 右鍵單擊新建的 MDMRequest 元件,選擇 Add Interface。選擇 MDMInput 介面並單擊 OK
  15. 右鍵單擊 MDMRequest 元件,選擇 Generate Binding... > Message Binding > JMS Binding
  16. 在 Configure JMS Export Service 視窗中,選擇 Publish-Subscribe 作為 JMS messaging domain
  17. 選擇 Use pre-configured messaging provider resources
  18. 單擊 activation specification 欄位旁的 Select... 按鈕,選擇您的目標伺服器,單擊 Next,從列表中選擇 jms/MDMTopicAS,隨後單擊 Finish
  19. 按下 receive destination 欄位旁的 Select... 按鈕,選擇您的目標伺服器,展開 Topics 資料夾,選擇 com/dwl/base/notification/MDMTopic,單擊 Finish
    圖 29. 指定 JMS 配置設定
    展示配置 JMS Export Service 的螢幕快照
  20. 單擊 OK
  21. Ctrl+S 儲存 Assembly Diagram。
    圖 30. Assembly diagram 與 JMS export
    展示 MDM2SAP assembly 的螢幕快照

設定 SAP 介面卡

為了能夠向 SAP 系統傳送訊息,必須配置 WebSphere Adapter for SAP Software:

  1. 由於介面卡使用了 SAP Java Connector (JCo),因此需要將 sapjco3.dll 和 sapjco3.jar 檔案複製到執行 ESB 的系統。兩個檔案均可從 SAP 市場的下載部分 獲得。將兩個檔案複製到 WebSphere Process Server 的 lib 目錄(例如 C:\Program Files\IBM\WID7_WTE\runtimes\bi_v7\lib)。
  2. MDM2SAP Assembly Diagram 編輯器中,展開 Outbound Adapters 部分,將一個 SAP 元件拖動到工作區中。
  3. New External Service 視窗中,選擇 IBM WebSphere Adapter for SAP Software with transaction support
    圖 31. 新建 IBM WebSphere Adapter for SAP Software
    展示新建外部服務的螢幕快照
  4. 單擊 Next
  5. 在下一頁中,保留預設設定即可,單擊 Next
  6. 在下一頁中指定 SAP JCo 檔案的位置
    圖 32. 指定 JCO 聯結器檔案的位置
    展示為新的外部服務定位檔案的螢幕快照
  7. 單擊 Next
  8. 在下一頁中,指定 SAP 系統連線資訊。要使用的 SAP 介面名稱是 ALE
    圖 33. 指定發現屬性
    展示指定發現屬性的螢幕快照
  9. 單擊 Next
  10. 展開 ALE 節點,選擇 Discover IDoc From System
  11. 單擊 filter 按鈕,在 pattern 欄位中鍵入 *debmas*。務必包含萬用字元(*)。
    圖 34. 在企業系統中查詢物件
    展示在企業系統中查詢物件的螢幕快照
  12. 單擊 OK
  13. 展開 Discover IDoc from System (filtered) 節點。
  14. 在已發現物件的列表中,選擇 DEBMAS06,將其新增到右側的選中物件列表中。此時將出現一個配置對話方塊。
  15. 在 DEBMAS06 的配置屬性中,選中前四個複選框,指定 IDoc release version 700
    圖 35. IDoc DEBMAS06 的配置屬性
    展示指定 'DEBMAS06 的配置屬性的螢幕快照
  16. 單擊 OK,再單擊 Next
  17. 為所生成的業務物件指定一個資料夾。在 Folder 欄位中輸入 debmas,單擊 Next
  18. 在 Deployment Properties 中,選擇 Using security properties from the managed connection factory,隨後單擊 Next
  19. 單擊 Finish
  20. Ctrl+S 儲存 MDM2SAP Assembly Diagram。
    圖 36. Assembly diagram
    展示 MDM2SAP assembly diagram 的螢幕快照

建立中介模組

現在,您必須建立傳入的 MDM 訊息與 SAP 訊息之間的中介。由於 MDM Server 和 SAP 為國家或省份使用不同的程式碼,因此中介必須對恰當的值進行轉碼。

建立 MDMSAP 轉碼資料庫

  1. 開啟一個 DB2 命令視窗,切換到包含已經解壓縮的教程示例檔案的目錄。
  2. 建立轉碼資料庫:
    db2 create database MDMSAP
  3. 連線資料庫:
    db2 connect to MDMSAP
  4. 輸入此命令建立國家程式碼表:
    db2 -tvf countryCodes.sql
  5. 輸入此命令建立省份程式碼表:
    db2 -tvf provinceCodes.sql
  6. 斷開資料庫連線:
    db2 disconnect MDMSAP

建立 MDMSAP 資料來源

  1. 在 WebSphere Integration Developer 中,開啟 Servers 檢視,右鍵單擊 WebSphere Process Server v7.0,選擇 Start。等待狀態將更改為 Started
  2. 右鍵單擊 WebSphere Process Server v7.0,選擇 Administration > Run administrative console
  3. 在左側的 Admin Console 中,展開 Security 並單擊 Global security
  4. 在右側的 Authentication 部分中,展開 Java Authentication and Authorization Service 並單擊 J2C authentication data
  5. 單擊 New 按鈕。
  6. 指定一個別名(例如,MDMSAP_DB_Auth_Alias)和使用者用於連線到 MDMSAP 資料庫的使用者 ID 和密碼。單擊 OK。在頁面頂端的訊息中,單擊 Save 儲存您的更改。
    圖 37. J2C 身份驗證資料
    展示全域性安全性螢幕的螢幕快照
  7. 在左側的 Admin Console 中,展開 Resources > JDBC
  8. 單擊 Data sources
  9. 在 Data sources 頁面中,選擇 server1 範圍並單擊 New
  10. Basic data source information 頁面中,輸入資料來源名稱(MDMSAP)和 JNDI 名稱(jdbc/MDMSAP),隨後單擊 Next
  11. 在 JDBC provider 頁面中,選擇 Create new JDBC provider,隨後單擊 Next
  12. 在 new JDBC provider 頁面中,選擇 Database type: DB2Provider type: DB2 Universal JDBC Driver ProviderImplementation type: XA data source
    圖 38. 新建 JDBC 提供程式
    展示新建 JDBC 提供程式的圖片
  13. 單擊 Next
  14. 在資料庫類路徑資訊視窗中,指定您的包含 db2jcc.jar 檔案的 DB2 安裝目錄。將 Native library path 欄位留空,然後單擊 Next
  15. 在 database-specific properties 頁面中,選擇 Driver type: 4Database name: MDMSAP(DB2) Server 名稱。單擊 Next
  16. 在 Component-managed authentication alias 下拉列表中,選擇 MDMSAP_DB_Auth_Alias,然後單擊 Next
  17. 單擊 Finish。在頁面頂端的訊息中單擊 Save
    圖 39. MDMSAP 資料來源
    展示資料來源的螢幕快照
  18. 選中 MDMSAP 旁的複選框,單擊 Test connection 按鈕。在頁面頂端的訊息中,確認 MDMSAP 的連線測試是否已經成功。
  19. 重新啟動應用伺服器。

建立中介流元件

  1. 在 MDM2SAP Assembly Diagram 編輯器中,展開 Components 部分,將一個 Mediation Flow 元件拖動到工作區。
  2. 右鍵單擊新的 Mediation Flow 元件,選擇 Rename,並指定一個名稱(例如, MDM2SAPMediation)。
  3. 在選項板中,單擊 Wire 圖示
    圖 40. 新的中介工作流
    展示 MDM2SAP 中介圖的螢幕快照
  4. 單擊 MDMRequest 元件和 MDM2SAPMediation 元件。
  5. 在 Add Wire 對話方塊中,單擊 OK
  6. 單擊 MDM2SAPMediation 元件和 SAPImport 元件。
  7. 在 Add Wire 對話方塊中,單擊 OK
  8. 右鍵單擊工作區,選擇 Automatic Layout
  9. 在選項板中,單擊 Selection Tool
    圖 41. 連線元件
    展示 MDM2SAP assembly diagram 的螢幕快照
  10. Ctrl+S 儲存更改。

實現中介元件

  1. 在 WebSphere Integration Developer 中,右鍵單擊 MDMDataTypes 庫專案,選擇 New > Business Object
  2. 指定名稱(例如,TranscodingBO)。單擊 Finish
  3. 在 TranscodingBO 編輯器中,使用 Add a Field to a business object 圖示建立字串型別的四個欄位:
    • MDMCountryCode
    • MDMProvinceCode
    • SAPCountryCode
    • SAPProvinceCode
  4. 新增一個型別為 TCRMPersonBObjType 的 TCRMPersonBObj 欄位(要指定型別,請單擊字串,選擇 Browse...,輸入 TCRMPerson,並從 Matching data types 列表中選擇 TCRMPersonBObjType
    圖 42. 新增欄位
    展示業務物件的螢幕快照
  5. Ctrl+S 儲存更改。
  6. 在 MDM2SAP Assembly Diagram 中,雙擊 MDM2SAPMediation 元件並在開啟的對話方塊中選擇 Yes
  7. 在 Generate Implementation 視窗中,單擊 OK
  8. 在 MDM2SAPMediation 編輯器視窗中,選擇 MDMInput 介面的 operation1
  9. 選擇 Blank Mediation Flow。
    圖 43. Blank Mediation Flow
    展示 MDM2SAPMediation 的螢幕快照
  10. 在右側的 MDMSAPMediation 編輯器中,單擊 Transient Context 旁的加號(+)。
  11. 在 Filter 欄位中,輸入 TranscodingBO,從 Matching data types 列表中選擇 TranscodingBO,並單擊 OK
    圖 44. Transient Context
    展示新增 Transient Context 的螢幕快照
  12. 在左側的 MDMSAPMediation 編輯器中,展開 Service Invocation 部分,將一個 Callout 拖動到工作區。
  13. 選擇 SAPImportPartner 引用,隨後單擊 OK
  14. 在 Routing 部分中,將一個 Message Filter 拖動到工作區。右鍵單擊 Message Filter,選擇 Rename,並指定名稱 validate message
  15. 在 Transformation 部分中,將以下內容拖動到工作區:
    • XSLT Transformation(名稱:prepare context
    • Database Lookup(名稱:transcode province codes
    • Database Lookup(名稱:transcode country codes
    • XSLT Transformation(名稱:create SAP message
  16. 按照如下方法連線已建立的工件:
    • Inputvalidate message 連線
    • 將驗證訊息的 match1 輸出與 prepare context 連線
    • 將準備訊息的 out 輸出與 transcode province codes 連線
    • 將轉碼省份編碼的 out 輸出與 transcode country codes 連線
    • 將轉碼國家編碼的 out 輸出與 create SAP message 連線
    • create SAP messageCallout 連線
  17. 右鍵單擊工作區,選擇 Automatic Layout。
    圖 45. Automatic Layout
    展示帶有已連線基元的流的螢幕快照
  18. 單擊 validate message
  19. Properties 檢視中,選擇 Details 選項卡,隨後單擊右側的 Add... 按鈕。
  20. 在 Add/Edit 視窗中,輸入以下模式。在本例中,我們僅確認已經設定了 City 元素。

    boolean(/body/operation1/TCRMService/TCRMTx/TCRMObject/TCRMPersonBObj/TCRMPartyAddressBObj/TCRMAddressBObj/City)
  21. 選擇 match1 作為終端名稱。
    圖 46. Add/Edit 屬性
    展示 Add/Edit 屬性的螢幕快照
  22. 單擊 Finish
  23. 雙擊 prepare context
  24. 在 New XML Map 視窗中,單擊 Next
  25. 在 Message Root 下拉框中,選擇 '/'
  26. 確認 Input Message Body 已設定為 operation1RequestMsg
  27. 要指定 Output Message Body,請單擊欄位旁的 Browse 按鈕,先選擇 Specific message type,再選擇 MDMInput/operation1/operation1RequestMsg,然後單擊 OK
    圖 47. 新建 XML 對映
    展示新建 XML 對映的螢幕快照
  28. 單擊 Finish,對映編輯器將開啟。
  29. 在對映編輯器中,建立左側結構元素與右側結構元素之間的以下連線:
    左側元素 右側元素 轉換函式
    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. 上下文對映
    展示上下文對映的圖示
  30. Ctrl+S 儲存更改。
  31. 在 MDMSAPMediation 編輯器中,單擊 transcode province codes
  32. 單擊 Terminal 選項卡。
  33. 展開 Input terminal,單擊 in。然後單擊 Message type 欄位旁的 Change 按鈕,選擇 MDMInput/operation1/operation1RequestMsg
  34. Details 選項卡內單擊。
  35. 輸入以下值:
    • 在 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. 在資料庫中查詢省份編碼
    顯示 database lookup: transcode province codes 的螢幕快照
  36. Ctrl+S 儲存您的更改。
  37. 在 MDMSAPMediation 編輯器中,單擊 transcode country codes
  38. 輸入以下值:
    • 在 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. 在資料庫中查詢國家編碼
    顯示資料庫查詢轉碼國家編碼細節的螢幕快照
  39. Ctrl+S 儲存您的更改。
  40. 在 MDMSAPMediation 編輯器中,雙擊 create SAP message
  41. 在 New XML Map 視窗中,按 Next
  42. 在 Message Root 下拉框中,選擇 '/'
  43. 要指定 Input Message Body,單擊欄位旁的 Browse 按鈕,選擇 Specific message type,選擇 MDMInput/operation1/operation1RequestMsg,再單擊 OK
  44. 驗證 Output Message Body 已設定為 executeSapDebmas06RequestMsg
    圖 51. 指定訊息型別
    展示輸入新 XML 對映的螢幕快照
  45. 單擊 Finish,此時將開啟對映編輯器。
  46. 在對映編輯器中,在左側結構的欄位與右側結構的欄位之間建立以下連線:
    # 左側欄位 右側欄位 轉換函式
    以下的所有欄位均與
    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/AdminSystemType
    KUNNR If (下文提供了有關這種 If 轉換的配置說明)
    8 兩項輸入:
    body/operation1/TCRMService/TCRMTx/ TCRMObject/TCRMPersonBObj/TCRMPersonNameBObj/GivenNameOne

    body/operation1/TCRMService/TCRMTx/TCRMObject/TCRMPersonBObj/ TCRMPersonNameBObj/LastName
    NAME1 Concat (下文中提供了有關這種 Concat 轉換的配置說明)
    9 body/operation1/TCRMService/TCRMTx/TCRMObject/TCRMPersonBObj/ TCRMPersonNameBObj/LastName SORTL Move
    • 上表第 7 行 If 轉換的配置說明:
      利用表示轉換函式的框,將 AdminPartyIdKUNNRAdminSystemType 連線。隨後將轉換的型別切換為 If。單擊 If 轉換,指定條件: $AdminSystemType = '1'。 最後,雙擊 If 轉換,並將 AdminPartyIdKUNNR 連線。現在,僅在系統型別的值為 “1” 時才能將 party ID 賦予客戶編號。其他系統將被忽略。
    • 上表第 8 行 Concat 轉換的配置說明:
      利用表示轉換函式的框,將 GivenNameOneNAME1LastName 連線。此時即建立了一個 Concat 轉換。單擊 Concat 轉換。在 General 選項卡中選擇 Space character 作為預設分隔符。確認 Example 字串如下所示:<GivenNameOne> <LastName>(包括空格字元)。
  47. SAP 訊息的某些欄位需要設定預設值。可以使用 Assign 函式賦予預設值。要建立 Assign,請右鍵單擊恰當的欄位並選擇 Create Assign。在 AssignProperties 中,可在 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
  48. Ctrl+S 儲存您的更改。
  49. 在 MDMSAPMediation 編輯器中,某些元件仍存在尚未連線的終端。在選項板的 Error Handling 部分中將各 fail 終端連線到一個 Fail 元件。在選項板的 Error Handling 部分中將其餘所有未使用的終端連線到一個 Stop 元件。
  50. 右鍵單擊工作區,選擇 Automatic Layout(為了適應螢幕,下圖所示佈局經過修改)。
    圖 52. 最終的請求流
    展示最終請求流的圖片
  51. 在 MDMSAPMediation 編輯器中,單擊 Response 選項卡