演练 (X12):接收批处理 EDI 交换

本演练提供了一组分步过程,用于创建使用 BizTalk Server 接收 EDI 批处理的解决方案。 此解决方案演示了两种接收批处理 EDI 交换的方法:

  • 通过将批拆分为其组成事务集。

  • 通过将交换处理为一个文档而不拆分事务集来保留交换。

    本演练演示如何配置拆分和保留批处理。

必备条件

必须以“BizTalk Server管理员”或“BizTalk Server B2B 操作员”组的成员身份登录。

解决方案如何拆分接收的 EDI 批

当将解决方案配置为将批处理交换拆分为其组成事务集时,解决方案将执行如下操作:

  1. 接收位置从一个团队接收包含多个交易记录集的一个批处理 EDI 交换。

    注意

    此列表中的事件可能不会按所示顺序发生。

  2. 接收管道将接收的交换拆分为其组成事务集,并将事务集转换为内部 XML 格式。

  3. 接收管道将整个交换和组标头升级为从交换拆分的每个事务集的上下文。 它还会升级某些特定交换和组标头(如 ISA6、GS1 和 GS2),以便可以使用这些字段进行路由。

  4. 接收管道将每个事务集 XML 文件放入 MessageBox。

    注意

    在此解决方案中,批包含具有相同消息类型的多个实例。

  5. 发送端口通过订阅适当的上下文属性来提取每个事务集。

  6. 发送管道将每个事务集生成一个 EDI 交换,然后将交换发送到目标。

    注意

    有关BizTalk Server如何在批处理中拆分事务集的详细信息,请参阅拆分批处理 EDI 交换

    下图显示了将解决方案配置为拆分批处理交换中的事务集时解决方案的体系结构和消息流。

    拆分批处理的 EDI 交换

解决方案如何保留接收的 EDI 批

当将解决方案配置为保留批处理交换时,解决方案将执行如下操作:

  1. 接收位置从该团队接收一个包含多个交易记录集的批处理 EDI 交换。

  2. 接收管道处理交换而不拆分事务集,并将两个事务集作为一个单位转换为内部 XML 格式。

  3. 接收管道除了将保留标记应用于它生成的 XML 以外,还升级相同的属性(就好像交换不是批那样)。 此标记是 <X12 编码的 EDI 交换的 X12InterchangeXml> ; <对于 EDIFACT 编码的 EDI 交换,此标记为 EdifactInterchangeXml> 。 EDI 接收管道还应用上下文属性 ReuseEnvelope ,将交换标识为保留。

    注意

    EDI 发送管道使用 <X12InterchangeXml> 或 <EdifactInterchangeXml> 标记将消息标识为保留的批处理。 使用 ReuseEnvelope 上下文属性可以创建一个发送端口,该端口订阅保留的所有批处理交换。

  4. 接收管道将消息 XML 文件放入 MessageBox。

  5. 发送端口通过订阅适当的上下文属性来提取交换。

  6. 发送管道将 XML 文件中的两个事务集生成一个批处理 EDI 交换,然后将交换发送到目标。

    注意

    有关BizTalk Server如何处理保留的批处理的详细信息,请参阅保留接收的批处理 EDI 交换

此解决方案中的功能

为进行此演练,将启用以下功能:

  • 该解决方案专用于使用 X12 编码而不是 EDIFACT 编码的交换。

    注意

    用于 HIPAA 和 EDIFACT 编码的配置与用于 X12 编码的配置几近相同。

  • 将不会返回技术确认或功能确认来响应最初接收的交换或发送的任何批处理交换。

    注意

    有关生成 EDI 确认的信息,请参阅 演练 (X12) :接收 EDI 交换和发送回确认

  • 该解决方案使用一个单向接收端口和一个静态单向发送端口。 将使用 FILE 传输类型配置这些端口。

  • 将启用 EDI 报告。

  • 将保存事务集以从交换状态报告进行查看。

  • 出于测试目的,该解决方案使用发送端口将拆分的交换或保留的批发送到本地文件夹。

配置和测试演练

