BizTalk无编排拆分多表头平面文件至多个文件的技术问询
无Orchestration拆分多表头平面文件问题解决
针对你遇到的「有正确Flat File Schema但管道测试没拆分出文件」的问题,直接按以下步骤排查修复:
1. 先查Flat File Schema的拆分逻辑配置
- 根节点必须把
Child Order设为Infix,Child Delimiter填行分隔符的十六进制值(比如CRLF是0x0D 0x0A),Child Delimiter Type选Hex - 必须把每个H表头+对应D明细做成可重复的组:
- 根节点下建
TransactionGroup节点,Max Occurs设为unbounded TransactionGroup下嵌套HeaderRecord(对应H行,Max Occurs=1)和DetailRecord(对应D行,Max Occurs=unbounded)- 给
TransactionGroup加起始标识符:Tag Identifier填H,Tag Offset设为0(因为H在每行最开头)
- 根节点下建
- 重新用示例文件验证Schema,确保能解析出多个
TransactionGroup节点,这是拆分的前提
2. 配置接收管道的核心设置
- 用
XMLReceive管道或者自定义管道,必须添加Flat File Disassembler组件 - 给Disassembler指定你的Flat File Schema,确保
Document Spec Name选对 - 重点:打开Disassembler的
Recoverable Interchange Processing开关,把Batch Processing设为False——这是无Orchestration拆分单个消息的关键,没开这个的话,整个文件会被当成一个消息输出 - 检查管道里的其他组件,别加会拦截消息的自定义组件
3. 测试与排障
- 用BizTalk Pipeline Test Tool跑管道,看输出是不是多个独立消息
- 要是还不行,开BizTalk跟踪看日志:
- 查Flat File Disassembler有没有识别到多个
TransactionGroup - 看有没有Schema不匹配、分隔符不对的错误
- 查Flat File Disassembler有没有识别到多个
- 确认测试文件的行分隔符和Schema里设的一致,比如有些文件用LF(0x0A)而不是CRLF,这会导致拆分失败
常见踩坑点
- 根节点
Child Order没设成Infix:Disassembler没法识别行边界 TransactionGroup没加起始标识符:没法区分不同的H表头组- 没开
Recoverable Interchange Processing:这是无编排拆分的核心开关,必开
内容的提问来源于stack exchange,提问作者sukra
相关产品推荐
相关产品推荐

