EDI 批处理的已知问题

本主题介绍BizTalk Server中批处理的已知问题。

即使子文档批注设置为“是”,也不会执行子文档拆分

症状

即使该交换的 HIPAA 架构中的subdocument_creation_break注释设置为“是”,HIPAA 交换也不会拆分为子文档。

可能的原因

  • 发送方的入站批处理选项已设置为“保留交换”。如果是这样,即使 HIPAA 架构中的subdocument_creation_break注释设置为“是”,HIPAA 文档也不会拆分为子文档。

  • subdocument_break批注设置为“是”,但subdocument_creation_break批注未设置为“是”。

    解决方法

  • 在发送方的“EDI 属性”对话框的“验证和确认生成设置”页中,将“入站批处理”选项属性设置为“拆分交换为事务集”-“错误时挂起事务集”或“拆分交换为事务集”-“出错时暂停交换”。

  • 除非将subdocument_creation_break批注设置为“是”,否则 HIPAA 文档不会拆分为子文档。

如果在批处理业务流程处于激活状态时更改批配置设置,批处理验证可能会失败

如果在批处理业务流程处理批的过程中更改批的配置设置,则新配置设置不会应用于该批。 这会导致发送管道中产生验证错误。

这些设置位于“EDI 属性”对话框的“批处理”页。

要解决此问题,请重新启动与批处理业务流程关联的主机实例。 这会导致立即应用批配置设置。

BatchControlMessageRecvLoc 接收位置只能在 32 位计算机或带有 WOW 环境的 64 位计算机上运行

SQL 适配器只能在 32 位计算机上运行,或者在 64 位计算机上的 WOW64 仿真程序下运行。 因此,安装程序安装的使用 SQL 适配器的 BatchControlMessageRecvLoc 接收位置将只能在 32 位计算机上运行,或者在 64 位计算机上的 WOW64 仿真程序下运行。 此接收位置是批处理所必需的。

如果在 64 位计算机上的 WOW 下运行 BatchControlMessageRecvLoc 接收位置,则应在其他主机中运行批处理业务流程。 如果运行批处理业务流程的主机与运行接收位置的主机相同,则该批处理业务流程也将在 WOW 下运行,这样您将失去在 64 位计算机上运行所具有的优势。

意外发送端口可以提取批处理

批处理业务流程发布交换时,它会提升两个属性:ToBeBatched = False 和 DestinationPartyName = <PartyName>。 订阅以上任意一个或两个属性的发送端口都可以提取这些批处理交换。 请确保配置发送端口的筛选器,使该发送端口仅提取应提取的批处理交换。

批元素计数大于批处理所需的事务集数目时可能不会提示批处理的发布

如果批处理的发布条件基于每组或每个交换的事务集数目,即使批元素计数大于发布批处理所需的事务集数目,也可能不会发布此批处理。 当启用确认并将批处理筛选条件设置为向批处理添加此确认时,则可能出现此问题。 在这种情况下,组(或交换)中的批元素数目将大于每组(或交换)的事务集数目。 在上述情况中,如果每组(或每个交换)的事务集数目小于发布批处理所需的数目,则不会发布批处理;但同时,批元素数目可能大于发布批处理所需的事务集数目。

单击“开始”后未保存任何批元素

症状

在参与方的“批处理”页中单击“ 开始” 时,不会为该批收集任何消息。

可能的原因

单击 “开始”的 日期时间早于 在“激活 ”部分中输入的日期时间。 因此,业务流程实例已激活,但未为批处理收集任何消息。 有关详细信息,请参阅 配置传出批处理

解决方法

对于遇到此问题的批处理配置,单击“批处理”页中的“ 停止 ”。 将 “激活 ”设置为 “立即开始” 或输入早于当前时间的日期时间,然后单击“ 开始”。 当系统提示将 “开始日期时间” 重置为当前时间时,单击“ 确定”。 此时 BizTalk Server 将开始为批处理收集消息。

EDIFACT 批处理中的字节数可能取决于使用的字符集

一些字符在某些 EDIFACT 字符集中可能是双字节字符,而在其他 EDIFACT 字符集中则可能是单字节字符。 鉴于以上原因,在您根据交换中的字符数设置批的发布条件时,相应交换中的字节数可能会因使用的字符集而不同。

字符“”<和“&”必须以批信封中的编码形式表示

BizTalk Server在创建批处理 EDI 交换的信封字段时,不支持以下字符的文字形式:“”<和“&”。

如果在传出批处理交换的信封字段中按原义使用上述任一字符,当 EdiSend 管道用于序列化交换时可能会导致消息挂起。

如果需要在批处理的信封字段中使用上述字符之一,以 BizTalk 管理员身份配置信封字段时,您可以使用下表中已编码的相应值:

字符 编码
< <
& &

