本主题介绍 BizTalk Server 中批处理的已知问题。
即使子文档注释设置为“是”,也未执行子文档拆分
症状
尽管 HIPAA 架构中该交换的 subdocument_creation_break 注释设置为“是”,但这个 HIPAA 交换仍未拆分为子文档。
可能的原因
发送方的入站批处理选项设置为“保留交换”。如果是这种情况,HIPAA 文档将不会拆分为子文档,即使 HIPAA 架构中的subdocument_creation_break批注设置为“是”。
subdocument_break注释被设置为“是”,但subdocument_creation_break注释未被设置为“是”。
解决方案
在发送方的 EDI 属性对话框中的 验证与 ACK 生成设置页面上,将 入站批处理选项属性设置为将交换拆分为事务集 - 在出错时挂起事务集或 将交换拆分为事务集 - 在出错时挂起交换。
除非subdocument_creation_break批注设置为“是”,否则 HIPAA 文档将不会拆分为子文档。
如果在激活批处理业务流程时更改了批处理配置设置,则批处理验证可能会失败
如果在批处理协调正在处理批处理时更改批处理配置设置,则新的配置设置不会应用于该批处理。 这可能会导致发送管道中的验证错误。
这些设置位于“EDI 属性”对话框的“Batches”页中。
若要解决此问题,请重启与批处理业务流程关联的主机实例(s)。 这将导致立即更改批处理配置设置。
BatchControlMessageRecvLoc 接收位置只能在 32 位计算机上或在 64 位计算机上的 WOW 中运行
SQL 适配器仅适用于 32 位计算机或在 64 位计算机上的 WOW64 模拟器下运行时。 因此,BatchControlMessageRecvLoc 接收位置(由安装程序安装并使用 SQL 适配器)将仅在 32 位计算机上或在 64 位计算机上的 WOW 下运行时工作。 批处理需要此接收位置。
在 64 位计算机上的 WOW 下运行 BatchControlMessageRecvLoc 接收位置时,应在其他主机上运行批处理业务流程。 如果它们与接收位置在同一主机上运行,批处理业务流程也会在 WOW 下运行,并且你将失去在 64 位计算机上运行的优势。
可以通过非预期的发送端口领取批次
当批处理编排发布交换时,它会提升两个属性:ToBeBatched = False 和 DestinationPartyName = <PartyName>。 订阅其中一个或两个属性的发送端口可以选取这些批处理的交换信息。 确保配置了发送端口的筛选器,以便发送端口选取要选取的批处理交换。
批元素数量超过批次所需的事务集数时,可能不会触发批次发布。
如果批处理发布条件基于每个组或交换的事务集数,则即使批处理元素计数大于发布批处理所需的事务集数,也可能不会释放批处理。 如果启用确认,并设置批处理筛选器条件以将这些确认添加到批处理,则可能会发生这种情况。 在此实例中,组(或交换)中的批处理元素数将大于每个组的事务集数(或交换)。 在该实例中,如果每个组(或交换)的事务集数小于批量发布所需的数量,则不会释放批处理,但同时批元素数可能大于批量发布所需的事务集数。
单击“开始”时未保存批处理元素
症状
在 Batches 页中为某个群组/用户单击“开始”时,批处理没有收集到任何消息。
可能的原因
单击 “开始 ”的日期时间早于“ 激活 ”部分中输入的日期时间。 因此,编排实例已激活,但没有为批处理收集到任何消息。 有关详细信息,请参阅 配置传出批次。
解决方案
对于遇到此问题的批处理配置,请单击“批处理”页中的 “停止 ”。 将 激活 设置为 “立即启动 ”或输入早于当前时间的日期/时间,然后单击“ 开始”。 当系统提示将 开始日期 时间重置为当前时间时,请单击“ 确定”。 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.DestinationParties 设为参与方 ID 列表,消息将因路由失败而挂起,指出没有订阅者。
可能的原因
在之前的 BizTalk Server 版本中,当消息需要由多个批处理配置处理时,你需要将 EDI.DestinationParties 属性设置为一个以空格分隔的参与方 ID 列表。 路由编排订阅了消息,这些消息具有 EDI.ToBeBatched = True 和 EDI.DestinationParties 属性,并使用 EDI.DestinationParties 属性中包含的参与方 ID 列表为每个 ID 创建消息,然后将这些消息传递给批处理编排。 使用参与方 ID 确定批处理是因为每个参与方配置只能有一个批处理配置。
在 BizTalk Server 中,每个参与方可以有多个批处理配置,因此不再足以仅使用参与方 ID 来确定要使用的批处理配置。 若要指示必须由多个批处理配置处理消息,该消息必须具有 EDI。BatchIDs 属性设置为应将消息发送到的批 ID 的空格分隔列表。
注释
当处理仅通过 EDI.DestinationPartyId 属性标记为单个方 ID 的消息时,消息将由升级批处理业务流程进行处理。 有关详细信息,请参阅 组装批处理 EDI 交换。
解决方案
升级自定义管道组件,以设置 EDI.BatchIDs 属性,而不是 EDI.DestinationParties。 在 EDI 属性的批次设置页面可以找到每个参与方的特定批次 ID。
注释
如果使用 BatchMarker 管道组件标记消息进行批处理,则不会发生此问题。
批处理筛选器刷新等待时间已硬编码为 15 分钟
修改批处理筛选条件时,更改生效前需要 15 分钟。 无法修改此刷新间隔。 若要使筛选器立即生效,请重启 BizTalk Server 主机进程。
RoutingOrchestration 在报告未捕获的异常后暂停
现象
处理目标为多个批处理配置的文档时,您可能会遇到在 XLANG/s 的应用程序事件日志中的错误,因为未处理的异常导致 Microsoft.BizTalk.Edi.RoutingOrchestration.BatchRoutingService 失败。
可能的原因
当 RoutingOrchestration 尝试向 BatchingOrchestration 发送消息且未启动 BatchingOrchestration 实例时,可能会出现此错误。
解决方案
在提交要批处理的文档之前,请确保 BatchingOrchestration 实例正在运行。
许多活动批处理可能会导致 BizTalkMsgBoxDb 日志文件变得很大
现象
启动多个批处理后,你可能会注意到 BizTalk 消息框数据库的事务日志(BizTalkMsgBoxDb)已发展到较大大小。
可能的原因
如果由于发布条件触发了大量批处理,使得批处理发布之间的间隔很短(例如,计划每分钟发布一次的批处理),则可能会出现此问题。
启动批处理时创建的批处理业务流程实例是一个长时间运行的进程,在释放批处理后会保存到数据库。 每次编排持久化时,事务日志都会由于涉及持久化的事务而增长。
注释
批处理编排在持久化期间将事务日志增大约 30kb。
解决方案
若要解决此问题,请修改发布条件以增加批发布之间的时间。 有关详细信息,请参阅配置批处理(X12)。