ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用 DB2 pureXML 和 WebSphere Transformation Extender 处理 SEPA 支付

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

原创 Linux操作系统 作者:CloudSpace 时间:2009-09-16 13:39:09 0 删除 编辑

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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-07-08

  • 博文量
    355
  • 访问量
    855915