该解决方案所需的过程包括:

  • 将必需的消息架构添加到 BizTalk 项目,然后生成并部署该项目,以使架构可供 BizTalk Server 在处理消息时使用。

  • 为BizTalk Server创建接收端口,以接收来自参与方的 EDI X12 编码 .txt 批处理输入消息。

  • 为 BizTalk Server 创建发送端口以为接收的批中的每个事务集生成交换(如果拆分批),或者从接收的批中的事务集生成单个交换(如果保留批)。 发送端口稍后会将交换发送给目标参与方。 此发送端口将是一个静态单向发送端口。

  • 为参与方 A 和参与方 B 创建一个参与方(贸易合作伙伴)。

  • 为两个贸易合作伙伴分别创建一个业务配置文件。

  • 通过将 EDI 属性配置为通过拆分或保留交换来接收消息,从而在两个配置文件之间创建协议。

  • 将一个批处理 EDI 交换放入与接收位置关联的本地文件夹中。 然后,您可以验证 BizTalk Server 是否已将来自接收的批的单独交换(如果拆分批)或单个保留的批处理交换(如果保留批)放入与发送端口关联的文件夹中。

    注意

    如果已经执行发送批处理交换演练中的步骤,则可以将那一解决方案的输出用作此解决方案的输入。 那一解决方案的输出是一个包含两个 850 消息的批。 有关详细信息,请参阅 演练 (X12) :发送批处理 EDI 交换

    本部分介绍配置演练的过程。

部署消息架构
  1. 在 Visual Studio 中,创建或打开 BizTalk 项目。

    注意

    本主题假定你已从你的应用程序添加了对包含 EDI 架构、管道和业务流程的 BizTalk EDI 应用程序的引用。 如果没有,请参阅添加对 BizTalk Server EDI 应用程序的引用

  2. 右键单击项目,指向 “添加”,然后单击“ 现有项”。 移动到 <drive>:\Program Files\Microsoft BizTalk Server 2009\XSD_Schema\EDI\X12\00401,然后双击与测试消息对应的架构。

    注意

    如果尚未将 EDI 架构解压缩到XSD_SchemaEDI文件夹中,请执行 XSD_SchemaEDI 文件夹中的MicrosoftEdiXSDTemplates.exe文件,将架构解压缩到默认文件夹中。

    注意

    对于测试消息,可以使用由发送批处理交换演练中的解决方案生成的批处理交换。 该解决方案的输出是一个包含两个用于 EDI 接口开发人员教程的 850 示例消息实例的批。 如果这样做,则必须使用位于 \Program Files (x86) \Microsoft BizTalk Server <VERSION>SDKEDI Interface Developer TutorialInbound_EDI 中的架构 x12_00401_850.xsd。

  3. 设置程序集密钥文件,然后生成并部署该程序集。

创建用于接收已批处理的 EDI 消息的单向接收端口
  1. 在“BizTalk Server管理控制台”中,右键单击 BizTalk 应用程序 1 节点下的“接收端口”节点,指向“新建”,然后单击“单向接收端口”。

  2. 命名接收端口,然后单击控制台树中的“ 接收位置 ”。

  3. 单击 “新建”

  4. 命名接收位置,为“类型”选择“文件”,然后单击“配置”。

  5. 输入 接收文件夹的文件夹和 文件掩码的掩码,例如 *.txt

  6. 单击 “确定”

  7. 对于 “接收管道”,选择“ EdiReceive”。

  8. 单击 “确定”

  9. 在控制台树中,单击“ 接收位置”。 在“ 接收位置 ”窗格中,右键单击接收位置,然后单击“ 启用”。

创建静态单向发送端口以发送批处理 EDI 交换
  1. 在“BizTalk Server管理控制台”中,右键单击 BizTalk 应用程序 1 节点下的“发送端口”节点,指向“新建”,然后单击“静态单向发送端口”。

  2. 在“ 发送端口属性 ”对话框中,命名发送端口。

  3. 在“传输”部分中,为“类型”选择“文件”,然后单击“配置”。

  4. 输入 目标文件夹的文件夹和 文件掩码的掩码,如 *.txt

  5. 单击 “确定”

  6. “发送管道”中,选择“ EdiSend”。

  7. 在控制台树中,选择“ 筛选器”。 在 “筛选器 ”页上,输入将订阅批处理中的消息的筛选表达式。 例如,选择 “BTS”。ReceivePortName 表示 Property== 对于 Operator,以及刚刚为 Value 创建的接收端口的名称。

  8. 单击 “确定”

  9. 在控制台树中,单击“ 发送端口”。 在 “发送端口 ”窗格中,右键单击发送端口,然后单击“ 启动”。

