演练 (EDIFACT):接收 EDI 交换并发送回确认信息

本演练提供了一组分步过程,用于创建使用 BizTalk Server 接收 EDIFACT 交换的解决方案。 在此解决方案中,EDIFACT 交换从贸易合作伙伴 Fabrikam 发送到另一个贸易合作伙伴 Contoso。

必备条件

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

解决方案如何接收 EDIFACT 交换

该解决方案将执行以下操作:

注意

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

  1. 从贸易合作伙伴 Fabrikam 接收平面文件 EDIFACT 交换。

  2. 针对其架构验证 EDIFACT 交换,将消息反汇编为 XML,并将消息 XML 放入 MessageBox。

  3. 生成技术确认 (接收消息) 收到的 EDI 交换,并将其丢弃在 MessageBox 中。

  4. 生成功能确认 (接受或拒绝接收的 EDI 交换) ,并将其拖放到 MessageBox 中。

  5. 通过单向 FILE 发送端口选取消息 XML,并组合消息 EDI 交换。

  6. 将 EDI 交换发送到 Contoso 本地文件夹。

  7. 通过单向 FILE 发送端口获取技术确认,并组装交换。

  8. 将技术确认发送到 Fabrikam 本地文件夹。

  9. 通过单向 FILE 发送端口选取功能确认,并组合交换。

  10. 将功能确认发送给 Fabrikam。

此解决方案中的功能

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

  • 该解决方案专为使用 EDIFACT 编码的交换而设计

    注意

    有关如何为 X12 交换创建类似解决方案的说明,请参阅 演练 (X12) :接收 EDI 交换和发送回确认

  • EDI 类型和扩展的验证将在传入交换上执行。

  • 将生成技术确认和功能确认,以返回给交换的发送方。

  • 该解决方案使用传输类型为 FILE 的单向接收位置。

    注意

    您可以使用双向要求响应接收端口和位置来接收消息,但如果这样,接收位置将无法使用 FILE 传输类型。 有关详细信息,请参阅 配置用于接收 EDI 消息的端口和确认

  • 系统将启用 EDI 报告功能,并保存事务集以便从交换状态报告进行查看。

  • 出于测试目的,解决方案使用三个发送端口将 EDIFACT 交换和创建的确认发送到本地文件夹。

    下图显示了此解决方案的结构:

    接收 EDIFACT 交换并发送 ACK

配置和测试演练

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

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

  • 为BizTalk Server创建单向接收端口,以接收来自贸易伙伴的 EDIFACT 交换并生成确认。 此接收位置与 Fabrikam 存放要发送到 Contoso 的 EDIFACT 交换的 file 文件夹相关联。

    注意

    可以使用双向请求响应接收端口和位置来接收消息,但如果这样做,将无法对接收位置使用文件传输类型。

  • 创建一个用于向地 Contoso 文件夹发送 EDI 交换的发送端口,以及一个用于向本地 Fabrikam 文件夹发送技术和功能确认的发送端口。

    注意

    与 X12 确认不同,功能确认和技术确认的消息类型相同。 因此,使用 BTS.MessageType 上下文属性创建的发送端口筛选器会同时筛选确认并将它们传递到同一文件夹。

  • 为 Fabrikam 和 Contoso 创建参与方(贸易合作伙伴)。

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

  • 通过配置要接收的消息和要发送的确认的 EDI 属性,在两个配置文件之间创建协议。

  • 使用测试 EDIFACT 交换测试演练。 对于本演练,可以将以下内容复制粘贴到文本文件中。 此文件的架构为 EFACT_D98A_APERAK.xsd。

    UNA:+,?*'  
    UNB+UNOB:1+7654321:ZZZ+1234567:ZZZ+353501:3023+UNB5'  
    UNG+INVOIC+UNG2.1:ZZZ+UNG3.1:ZZZ+060413:2314+UNG5+UN+D:98B'  
    UNH+UNH1+APERAK:D:98A:UN++13+UNH5.1+UNH6.1+UNH7.1'  
    BGM+1+C10601'  
    DTM+10'  
    FTX+AAA++C10701+C10801'  
    CNT+1:14'  
    RFF+AAA'  
    DTM+10'  
    NAD+AA+C08201+C05801+C08001+C05901'  
    CTA++C05601'  
    COM+C07601:AA'  
    ERC+C90101'  
    FTX+AAA++C10701+C10801'  
    RFF+AAA'  
    FTX+AAA++C10701+C10801'  
    UNT+15+UNH1'  
    UNE+1+UNG5'  
    UNZ+1+UNB5'  
    