如果使用上述编码格式之一,当 BizTalk Server 验证字段是否满足在 BizTalk Server 管理控制台的合作伙伴协议管理器 (PAM) 屏幕中的长度限制时,以该编码格式表示的每个字符都将计为一个单独字符。 例如,即使编码“”<表示批处理的 EDI 交换中的单个字符“<”,BizTalk Server在验证特定字段的长度限制时会将其计为四个字符。 此问题仅适用于 PAM,而不适用于 EDI 组装器。

执行升级批处理业务流程期间出现异常

症状

当使用在传入文档中设置 EDI.DestinationPartyId 属性的自定义管道组件时,您可能会接收到应用程序事件日志中的错误,指出执行升级批处理业务流程期间发生了异常。

可能的原因

如果 ErrorMessage = “找不到批处理”,则此错误表示升级批处理业务流程无法成功识别传入文档的批处理。

解决方法

升级批处理业务流程使用 EDI.DestinationPartyId 来查找参与方名称。 然后,业务流程使用参与方名称 EDI 构造字符串。EncodingType 和字符串“Default”,然后查找具有匹配批名称的批处理配置。 如果不存在具有此名称的批处理配置,则会将此错误记录到应用程序事件日志中,并且业务流程实例将挂起。

注意

例如,如果参与方名称是 Contoso 和 EDI。EncodingType 为 X12,业务流程将查找名为“ContosoX12Default”的批处理。

若要解决此问题,请确保存在一个批,其名称将与升级批处理业务流程构造的字符串匹配。

使用 EDI 标记的消息。ToBeBatched = True 和 EDI。DestinationParties 已挂起

现象

使用自定义管道组件通过设置 EDI 标记要批处理的消息时。ToBeBatched = True 和 EDI。DestinationParts 到参与方 ID 列表,消息将暂停,并显示路由失败,指出没有订阅服务器。

可能的原因

在以前版本的 BizTalk Server中,当消息应由多个批处理配置处理时,需要设置 EDI。以空格分隔的群 ID 列表的 DestinationParties 属性。 路由业务流程订阅具有 EDI.ToBeBatched = True 和 EDI.DestinationParties 属性的消息,会使用包含在 EDI.DestinationParties 属性中的参与方 ID 列表为每个 ID 创建消息,然后将消息传递到批处理业务流程。 使用参与方 ID 确定批处理是因为每个参与方配置只能有一个批处理配置。

在BizTalk Server中,每一方可以有多个批处理配置,因此仅使用 pary ID 来确定要使用的批处理配置已不再足够。 若要指示消息必须由多个批处理配置处理,该消息必须具有 EDI。BatchIDs 属性设置为消息应发送到的批 ID 的空格分隔列表。

注意

使用 EDI 处理仅使用单方 ID 标记的消息时。DestinationPartyId 属性,消息将由升级批处理业务流程处理。 有关详细信息,请参阅 组装批处理 EDI 交换

解决方法

升级自定义管道组件,以便其设置 EDI.BatchIDs 属性,而非 EDI.DestinationParties。 可以在每一方 EDI 属性的 Batches 设置页上找到特定批次的批 ID。

注意

如果使用 BatchMarker 管道组件标记消息进行批处理,则不会出现此问题。

批量筛选器刷新超时硬编码为十五分钟

修改批处理筛选条件时,更改需要 15 分钟才能生效。 此刷新时间间隔不能修改。 若要使筛选器立即生效,请重新启动 BizTalk Server 主机进程。

RoutingOrchestration 在报告未捕获异常后暂停

现象

处理发往多个批处理配置的文档时,可能会从 XLANG/s 收到应用程序事件日志中的错误,开始提示 Microsoft.BizTalk.Edi.RoutingOrchestration.BatchRoutingService 因未捕获的异常而失败。

可能的原因

当 RoutingOrchestration 尝试将消息发送到 BatchingOrchestration 且 BatchingOrchestration 实例未启动时,可能会发生此错误。

解决方法

在提交要批处理的文档之前,请确保 BatchingOrchestration 实例正在运行。

许多活动批处理可能会导致 BizTalkMsgBoxDb 日志文件增长较大

现象

启动多个批后,你可能会注意到 BizTalk 消息框数据库 (BizTalkMsgBoxDb) 的事务日志已增长到较大大小。

可能的原因

如果大量批处理以发布条件启动,导致批发布 (之间的间隔较短,例如,计划每分钟发布一次的批) ,则可能会出现此问题。

启动批处理时创建的批处理业务流程实例是一个长时间运行的进程,在释放批处理后会持久保存到数据库。 每次业务流程持久保存时,事务日志都会因持久性所涉及的事务而增长。

注意

在暂留过程中,批处理业务流程会将事务日志增大约 30kb。

解决方法

若要解决此问题,请将发行条件修改为增加批处理发布之间的时间。 有关详细信息,请参阅 配置批处理 (X12)

另请参阅

配置 EDI 确认
处理传入批
对传出 EDI 消息进行批处理
配置 EDI 批