为参与方 A 创建团队和业务配置文件
  1. 右键单击BizTalk Server管理控制台中的“参与方”节点,指向“新建”,然后单击“”。

  2. 在“名称”文本框中输入参与方 的名称 ,然后单击“ 确定”。

    注意

    通过选择“本地 BizTalk 处理由参与方或支持从此群检查发送消息”框,可以指定所创建的参与方适用于同时托管BizTalk Server的同一组织。 基于此,在创建协议时将启用或禁用某些属性。 但是,对于本演练,可以将此检查框保留为选中状态。

  3. 右键单击群名称,指向 “新建”,然后单击“ 业务配置文件”。

  4. 在“配置文件属性”对话框中的“常规”页上,在“名称”文本框中输入PartyA_Profile

    注意

    创建群时,还会创建配置文件。 可以重命名并使用该配置文件,而不是创建新的配置文件。 若要重命名配置文件,请右键单击该配置文件,然后选择“ 属性”。 在“ 常规 ”页中,指定配置文件的名称。

为参与方 B 创建团队和业务配置文件
  1. 右键单击BizTalk Server管理控制台中的“参与方”节点,指向“新建”,然后单击“”。

  2. 在“名称”文本框中输入参与方 的名称 ,然后单击“ 确定”。

    注意

    通过选择“本地 BizTalk 处理由参与方或支持从此群检查发送消息”框,可以指定所创建的参与方适用于同时托管BizTalk Server的同一组织。 基于此,在创建协议时将启用或禁用某些属性。 但是,对于本演练,可以将此检查框保留为选中状态。

  3. 右键单击群名称,指向 “新建”,然后单击“ 业务配置文件”。

  4. 在“配置文件属性”对话框的“常规”页上,在“名称”文本框中输入PartyB_Profile

    注意

    创建群时,还会创建配置文件。 可以重命名并使用该配置文件,而不是创建新的配置文件。 若要重命名配置文件,请右键单击该配置文件,然后选择“ 属性”。 在“ 常规 ”页中,指定配置文件的名称。

在两个业务配置文件之间创建协议
  1. 右键单击 “PartyA_Profile”,指向“ 新建”,然后单击“ 协议”。

  2. “常规属性” 页的“ 名称 ”文本框中,输入协议的名称。

  3. “协议 ”下拉列表中,选择“ X12”。

  4. 在“ 第二个合作伙伴 ”部分中,从 “名称 ”下拉列表中选择“ PartyB”。

  5. 在“ 第二个合作伙伴 ”部分中,从 “配置文件 ”下拉列表中选择 “PartyB_Profile”。

    你会注意到,“ 常规 ”选项卡旁边添加了两个新选项卡。每个选项卡用于配置单向协议,每个单向协议表示一个完整的消息 (事务,包括消息传输和确认传输) 。

  6. 在“ 常规 ”选项卡的“ 常规属性” 页上的 “通用主机设置” 部分中,选择“ 打开报告”,然后选择“ 存储用于报告的消息有效负载”。

  7. PartyA-PartyB> 选项卡上执行以下任务。

    1. 在“交换设置”部分下的“标识符”页上,输入与测试消息中这些标头字段的值相对应 (ISA5ISA6ISA7ISA8) 的限定符和标识符字段的值。

      注意

      BizTalk Server需要发送方和接收方的限定符和标识符字段才能执行协议解析。 它将交换标头中的 ISA5ISA6ISA7ISA8 的值与协议属性中的值匹配。 BizTalk Server还将通过匹配发送方限定符和标识符 (来解决协议,而无需接收方限定符和标识符) 。 如果BizTalk Server无法解决协议,它将使用回退协议属性。

      注意

      如果使用“EDI 接口开发人员教程”中的 SamplePO.txt 文件作为测试消息,请将 ISA5 设置为 ZZ将 ISA6 设置为 THEM将 ISA7 设置为 ZZ,将 ISA8 设置为 US

    2. 在“ 验证 ”页上的 “交换设置” 部分下,确保未选中“ 检查重复的 ISA13 ”选项。

      注意

      清除 “检查重复 ISA13 ”属性可接收同一消息的多个实例。

    3. 在“交换设置”部分下的“字符集和分隔符”页上,选择“CR LF”选项。

    4. “本地主机设置” 页上的 “交换设置” 部分下的“ 入站消息处理选项 ”框中,选择“ 拆分交换为事务集 - 出错时挂起事务集 ”选项。

      注意

      若要开始使用此解决方案,我们将通过选择此选项来拆分该交换。 稍后,作为测试以下 演练 过程的一部分,我们将配置解决方案以保留交换。

    5. 在“交换设置”部分下的“发送端口”页上,关联之前创建的发送端口。 在 “发送端口” 网格的“ 名称” 列下,单击一个空单元格,然后从下拉列表中选择发送端口。

    6. 在“ 信封 ”页上的 “事务集设置” 部分下,输入网格第一行中所有列的值。

      使用此选项 要执行此操作
      Default 选择“默认值”。 注意:选择此行作为默认值时,即使事务类型版本/版本目标命名空间的值与消息不匹配,也会使用 GS1GS2GS3GS7GS8 的值。
      事务类型 选择测试消息的消息类型 “850 - 采购订单”。
      版本/发行版 输入 EDI 版本 00401
      目标命名空间 选择 http://schemas.microsoft.com/Edi/X12>
      GS1 验证是否已选择测试消息的消息类型, PO - 采购订单 (850)
      GS2 输入应用程序发件人的值,例如 “购买”。
      GS3 输入应用程序接收器的值,例如 OrderControl
      GS4 选择所需的日期格式。 注意: 必须在下拉列表中选择值,而不仅仅是单击字段以显示默认值。 如果你仅单击字段,而没有从下拉列表中选择值,则实际上并未选择值。
      GS5 选择所需的时间格式。
      GS7 选择 “X - 认证标准委员会 X12”。
      GS8 验证是否已输入 EDI 版本 00401

      注意

      BizTalk Server将根据为事务类型版本/发布目标命名空间输入的值设置出站确认的 GS01、GS02、GS03、GS04、GS05、GS07 和 GS08 的值。 发送管道尝试将事务集类型、X12 版本和目标命名空间与消息标头中的对应值相匹配。 如果成功,它将使用与 事务类型版本/发布目标命名空间 值关联的 GS 值。

  8. PartyB-PartyA> 选项卡上执行以下任务。

    注意

    在本演练中,我们在选项卡中指定所需的值,以便可以成功创建协议。 若要成功创建协议,这两个单向协议选项卡都必须具有为 ISA5、ISA6ISA7ISA8 定义的值。

    1. 在“交换设置”部分下的“标识符”页上,输入与测试消息中这些标头字段的值相对应的限定符字段和标识符字段 (ISA5ISA6ISA7ISA8) 。

      注意

      如果使用“EDI 接口开发人员教程”中的 SamplePO.txt 文件作为测试消息,请将 ISA5 设置为 ZZ将 ISA6 设置为 US将 ISA7 设置为 ZZ,将 ISA8 设置为 THEM

  9. 单击“应用”。

  10. 单击 “确定” 。 新添加的协议列在“参与方和业务配置文件”窗格的“协议”部分。 默认情况下,启用新添加的协议。

