使用 DB2 pureXML 和 WebSphere Transformation Extender 處理 SEPA 支付

CloudSpace發表於2009-09-16

Danielle Vann, WTX 諮詢軟體工程師, IBM
Jim Hobler, WTX 高階軟體工程師, IBM

轉自:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0904sepapayments/index.html

WebSphere® Transformation Extender 和 WTX Pack for SEPA 提供各種轉換和檢驗過程,支援與用於 SEPA 支付的 European Payments Council 實現進行互動。本文講解如何使用 DB2® pureXML™ 為有效的 SEPA 支付實現完整的儲存解決方案,解釋在處理支付拒絕或返回時如何檢驗原始文件。

什麼是 WebSphere Transformation Extender (WTX)?

WTX 是 IBM 的通用資料轉換和檢驗引擎。WTX 是一種真正的多對多轉換設計和開發工具,具有容易使用的拖放介面。WTX 解決方案還是跨平臺的。開發之後,可以把它們部署到各種作業系統上,比如 Windows®、Linux®、UNIX®、USS 和 MVS™。WTX 包含靈活的資料 “介面卡”,支援流行的資料庫引擎、Enterprise Resources Planning (ERP) 應用程式、Customer Relationship Management (CRM) 應用程式以及各種檔案或資料格式,比如 XML、HTML、S/MIME 和 COBOL Copybooks。

什麼是 WebSphere Transformation Extender Pack for SEPA?

WebSphere Transformation Extender Pack for SEPA 執行 European Payments Council (EPC) 指定的擴充套件檢驗規則,支援無需編寫程式碼的開發以及跨多種平臺進行重用和部署。WebSphere Transformation Extender Pack for SEPA 還可以在 SEPA 格式與內部應用程式和業務系統所需的格式(比如 DTAUS、MINOS、CFONB 和 BACS)之間進行轉換。

關於 WTX 產品系列的更多資訊,請參見 http://www.ibm.com/software/integration/wtx

什麼是 DB2 pureXML?

DB2 pureXML 支援以 XML 資料原有的層次化格式儲存、管理、檢驗和搜尋 XML 資料。開發人員不再需要編寫程式碼把 XML 資料分解為單獨的欄位,也不需要把 XML 儲存為大字串或 CLOB 資料型別。通過使用 pureXML,可以使用 SQL/XML 搜尋資料庫中的 XML 資料。DB2 pureXML 還可以在插入或更新時根據模式檢驗 XML。參考資料 包含關於 pureXML 的更多資訊。

簡介