配置演练

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

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

    注意

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

  2. 右键单击项目,指向 “添加”,然后单击“ 现有项”。 移动到架构位于 \Program Files (x86) \Microsoft BizTalk Server <VERSION>XSD_Schema\EDI\EDIFACT\D98A 中的文件夹,然后双击架构 (EFACT_D98A_APERAK.xsd) 。

    注意

    如果使用本主题中提供的示例测试消息,则必须使用 EFACT_D98A_APERAK.xsd 架构。

    注意

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

  3. 将程序集密钥文件添加到项目,然后生成并部署程序集。

为 Fabrikam 创建单向接收端口 (,) 接收 EDI 交换
  1. 在 Windows 资源管理器中,创建用于接收交换的本地文件夹。

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

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

  4. 单击 “新建”

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

  6. 浏览到 “接收文件夹 ”文本框的文件夹。 已在此过程的步骤 1 中创建此文件夹。 输入文件掩码,例如 *.edi*.txt

  7. 单击 “确定”

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

  9. 在“接收位置属性”对话框中单击“确定”。 在“接收端口属性”对话框中再次单击“确定”。

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

为 Contoso 创建静态单向发送端口 (,) 发送 EDI 交换
  1. 在 Windows 资源管理器中,创建一个用于接收测试交换的本地文件夹。

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

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

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

  5. 对于 “目标文件夹”,浏览到要接收交换的文件夹。 已在此过程的步骤 1 中创建此文件夹。 对于 “文件掩码”,请输入交换格式,例如 *.edi*.txt

  6. 单击 “确定”

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

  8. 在控制台树中,选择“ 筛选器”。 输入用于订阅 EDI 交换的筛选器。 例如,对于 “属性”,请输入 BTS。MessageType;对于 “运算符”,请输入 ==;对于 “值 ”,请输入交换 http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006#EFACT_D98A_APERAK的架构 。

    注意

    以上筛选器设置可确保将交换(而不是确认)发送到与此发送端口相关联的文件夹。

  9. 单击 “确定”

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

