65.9K
CodeProject 正在变化。 阅读更多。
Home

展开 BizTalk 2004 中平面文件架构的复杂性 - 第二部分

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.59/5 (13投票s)

2006年3月1日

7分钟阅读

viewsIcon

64975

downloadIcon

191

本文介绍如何在 BizTalk Server 2004 中编写各种平面文件架构。

引言 - 首先,先了解基本知识!

在本系列文章的第一部分中,我们已经了解了如何为 BizTalk 中的分隔平面文件编写架构。在本系列第二部分中,我们将学习如何在 BizTalk Server 2004 中为位置平面文件编写架构。

位置平面文件结构

在位置平面文件中,记录字段的大小是固定的。这类似于一系列需要将数据填充进去的列。数据列是根据要填充到这些列中的数据的大小来定义的。让我们通过一个位置文件的例子来理解。

示例列表

  1. 示例 1 - 一个简单的位置平面文件。
  2. 示例 2 - 一个复杂的位置平面文件。

示例 1 - 一个简单的位置平面文件

12345678901234567890123456789012345678901234567890
JOHN DOE            1964-10-05CLAYTON             
ROBERT B            1978-11-10EDWARD STREET       
JOHN LENON          1927-02-30WORTHING            
EDMOND DANTES       1910-09-12COVENTRY            
SIR CHAMBERS        1934-05-18HARRODS
  1. 位置平面文件是指其字段放置在特定位置(列)中,并且字段长度固定大小的文件。在上面的示例中,“姓名”字段的固定大小为 20 个字符,“出生日期”字段的固定大小为 10 个字符,而“籍贯”字段的固定大小为 20 个字符。

    注意:文件顶部显示的列号仅用于指示目的。

  2. 位置平面文件的记录必须始终是分隔记录的子级。父级分隔记录中指定的分隔符字符不得出现在子级位置记录的数据中。无法转义父级分隔记录的分隔符字符在子级位置字段的数据中。

创建 BizTalk 平面文件架构解决方案

在 Visual Studio 中创建一个新的 BizTalk Server 解决方案。

步骤 1:在 Visual Studio .NET 菜单中,选择“文件”->“新建”->“空白解决方案”,然后输入名称“FFSchemas”。

步骤 2:在“解决方案资源管理器”中,右键单击解决方案名称“FFSchemas”,然后选择“添加”->“新建项目”。在“添加项目”对话框中,将项目类型选择为“BizTalk 项目”。选择“空 BizTalk 项目”模板,然后创建一个名为“FlatFileSchema”的项目。

构建架构 - 示例 1

我们将根据示例 1 创建架构。

步骤 1:在“解决方案资源管理器”中右键单击项目,然后选择“添加新项”选项。然后,选择“架构”项并将其命名为“FFSchema_POS”。当架构显示时,将“根”元素重命名为“POS”。

步骤 2:选择“架构”项并右键单击,然后选择“属性”。将“架构编辑器扩展”属性更改为“平面文件扩展”。

步骤 3:选择“POS”项并右键单击,然后选择“属性”。

POS“根节点”属性
属性名称 属性值
子分隔符类型 十六进制
子分隔符 0x0D 0x0A
子级顺序 默认子级顺序
结构 分隔

注意:尽管这是一个位置平面文件,但结构属性 =“位置”仅适用于记录的字段,而不适用于记录本身,因为记录由 [CRLF] 字符分隔。

步骤 4:选择“POS”项,右键单击 ->“插入架构节点”->“子记录”。将记录命名为“Record”,并创建子元素:“Name”、“DOB”和“Address”。

步骤 5:选择“Record”项,右键单击,选择“属性”。按下方表格所示设置属性。结构属性设置为“位置”。我们需要支持多个记录,因此我们将 Max Occurs 设置为“*”或“无限制”。

“Record”节点属性
属性名称 属性值
结构 位置
最小出现次数 1
最大出现次数 无界

步骤 6:选择“Name”项,右键单击,选择“属性”。按下方表格所示设置属性。您需要对“出生日期”和“籍贯”元素重复相同的操作。

“Name”节点属性
属性名称 属性值
填充字符类型 十六进制
填充字符 0x20
位置长度 20
位置偏移 0

注意:需要为“出生日期”和“籍贯”元素设置相同的属性集。

步骤 7:在“解决方案资源管理器”中,选择架构“FFSchema_POS.xsd”,右键单击 -> 选择“属性”。在属性页屏幕中,选择下图所示的属性。对于“输入实例文件名”-> 选择输入文件(*.txt)所在的路径。

验证和测试创建的架构

完成架构编写后,我们需要验证和测试架构。

