【问题标题】:Is there anyway to test run EDIDisassembler component with pipeline testing tool?有没有用管道测试工具测试运行 EDIDisassembler 组件?
【发布时间】:2016-09-22 04:02:35
【问题描述】:

首先,让我解释一下为什么我需要这样做。

我有一个带有 EDIReceive Pipeline 配置的入站端口。它接收 EDI X12 837I 文件并将这些文件反汇编为 837I 消息。

有一个文件失败,错误描述如下:

以下元素未关闭:ns0:X12_00501_837_I。第 1 行,位置 829925。

看起来传入的文件有一些结构问题。使反汇编程序无法正确生成消息。但错误本身无助于定位问题。此外,没有生成 TA1 和 999 来帮助我们定位问题。

所以我使用Pipeline Component Test Library 创建了一个小控制台应用程序,尝试通过 edidisassembler 管道组件运行此文件,看看是否能找到导致错误的原因。

代码非常简单:

namespace TestEDIDasm
{
    using System;
    using System.IO;
    using Microsoft.BizTalk.Edi.Pipelines;
    using Microsoft.BizTalk.Message.Interop;
    using Winterdom.BizTalk.PipelineTesting;
    using Microsoft.BizTalk.Edi.BatchMarker;

    class Program
    {
        static void Main(string[] args)
        {
            var ediDasmComp = new EdiDisassembler();
            ediDasmComp.UseIsa11AsRepetitionSeparator = true;
            ediDasmComp.XmlSchemaValidation = true;
            var batchMaker = new PartyBatchMarker();
            IBaseMessage testingMessage = MessageHelper.LoadMessage(@"c:\temp\{1C9420EB-5C54-43E5-9D9D-7297DE65B36C}_context.xml");
            ReceivePipelineWrapper testPipelineWrapper = PipelineFactory.CreateEmptyReceivePipeline();
            testPipelineWrapper.AddComponent(ediDasmComp, PipelineStage.Disassemble);
            testPipelineWrapper.AddComponent(batchMaker, PipelineStage.ResolveParty);
            var outputMessages = testPipelineWrapper.Execute(testingMessage);
            if (outputMessages.Count <= 0)
            {
                Console.WriteLine("No output message");
                Console.ReadKey();
                return;
            }
            var msg = outputMessages[0];
            StreamReader sr = new StreamReader(msg.BodyPart.Data);
            Console.WriteLine(sr.ReadToEnd());
            Console.ReadKey();
        }
    }
}

我添加了一些断点,但最终在消息上下文中出现以下错误:

“未找到 X12 服务架构”

显然,EDIDisassembler 组件依赖于其他一些东西来完成它的工作。

现在进入我的问题:

  1. 有没有办法让 EdiDisassembler 在测试中工作 环境?

  2. 如果有任何其他方法可以调试/跟踪反汇编程序组件 处理流水线组件测试库以外的文件?

【问题讨论】:

    标签: biztalk edi biztalk-2013


    【解决方案1】:

    理论上可以,但是您必须复制在流水线执行期间存在的大量引擎上下文。 EDI 组件在编排内部运行时存在问题,因此要求很高。

    您是否尝试过使用后备设置的 Preserve Interchange Pipeline?这与使用 EDI 反汇编程序一样简单。

    【讨论】:

    • 不确定您对“使用备用设置保留交换管道”的意思。您能否提供更多详细信息?
    • 在 EDI Disassembler 上,将 Preserve exchange 设置为 True。
    • 试一试。结果相同。
    • 您查看了 829925 的段吗?您可能必须从 ST 开始数。同样,您可以在 Visual Studio 中针对 Schema 测试 ST...SE。
    • 文件总大小只有60K。所以我相信这个位置是在生成的xml内容中的位置,而不是原始的EDI内容。
    猜你喜欢
    • 2021-04-09
    • 2019-09-04
    • 2011-06-12
    • 2020-12-19
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2018-06-01
    相关资源
    最近更新 更多