测试演练

本部分提供有关如何测试演练的信息。

测试演练

  1. 在 Windows 资源管理器中,打开与接收位置关联的本地文件夹,然后将测试批处理 EDI 交换放入该文件夹。

    注意

    对于测试消息,可以使用由发送批处理交换演练中的解决方案生成的批处理交换输出。 此示例消息将包含两个事务集。

  2. 打开与上面创建的发送端口关联的文件夹。 验证该文件夹是否包含两个新文件,以及每个文件是否为包含测试批处理消息中的一个事务集的 850 交换。

  3. 在“BizTalk Server管理控制台”中,单击“参与方”节点,单击属于先前创建的协议的两个业务配置文件中的任何一个。 在 “协议 ”部分中,右键单击协议,然后单击“ 属性”。

  4. 在“ 协议属性 ”对话框的 “本地主机设置” 页上的 “交换设置” 部分的“ 入站消息处理选项 ”框中,选择“ 保留交换 - 错误时挂起交换 ”或 “保留交换 - 出错时暂停事务集 ”,然后单击“ 确定”。

  5. 单击“平台设置”节点下的“主机实例”,右键单击“BizTalkServerApplication”,然后单击“重启”。

  6. 在 Windows 资源管理器中,打开与接收位置关联的本地文件夹,然后再次将该测试批处理 EDI 交换放入该文件夹。

  7. 在 Windows 资源管理器中,打开与上面创建的发送端口关联的文件夹。 验证该文件夹当前是否仅包含一个新文件,以及此文件是否为包含测试批处理消息中的两个 850 事务集的交换。

另请参阅

开发和配置 BizTalk Server EDI 解决方案
拆分成批 EDI 交换
拆分 HIPAA 子文档
保留收到的批处理 EDI 交换
演练 (X12):发送批处理 EDI 交换
演练 (X12):接收 EDI 交换并发回确认信息
演练 (X12):发送 EDI 交换