消息收集示例(BizTalk Server 示例)
消息收集示例演示如何将 X12 文档和 EDIFACT 文档的交换标头附加到事务集消息中。
本示例的用途
本示例演示如何将针对 EDIFACT 的 UNA、UNB 和 UNG 标头及针对 X12 的 ISA 标头附加到事务集。 具体而言,本示例执行下列操作:
将测试消息放入 \Message Enrichment\In 文件夹时,接收端口将提取和处理该消息,然后将其放入 MessageBox 中。
MessageEnrichmentOrchestration 将从 MessageBox 中提取该测试消息,因为该业务流程基于在其接收形状上设置的筛选器表达式订阅消息。
业务流程从消息的上下文属性中读取交换标头。
注意
因为 UNA 和 UNG 标头在 EDIFACT 消息中不是必需部分,所以在消息的上下文属性中可能会缺失此类标头。
业务流程将交换标头和消息正文写入单个新消息中。
业务流程将在 ReceivePortNameCorrelationType 相关类型中设置的其他属性升级到该消息中。 利用这些属性,业务流程的用户可以选择订阅时所需属性的列表。 这些属性是在构造消息形状中编写的。 并非所有写入原始消息的上下文属性都将写入新消息。
业务流程将新消息放入 MessageBox 中。
发送端口提取新消息,并通过 FILE 适配器将其发送至 \Message Enrichment\Out 文件夹。
本示例所在的位置
此示例位于 BizTalk Server 安装文件夹中:\Program Files (x86) \Microsoft BizTalk Server <VERSION>SDK\Samples\EDI\Message Enrichment。
下表显示了本示例中的文件及其用途说明:
文件 | 说明 |
---|---|
Cleanup.bat | 取消部署示例方案。 为了成功完成此操作,绝对不能存在活动的业务流程实例。 否则,操作将失败。 |
MessageEnrichment.sln | 包含 MessageEnrichment 和 MessageEnrichmentLibrary 项目。 |
Setup.bat | 部署包含接收端口、发送端口和业务流程的示例方案。 |
EDIFACT_example.edi | 一条 EDIFACT 输入消息。 |
X12_example.edi | 一条 X12 输入消息。 |
MessageEnrichment.btproj | 包含 MessageEnrichment 业务流程和架构的项目。 |
MessageEnrichmentBindings.xml | 包含业务流程、端口和参与方的绑定的文件。 |
MessageEnrichmentOrchestration.odx | 将标头附加到消息的业务流程。 |
MessageEnrichmentOrchestration.odx.cs | 将标头附加到消息的业务流程代码。 |
EFACT_D98B_APERAK.xsd | 输入消息的 EDIFACT 架构。 |
Enriched_EFACT_D98B_APERAK.xsd | 输出消息的 EDIFACT 架构。 |
X12_00401_864.xsd | 输入消息的 X12 架构。 |
Enriched_X12_00401_864.xsd | 输出消息的 X12 架构。 |
Headers.xsd | 要添加到输入消息的标头的架构。 |
MessageEnrichmentLibrary.csproj | 包含 Headers.cs、OrchestrationUtilities.cs 和 ParseHeaders.cs 文件的项目。 |
Headers.cs | 包括表示标头数据的类。 |
OrchestrationUtilities.cs | 包含业务流程使用的实用工具方法。 |
ParseHeaders.cs | 包含新消息中使用的 UNA 默认值。 这些值取自 ParseHeaders.cs 中的 SerializeEDIFACTHeaders 方法。 |
如何使用本示例
可将本示例作为演示将交换标头附加到 EDI 事务集消息所需操作的可运行示例。
生成和初始化此示例
若要生成并初始化消息收集示例,您需要为本示例生成并部署 BizTalk 项目、配置接收端口和位置,并配置两个不同的发送端口。
为本示例生成并部署 BizTalk 项目
使用 Notepad.Exe 打开 \Program Files (x86) \Microsoft BizTalk Server <VERSION>SDK\Samples\EDI\MessageEnrichment\
MessageEnrichment\properties\AssemblyInfo.cs 并在文件底部添加以下行:[assembly: Microsoft.XLANGs.BaseTypes.BizTalkAssembly(typeof(Microsoft.BizTalk.XLANGs.BTXEngine.BTXService))]
保存修改后的 AssemblyInfo.cs 文件,然后退出记事本。
在命令窗口中,转至以下文件夹:
\Program Files (x86) \Microsoft BizTalk Server <VERSION>SDK\Samples\EDI\Message Enrichment
运行 Setup.bat,它执行以下操作:
在) 中创建接收 (,并在 \MessageEnrichment 文件夹中发送 (此示例) 文件夹。
将密钥对写入 MessageEnrichmentLibrary\testkey.snk。
生成并部署 MessageEnrichmentLibrary.btproj 项目。
生成并部署 MessageEnrichment.btproj 项目。
读取 MessageEnrichmentBindings.xml 中的绑定信息。
注意
此项目的绑定需要将 BizTalk 主机标记为受信任的身份验证。 为了将此绑定与不受信任的主机一起使用,请修改 MessageEnrichmentBindings.xml 并将 HostTrusted=”true” 条目更改为 HostTrusted=”false”。
更新业务流程绑定。
更新发送端口、发送端口组和接收端口。
更新参与方和登记。
启动发送端口。
启用接收位置。
登记并启动业务流程。
BizTalk Server 现在便可使用本示例。
运行本示例
使用以下过程运行消息收集示例。
运行本示例的步骤
将 \MessageEnrichment\Instances 文件夹中的 EDIFACT_examples.edi 文件复制到 \MessageEnrichment\In 文件夹中。
验证 EDIFACT_examples.edi 文件是否已从 \MessageEnrichment\In 文件夹中消失,并显示在 \MessageEnrichment\Out 文件夹中。
打开 \MessageEnrichment\Out 文件夹中的文件。 验证该文件是否为 \MessageEnrichment\Instances 文件夹中的 EDIFACT_examples.edi 文件的 XML 表示形式,并且包含与 EDIFACT_examples.edi 文件相同的内容。不过与之不同的是,该输出文件包含 EDIFACT UNA、UNB 和 UNG 标头。
针对 \MessageEnrichment\Instances 文件夹中的 X12_examples.edi 文件,请重复步骤 1 至 2。
打开 \MessageEnrichment\Out 文件夹中的新文件。 验证该文件是否为 \MessageEnrichment\Instances 文件夹中的 X12_examples.edi 文件的 XML 表示形式,并且包含与 X12_examples.edi 文件相同的内容。不过与之不同的是,该输出文件包含 X12 ISA 标头。
本示例中使用的类或方法
无