创建静态单向发送端口以发送确认
  1. 在 Windows 资源管理器中,创建要向其发送技术和功能确认的本地文件夹。

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

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

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

  5. 对于 “目标文件夹”,浏览到文件夹以接收两个确认。 已在此过程的步骤 1 中创建此文件夹。 对于 “文件掩码”,请输入交换格式,例如 *.edi*.txt

  6. 单击 “确定”

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

  8. 在控制台树中,选择“ 筛选器”。 输入筛选器以订阅确认。 例如,对于“属性”,请输入 BTS。MessageType;对于“运算符”,请输入 ==;对于“值”,请输入确认的架构 。 http://schemas.microsoft.com/Edi/Edifact#Efact_Contrl_Root

  9. 单击 “确定”

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

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

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

    注意

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

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

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

    注意

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

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

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

    注意

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

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

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

    注意

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

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

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

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

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

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

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

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

  7. Fabrikam-Contoso> 选项卡上执行以下任务。

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

      注意

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

      注意

      如果使用本主题前面提供的示例消息作为测试消息,请将 UNB2.1 设置为 7654321将 UNB2.2 设置为 ZZZ – 相互定义将 UNB3.1 设置为 1234567,将 UNB3.2 设置为 ZZZ – 相互定义

    2. 在“交换设置”部分下的“确认”页上,检查预期收到消息 (CONTRL) , (CONTRL) 确认

    3. 在“交换设置”部分下的“信封”页上,检查应用 UNA 段 (字符串服务建议) 并将 UNG 段 (功能组标头) 。

    4. 在“ 验证 ”页上的 “交换设置” 部分下,确保未选中 “交换控制编号” (UNB5) 选项。

      注意

      清除 交换控制编号 (UNB5) 属性可接收同一消息的多个实例。

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

    6. “本地主机设置” 页上的 “交换设置” 部分下,清除 “路由 ACK 以在请求-响应接收端口上发送管道 ”选项。

      注意

      如果使用双向接收端口来接收交换并返回确认,则检查 Route ACK 在请求-响应接收端口上发送管道

    7. 在“交换设置”部分下的“发送端口”页上,关联将从 Fabrikam 接收交换的发送端口和将从 Contoso 接收确认的发送端口。 在 “发送端口” 网格的“ 名称” 列下,单击一个空单元格,然后从下拉列表中选择为从 Fabrikam 接收 EDI 交换而创建的发送端口。 对为接收技术和功能确认而创建的发送端口重复该步骤。

    8. 在“验证”页上的“事务集设置”部分下,将“EDI 类型验证”保留为选中状态,检查扩展类型验证

    9. 如果使用BizTalk Server随附的标准架构之一,请在“本地主机设置”页上的“事务集设置”部分下,选择要用于处理传入交换的架构的命名空间。 如果使用自定义架构,请在“自定义目标命名空间”网格中输入值,以便BizTalk Server可以使用组和事务集标头值确定命名空间。

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

      使用此选项 要执行此操作
      Default 选择“默认值”。
      对于消息类型 UNH2.1 选择测试消息的消息类型 APERAK
      UNH2.2 输入 EDI 版本 D
      UNH2.3 输入版本号 98A
      UNH2.5 可以将此保留为空。
      目标命名空间 选择 http://schemas.microsoft.com/Edi/Edifact
      UNG1 指定功能组 ID INVOIC
      UNG2.1 输入应用程序发件人标识的值。
      UNG2.1 输入应用程序发送方代码限定符的值,例如 ZZZ
      UNG3.1 输入应用程序接收方标识的值。
      UNG3.2 输入应用程序接收器代码限定符的值,例如 ZZZ
      UNG6 输入控制机构的值。 示例, UN
      UNG7.1 输入消息类型版本号。 示例 D.
      UNG7.2 输入消息类型版本号。 示例 98A
      UNG7.3 可以将此保留为空。
      UNG8 可以将此保留为空。
  8. “Contoso-Fabrikam>”选项卡上执行以下任务。

    注意

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

    注意

    即使确认是同一消息事务的一部分,与应如何生成确认相关的属性也会在 Contoso-Fabrikam> 选项卡中进行配置。这是必需的,因为发送方和接收方限定符的确认上下文属性设置为与 Contoso-Fabrikam> 选项卡中指定的值相反。例如,如果在 Fabrikam-Contoso> 选项卡中将发送方和接收方标识符设置为7654321和1234567,则发送方和接收方上下文属性将设置为1234567并在确认中7654321。 通常,其他单向协议选项卡还会将发送方和接收方标识符分别设置为1234567和7654321。 因此,确认消息将解析为该协议,并且将提取属性设置。 因此,如果希望确认使用不同的元素分隔符,或者希望确认使用 CR LF,请在 Contoso-Fabrikam> 选项卡中指定属性。

    从概念上讲,将从任何单向协议选项卡上提取具有与确认上下文属性中设置的相同发件人和接收方限定符的确认的属性。 但是,为了便于实际使用,你通常会在你创建的交换将解析为的协议的其他单向协议选项卡中设置此属性。

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

      注意

      如果使用本主题前面提供的示例消息作为测试消息,请将 UNB2.1 设置为 1234567将 UNB2.2 设置为 ZZZ – 相互定义将 UNB3.1 设置为 7654321,将 UNB3.2 设置为 ZZZ – 相互定义

  9. 单击“应用”。

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

测试演练

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

测试演练
  1. 在 Windows 资源管理器中,将测试 EDI 交换放置到本地接收文件夹中。

    注意

    对于测试消息,您可以使用本主题前面提供的示例消息。 将消息复制到文本文件,并使用 .txt 扩展名保存文件。 如果使用此消息,则必须部署 EFACT_D98A_APERAK.xsd 架构。 可通过执行 \XSD_Schema\EDI 文件夹中的 MicrosoftEdiXSDTemplates.exe 文件 () 将架构解压缩到默认文件夹中来获取架构。 然后,EFACT_D98A_APERAK.xsd 架构位于 \Program Files (x86) \Microsoft BizTalk Server <VERSION>XSD_Schema\EDI\EDIFACT\D98A 下。

  2. 打开与交换的发送端口关联的文件夹,并验证该文件夹是否包含 EDI 交换。

  3. 打开与确认的发送端口关联的文件夹,并验证该文件夹是否包含技术确认和功能确认。

另请参阅

开发和配置 BizTalk Server EDI 解决方案