BizTalk 2013文件接收非事件的位置触发器

时间:2016-02-24 10:29:10

标签: biztalk biztalk-2013

我有一个文件接收位置,计划在一天中的特定时间运行。如果接收位置无法在该位置找到任何文件,我需要触发警报或邮件。

我知道我可以创建自定义组件,或者我可以使用BizTalk 360这样做。但我正在寻找一些开箱即用的BizTalk功能。

4 个答案:

答案 0 :(得分:3)

BizTalk不擅长触发非事件。非事件是没有发生的事情,但仍然代表某种情况。

你能做的是:

  • 将触发接收位置的任何文件的文件名插入自定义SQL表中。
  • 每天一次(计划任务适配器或通过存储过程进行轮询),您将在SQL表上触发查询,该查询只会在当天没有记录的情况下创建一条消息。

还要考虑清理:该方法将要求您删除任何现有记录。

另一个选项可能是使用自定义c#程序的计划任务,只有在没有输入文件等情况下才能创建文件...

答案 1 :(得分:3)

顺序车队解决方案应该有效,但我会关注一些事情:

  1. 当其他订阅者关闭时,它可能会消耗好消息,这可能会导致您错过您通常认为的订阅失败
  2. 长时间运行的业务流程可能难以管理和维护。听起来这个人整天都在跑。
  3. 我喜欢彼得的建议,但我会稍微扩展一下:

    创建一个表格,如下所示:

    CREATE TABLE tFileEventNotify
    (
        ReceiveLocationName VARCHAR(255) NOT NULL primary key,
        LastPickupDate DATETIME NOT NULL,
        NextExpectedDate DATETIME NOT NULL,
        NotificationSent bit null,
        CONSTRAINT CK_FileEventNotify_Dates CHECK(NextExpectedDate > LastPickupDate)
    );
    

    您还可以为此创建一个过程,每次在该位置(从自定义管道或业务流程)接收文件时都应调用该过程,例如

    CREATE PROCEDURE usp_Mrg_FileEventNotify
    (
        @rlocName varchar(255),
        @LastPickupDate DATETIME,
        @NextPickupDate DATETIME
    )
    AS
    BEGIN
      IF EXISTS(SELECT 1 FROM tFileEventNotify WHERE ReceiveLocationName = @rlocName)
      BEGIN
        UPDATE tFileEventNotify SET LastPickupDate = @LastPickupDate, NextPickupDate = @NextPickupDate WHERE ReceiveLocationName = @rlocName;
      END
      ELSE
      BEGIN
        INSERT tFileEventNotify (ReceiveLocationName, LastPickupDate, NextPickupDate) VALUES (@rlocName, @LastPickupDate, @NextPickupDate);
      END
    END
    

    然后您可以创建一个具有以下Polling Data Available语句的轮询端口:

    SELECT 1 FROM tFileEventNotify WHERE NextPickupDate < GETDATE() AND NotificationSent <> 1
    

    并编写一个程序,从该表生成一条消息,然后您可以映射到通过SMTP端口发送的电子邮件(或您想要使用的任何其他通知机制)。您甚至可以在tFileEventNotifyEmailAddressSubjectLine添加列。您可能需要在表格中添加一个字段,以指示是否已发送通知,具体取决于方式大,你做轮询间隔。如果你想在每次忽略那部分时发送它。

答案 2 :(得分:2)

这是一个开箱即用的解决方案: BizTalk Server: Detecting a Missing Message

基本上,它是一个Orchestration,它侦听来自该接收端口的任何消息并重置计时器。如果计时器到期,它可以做一些事情。

答案 3 :(得分:2)

一种选择是设置BAM警报,以便在白天没有收到文件时触发。

相关问题