【问题标题】:Executing BizTalk Flat file disassembler pipeline inside orchestration在业务流程中执行 BizTalk 平面文件反汇编程序管道
【发布时间】:2017-09-22 14:03:14
【问题描述】:

我对 BizTalk 并不陌生,但是这种情况有点新。我在 BizTalk 编排中遇到以下情况,

  1. 我从其他来源获得平面文件的路径。
  2. 我想在编排中加载此文件并通过执行管道将其反汇编。

我搜索了很多,但几乎每个人都谈到在编排内部的管道中提供 XML 文档。

我也获得了以下链接,但到目前为止我无法获得有效的解决方案,

Calling FlatFile pipeline inside orchestration

4 Different ways to process an XLANGMessage

当我实施上述链接中给出的解决方案时,我收到错误“No Disassemble stage components can identify the data.

由于性能限制,我也不想创建动态接收位置。

以下是我目前的代码,

  1. 在流中加载文件内容

  2. 按照链接 2 中的建议创建一个 CustomBTXMessage 实例。

  3. 如下加载流

    customBTXMessage = new CustomBTXMessage("MyMessageName",

    Service.RootService.XlangStore.OwningContext); customBTXMessage.AddPart(string.Empty, "Body");

    customBTXMessage[0].LoadFrom(ms);

    return customBTXMessage.GetMessageWrapperForUserCode();

我认为这种情况在 BizTalk 世界中并不新鲜。任何做过这件事的人都必须能够快速帮助我。

【问题讨论】:

  • A) 为什么不能使用文件适配器读取文件? B) 您是否必须在发现路径的同一编排中处理文件?
  • 所以文件可以在多个文件夹中,如果想开始一个新的编排,那么我将不得不为每个路径创建新的文件接收位置。是的,我必须在同一个编排中处理该文件。
  • 在平面文件(内容或文件名)和您所在的流程之间是否存在关联?
  • 那么...为什么不能创建多个接收位置?这没有问题。那么,跟随 Pieter Vandenheede,有没有办法关联文件?必须有一个共同的价值。
  • 所以情况是我从源获取文件路径列表,然后必须按顺序处理这些平面文件。不能同时处理两个文件。一种解决方案可能是在第一次编排中下载所有文件,然后创建另一个与接收端口名称相关的 orch。在这种情况下,我将不得不在一侧的接收端口中创建多个接收位置。但是创建两个 orch 的问题是我必须退出 BizTalk,然后启动或读取我在第一个 orch 中已经拥有的所有其他变量。

标签: biztalk biztalk-2013


【解决方案1】:

这就是我会做的……或者至少先尝试一下。

  1. 为您获得的每种平面文件类型创建一个接收端口和接收位置。
  2. 获取文件列表。
  3. 在编排中,将文件移动到适当的接收位置。
  4. Flat File Disassembler 像往常一样在端口管道中的文件。
  5. 将文件接收到编排中,有序交付端口绑定到步骤 1 中的接收端口。
  6. 循环接收文件,检查 BTS.LastInterchagneMessage。
  7. 如果为真,则退出该循环并返回到第 3 步。

【讨论】:

  • 感谢 Johns,我会采用这种方法,以防明天我无法找到解决方案。
  • @Prasoon 解决方案也...?为清楚起见,我会避免读取编排中的文件,尽管这是可能的。它只是更复杂,更不像“BizTalk 方式”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多