步骤 1:在“解决方案资源管理器”中,选择架构“FFSchema_POS.xsd”,右键单击 -> 选择“验证架构”。观察输出窗口,您会注意到一条消息以“Validate Schema succeeded for file...”开头。

步骤 2:在“解决方案资源管理器”中,选择架构“FFSchema_POS.xsd”,右键单击 -> 选择“验证实例”。观察输出窗口,您会注意到一条消息以“Validate Instance succeeded for schema FFSchema_POS.xsd...”开头。现在,单击以“Validation generated XML output...”消息开头的链接。

XML 输出文件将如下所示:

示例 2 - 一个复杂的位置平面文件

810HDR    Invoice   1972-05-12John Doe            
810DTL    01-2304040200       $2.34     
810DTL    02-4030400400       $1.34     
810TOT    600       $1004     
810END    Steven    
810HDR    Invoice   1936-06-15Edmond Dantes       
810DTL    01-2993030150       $1.23     
810DTL    02-202047676        $0.54     
810TOT    226       $225.54   
810END    Steven
  1. 上面显示的示例是一种复杂的位置平面文件,它是真实应用程序的简化版本。该文件的结构可以分为几个部分:
    • 以“810HDR”开头的标题部分。
    • 以“810DTL”开头的详细信息部分。
    • 以“810TOT”开头的总计部分。
    • 以“810END”开头的结束部分。
  2. 下方给出了复杂平面文件示例的详细结构分解:
    810HDR (Total = 50 characters)
        - Header ID       - 10 characters
        - Description     - 10 Characters
        - Date of Birth   - 10 Characters
        - Full Name       - 20 Characters
    
    810DTL (Total = 40 characters)
        - Detail ID       - 10 characters
        - Part No         - 10 characters
        - Quantity        - 10 characters
        - Price per unit  - 10 characters
    
    810TOT (Total = 30 characters)
        - Total ID        - 10 characters
        - TotalQuantity   - 10 characters
        - TotalPrice      - 10 characters
    
    810END (Total = 20 characters)
        - End ID          - 10 characters
        - ClerkName       - 10 characters
  3. 以“810HDR”开头的标题长度为 50 个字符,分为“标题 ID”、“描述”、“出生日期”和“姓名”。

构建架构 - 示例 2

我们将根据示例 2 创建架构。

步骤 1:在“解决方案资源管理器”中右键单击项目,然后选择“添加新项”选项。然后,选择“架构”项并将其命名为“FFSchema_Group”。当架构显示时,将“根”元素重命名为“GRP”。

步骤 2:选择“架构”项并右键单击,然后选择“属性”。将“架构编辑器扩展”属性更改为“平面文件扩展”。

步骤 3:选择“GRP”项,右键单击,选择“属性”。

GRP“根节点”属性
属性名称 属性值
子分隔符类型 十六进制
子分隔符 0x0D 0x0A
结构 分隔

步骤 4:选择“GRP”项,右键单击 ->“插入架构节点”->“子记录”。创建多个子记录,并将记录命名为“HDR”、“DTL”、“TOT”和“END”。

步骤 5:选择“HDR”项,右键单击,选择“属性”。按下方表格所示设置属性。“标签标识符”用于标识以标签“810HDR”开头的记录。由于每条记录都有唯一的标识符,因此可以设置此属性来标识正确的记录。

“HDR”节点属性
属性名称 属性值
标签标识符 810HDR

注意:需要为“HDR”节点下的各个元素设置位置长度值,并且对所有其他节点也需要执行相同操作。

步骤 6:在“解决方案资源管理器”中,选择架构“FFSchema_Group.xsd”,右键单击 -> 选择“属性”。在属性页屏幕中,选择下图所示的属性。对于“输入实例文件名”-> 选择输入文件(*.txt)所在的路径。

验证和测试创建的架构

完成架构编写后,我们需要验证和测试架构。

步骤 1:在“解决方案资源管理器”中,选择架构“FFSchema_Group.xsd”,右键单击 -> 选择“验证架构”。观察输出窗口,您会注意到一条消息以“Validate Schema succeeded for file...”开头。

步骤 2:在“解决方案资源管理器”中,选择架构“FFSchema_Group.xsd”,右键单击 -> 选择“验证实例”。观察输出窗口,您会注意到一条消息以“Validate Instance succeeded for schema FFSchema_Group.xsd...”开头。现在,单击以“Validation generated XML output...”消息开头的链接。

XML 输出文件将如下所示:

快速回顾

  1. 在开始创建平面文件架构之前,请设置架构的编辑器扩展属性。
  2. 将“子分隔符类型”属性设置为“十六进制”,以避免字符歧义。
© . All rights reserved.