等待 ACK 文件

Wait for an ACK file

我请求仅在存在特定文件时执行 orch,例如:

  1. 我的客户将加载多个 XML 文件。
  2. 加载所有 XML 个文件后,它们将创建一个名为 "OK.CTRL" 的特殊文件,以指出 XML 文件复制完成。
  3. 我的 orch 应该在接收端口上侦听此 "OK.CTRL" 文件创建。当存在时,它应该开始处理所有 XML 个文件。

我一直在尝试以多种方式做到这一点:

  1. 有 2 个接收端口,第一个已激活,第二个未激活,但随后出现错误:"you must specify at least one already-initialized correlation set for a non-activation receive that is on a non-selfcorrelating port"。
  2. 与1相同,但都已激活,然后出现另一个错误:"an activatable receive must be the first executable statement in a service"。
  3. 使用关联集,但随后出现错误"in a sequential convoy the ports must be identical",但我需要 2 个不同的端口,因为文件掩码不同。

我也尝试了几种组合,但结果总是上述 3 种组合之一。

关于如何让它工作的任何想法?

为什么不简单地在编排(激活接收)上只有一个接收端口来侦听 OK.CTRL 消息(接收位置上的文件掩码)。

然后在编排内部使用C#访问文件系统并加载你需要的文件。

不过,我可能会使用 SQL 服务器 table 和存储过程来解决这个问题。然后只需将每条消息存储到 table 中,并有一个存储过程,当 OK.CTRL 收到 table 时,您可以从 BizTalk 轮询 returns 为真。然后 BizTalk 可以提取所有消息并转发它们。这种方法的好处是您根本不需要编排。

您仍然可以使用相同的端口但接收位置不同的顺序车队。然后根据消息类型决定编排内的动作。

您之后对 XML 文件所做的操作可能是您应该采用哪种方法的决定性因素。