本文演示如何:

  • 使用 WTX 在 DB2 pureXML 資料庫中儲存有效的 SEPA Payments Clearing and Settlement 訊息 (pacs.008.001.01) 文件。
  • 獲取這些 “原始” 文件以便建立和檢驗拒絕或返回訊息。
  • 使用獲取的原始 SEPA 資料呼叫 WTX SEPA Pack 擴充套件檢驗。

    先決條件

    本文描述的工作需要以下軟體:

    • WTX Design Studio 8.2.0.3 或更高版本。
    • DB2 Version 9.1 或更高版本。如果不打算在 z/OS® 平臺上使用這個示例,可以下載和使用免費的 DB2 Express-C 產品。
    • WTX Command Server 8.2.0.3 或更高版本(如果希望在 UNIX 平臺上執行 WTX 對映)。
    • WTX Pack for SEPA。只有在希望執行最後一個示例(執行 SEPA Validation Framework)時需要這個軟體。

    WTX Design Studio 需要 Microsoft Windows(2000、XP、2003 Server 或 Vista)。

    在 DB2 pureXML 資料庫中儲存支付資料

    在本文中,講解如何使用一個簡單的 WTX 對映把 SEPA 資料直接插入 DB2 資料庫中。在實際的實現中,應該在使用 WebSphere Transformation Extender Pack for SEPA 檢驗支付資料之後呼叫這個對映。

    設定示例資料庫

    下載 WTXSEPAExample.zip 並把它解壓到一個臨時位置。這會建立一個名為 WTXSEPAExample 的目錄(資料夾),其中包含本文的 Eclipse 專案、對映、樹和示例資料。示例假設在 c:\temp 目錄中建立這個目錄。請根據需要調整下面的命令。要想在 Windows 計算機上執行這些命令,可以使用 DB2 Control Center 的 Command Editor 或 DB2 命令視窗。下面的示例使用後者。如果要在 z/OS 系統上設定資料庫,請使用 z/OS 資料庫設定說明 中的步驟。

    Windows 和 UNIX 資料庫設定說明

    為了開啟一個 DB2 命令視窗,啟動 MS-DOS 命令提示,進入下載的目錄並執行 db2cmddb2 命令,見清單 1。


    清單 1. 開啟命令視窗

    				
    cd c:\temp\WTXSEPAExample
    db2cmd
    db2

    在 DB2 命令提示上,執行清單 2 中的語句以建立資料庫。


    清單 2. 建立用來儲存 XML 資料的資料庫

    				
    create database SEPA using codeset utf-8 territory US

    模式需要註冊,但是由於模式的大小,首先需要增加應用程式堆的大小。在建立資料庫之後,執行清單 3 中的命令。


    清單 3. 增加應用程式堆的大小

    				
    connect to SEPA
    
    UPDATE DB CFG USING APPLHEAPSZ 40000
    UPDATE DB CFG USING CATALOGCACHE_SZ 100000

    下載的包包含 SEPA 使用的 UNIFI 模式。在 DB2 命令視窗中,執行清單 4 中的程式碼註冊這些模式。


    清單 4. 註冊 SEPA 模式

    				
    register xmlschema 'pacs.002.001.02.xsd' from 'schemas/pacs.002.001.02.xsd' \
             as SEPADMIN.pacs_002_001_02
    complete xmlschema SEPADMIN.pacs_002_001_02
    register xmlschema 'pacs.008.001.01.xsd' from 'schemas/pacs.008.001.01.xsd' \
             as SEPADMIN.pacs_008_001_01
    complete xmlschema SEPADMIN.pacs_008_001_01

    注意:如果出現錯誤 DB21107E,“An error has occurred when accessing the file”,那麼應該檢查是否已經切換到了示例目錄(見 清單 1)。

    下面要建立一個表,其中包含一個 XML 資料型別的列、一個包含文件 ID 的列和一個包含註釋的列。執行清單 5 中的 CREATE TABLE 語句。


    清單 5. 建立儲存 XML 資料的表

    				
    create table SEPADMIN.SEPAMESSAGES \
    (ID varchar(60) PRIMARY KEY NOT NULL, COMMENT VARCHAR(500), DATA XML)

    z/OS 資料庫設定說明

    對於 z/OS,可以使用 SPUFI、Admin Tool 或 DataStudio 輸入建立資料庫和註冊模式的 DDL。


    清單 6. 在 z/OS 系統上建立示例資料庫的 DDL

    				
    CREATE DATABASE SEPA;

    下載的包包含 SEPA 使用的 UNIFI 模式。使用清單 6 中的程式碼註冊這些模式。


    清單 7. 在 z/OS 系統上註冊 SEPA 模式

    				
    REGISTER XMLSCHEMA 'pacs.002.001.02.xsd' FROM file://pacs.002.001.02.xsd AS 
    SEPADMIN.pacs_002_001_02
    COMPLETE
    
    REGISTER XMLSCHEMA  pacs.008.001.01.xsd FROM file://pacs.008.001.01.xsd' AS
    SEPADMIN.pacs_008_001_01
    COMPLETE

    下面要建立一個表,其中包含一個 XML 資料型別的列、一個包含文件 ID 的列和一個包含註釋的列。執行清單 8 中的 CREATE TABLE 語句。


    清單 8. 在 z/OS 系統上建立儲存 XML 資料的表

    				
    create table SEPADMIN.SEPAMESSAGES(ID varchar(60) PRIMARY KEY NOT NULL, COMMENT 
    VARCHAR(500), DATA XML)

    在 DB2 pureXML 資料庫中儲存支付文件的步驟

    前面解壓的 zip 檔案包含下面 WTX 物件和示例 SEPA 資料。使用 WTX 填充前面建立的資料庫。

    • WTX 型別樹
    • WTX 對映源
    • WTX Database (MDQ) 檔案
    1. 在 WTX Database Interface Designer 中開啟 SEPA.mdq 檔案。


      圖 1. WTX Database Interface Designer
      WTX Database Interface Designer

    2. 可以使用原生連線驅動程式或 ODBC 連線到資料庫。更多資訊請參考 WTX Database Interface Designer 的文件。這個示例使用原生 DB2 連線。
      1. 右鍵單擊 SEPA 資料庫名並選擇 Edit
      2. 展開 Database Source。這是一個下拉選單。選擇前面建立的資料庫(SEPA,除非前面使用了其他名稱)。還應該在 Security 部分中輸入自己的 DB2 使用者 ID 和密碼。如果在 PC 上執行 DB2 的本地拷貝(例如 DB2 Express),那麼根據安裝 DB2 的方式不同,可能可以清空 User ID 和 Password 框。

        圖 2. Data Source and Security Settings 對話方塊
        Data Source and Security Settings 對話方塊 (PNG)

      3. 選擇 OK 退出配置對話方塊。
      4. 通過展開 SEPA 資料庫 (+) 並雙擊 Tables 部分,測試資料庫連線。如果連線設定正確,就會開啟 Generate Type Tree from Tables 對話方塊。

        圖 3. 如果資料庫連線成功,Generate Type Tree 對話方塊會顯示完整的表列表
        如果資料庫連線成功,Generate Type Tree 對話方塊會顯示完整的表列表 (PNG)

      5. 儲存 SEPA.mdq 並關閉 WTX Database Interface Designer。
    3. 開啟 WTX Design Studio 並匯入 zip 檔案中的 WTX 專案。為此,選擇 File... Import,然後選擇 General... Existing Projects 把這個專案匯入自己的工作空間。瀏覽到建立的示例目錄 (WTXSEPAExample),然後選擇 Next。Import Projects 對話方塊出現,其中已經選擇了 WTXSEPAExample。單擊 Finish。為了確認是否成功地建立了專案,在 WTX Extender Navigator 中展開 Maps。如果出現對映 “sepa_db2.mms”,就說明匯入成功了。
    4. 在 Design Studio 中開啟 sepa_db2.mms WTX 源對映並選擇 data_insert 對映。這個對映把資料插入資料庫中。輸入卡 (InputXML) 包含作為源的有效 SEPA XML 文件,輸出卡 (DBInsert) 將用正確的設定把輸入對映到資料庫中。

      圖 4. data_insert 對映
      data_insert 對映 (PNG)

    5. 如果需要,可以通過編輯輸入卡 (InputXML) 把輸入檔案改為您選擇的有效 SEPA 支付訊息。當前的設定把示例資料輸入到 DB2 pureXML 資料庫中,不需要編輯對映卡。
    6. 選擇工具欄中的 Map,然後選擇 Build 來構建對映。 注意:如果在非 Windows 平臺上執行對映,那麼應該選擇 Maps 選單中的 Build for Specific Platform 選單項。
    7. 如果在非 Windows 作業系統上執行,那麼必須通過二進位制傳輸部署對映、模式和資料。
    8. 選擇 Maps 選單中的 Run 執行對映。在任何 ESB 系統(比如 WTX Launcher 或 WebSphere Message Broker)中,都可以使用這個對映監視到達的資料,然後自動地把資料輸入資料庫中。在 UNIX 平臺上執行對映需要使用 WTX Command Server。關於在非 Windows 平臺上執行對映的說明,請參考 WTX 文件。

      圖 5. 構建並執行 WTX 對映
      構建並執行 WTX 對映 (PNG)

    9. 成功地執行對映之後,支付文件已經被新增到資料庫中了。為了確認這一點,使用 DB2 Command Editor 或 CLI Editor 選擇 SEPAMESSAGES 表中的所有記錄,見清單 9。如果對映沒有成功執行,那麼在跟蹤檔案 data_insert.dbl 中尋找更多資訊。


    清單 9. 查詢 SEPA 資料庫

    				SELECT * from SEPADMIN.SEPAMESSAGES


    圖 6. 使用 DB2 Command Editor 檢視插入的資料
    使用 DB2 Command Editor 檢視插入的資料 (PNG)

    圖 7. DB2 Command Editor 查詢結果
    DB2 Command Editor 查詢結果 (PNG) 

    從 DB2 pureXML 資料庫獲取原始支付文件

    獲取原始 SEPA 支付文件主要用於在 SEPA 中建立拒絕或返回訊息。下面向一個 WTX 對映傳遞要拒絕或返回的訊息的交易 ID,從而演示如何獲取原始 SEPA 支付文件。

    從 DB2 pureXML 資料庫獲取原始支付文件

    1. 如果還沒有匯入專案,那麼執行前面的步驟 1 - 3。
    2. 在 Design Studio 中開啟 sepa_db2.mms WTX 源對映並選擇 query_txid 對映。

      圖 8. 開啟 ‘query_txid’ 對映
      開啟 ‘query_txid’ 對映 (PNG)

    3. 編輯 TxID 輸入卡,把 Echo 輸入改為要在資料庫中查詢的有效交易 ID。這個值是原始支付訊息中的 Credit Transfer Transaction Information\Transaction ID 元素,並與拒絕訊息中的 Transaction Information and Status\Original Transaction ID 相關聯。提供的預設值是 ‘pacs008\3’。如果使用示例資料執行了前面的資料插入示例,就會找到這個交易。
    4. 構建並執行 ‘query_txid’ 對映。輸出卡 2 的資料將包含與交易 ID 對應的完整 XML 訊息。

    使用示例對映的輸出執行 SEPA 檢驗框架(可選 —— 必須安裝 WebSphere Transformation Extender Pack for SEPA)

    可以在 WebSphere Transformation Extender Pack for SEPA 檢驗中使用示例 'query_txid' 對映的輸出。WebSphere Transformation Extender Pack for SEPA 會對 SEPA 文件執行擴充套件檢驗。

    在檢驗拒絕或返回資料時,WebSphere Transformation Extender Pack for SEPA 必須獲得原始的支付訊息,而這正是 'query_txid' 對映的作用。

    這個示例假設已經安裝了 WTX Pack for SEPA,構建了所有對映並把 'xliff.dtd' 複製到了 mapsandschemas 目錄中。

    在這個示例中,要建立一個呼叫 SEPA 檢驗框架對映的對映。對於實際的實現,應該刪除這個對映;在從資料庫成功地獲取原始資料之後,query_txid 對映可以直接呼叫 WebSphere Transformation Extender Pack for SEPA 檢驗。

    呼叫 Pack for SEPA 檢驗對映的步驟:

    1. 在 Design Studio 中開啟 ‘sepa_db2.mms’ WTX 源對映並選擇 Call_Validation 對映。

      注意:這個示例假設已經在 “C:\IBM\WebSphere Transformation Extender 8.2” 中安裝了 WTX SEPA Pack version 4.2.3。如果安裝了更新的版本或安裝在另一個位置,那麼應該相應地修改輸出卡 CallSEPAValidation
    2. 輸入卡 1 包含要檢驗的原始資料的內容。這是一個 SEPA Reject 訊息 (pacs.002.001.02)。輸入卡 2 是前面通過執行 ‘query_txid’ 對映獲取的訊息。如果需要,可以修改這些預設值。對於這個示例,在示例拒絕訊息中有 SEPA 檢驗錯誤。如果沒有錯誤,WTX SEPA 檢驗對映就不會返回任何資訊。
    3. 這個對映的輸出是一個檔案,它返回結果。
    4. 構建並執行 Call_Validation

      注意:如果遇到錯誤 “Fail function aborted map”,那麼可能是還沒有安裝 WTX SEPA pack,或者前面步驟 1 中指定的位置不正確。如果遇到 “One or more inputs are invalid”,那麼要檢查是否把 xliff.dtd 複製到了 mapsandschemas 目錄中。
    5. SEPA 檢驗的結果出現在與 sepvalid.mmc 對映相同的目錄中(也就是安裝 Pack for SEPA 的地方)。輸出檔案的預設名稱是 ‘seperror.xml’。執行示例資料的輸出在瀏覽器中的樣子見圖 9:

      圖 9. WebSphere Transformation Extender Pack for SEPA 檢驗對映的結果
      WebSphere Transformation Extender Pack for SEPA 檢驗對映的結果 (PNG)

      結束語

      可以使用 WTX 和 DB2 pureXML 增強 SEPA 資料的處理和儲存。本文講解了如何設定資料庫、如何儲存 SEPA 訊息以及如何使用惟一標識獲取這些訊息。

      儲存了 SEPA 資料之後,就可以按照多種方式增強 SEPA 過程。通過在使用 WTX Launcher 或 WebSphere Message Broker 的系統中實現這些對映,可以在接收和檢驗支付訊息時自動地把它們儲存到資料庫中。在接收到支付拒絕或返回時,系統可以獲取交易 ID 並把值傳遞給示例 ‘query_txid’ 對映。

      致謝

      衷心感謝 Christian Daser、Kirsten Ann Larsen、Susan Malaika、Cindy Saracco 和 Guogen Zhang 為本文提供意見和幫助!

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

相關文章