我有一个监控FTP位置的BizTalk接收端口。我希望文件每天至少在该位置到达一次,并且BizTalk可以选择它并启动编排。这部分工作正常。
但是,有时发件人在一天内无法发送邮件,在这种情况下,我希望发送一封电子邮件通知用户有些不对劲。
我可以在BizTalk之外解决这个问题,方法是创建一个日常工作,在我们的数据库中查找已处理的文件,并确保在任何给定的日期中至少有一个。但是,我更倾向于使用已经存在的BizTalk解决方案来“解决”这个问题,而不是部署一个单独的,无关的工作,这将增加维护难题。
如果接收端口没有在给定时间内收到某些内容,BizTalk中是否有任何功能可以让我发送通知?
答案 0 :(得分:2)
简短回答:不是。
您要实现的逻辑需要自定义版本的FTP适配器。取决于你卷起袖子和进入适配器SDK的舒适程度。
如果您希望保留解决方案“Purely BizTalk”,则可以使用绑定到存储过程的SQL接收位置来设置辅助业务流程。此存储过程定期执行,并在过去(业务)日收到的“已处理文件”表中查找记录。如果没有找到,它会编写一条记录并通过SQL Receive Location返回它。这将是您发送电子邮件通知的触发器。
答案 1 :(得分:0)
一个解决方案,虽然不优雅,但是在截止时间之外有一个辅助文件接收位置,并有一个计划窗口。
失败情景:
在此FILE接收位置,您有一条智能/虚拟消息符合与FTP接收相同的模式。智能部分是让消息中的一个字段告诉我们上次从FTP接收文件的时间。剩下的内容是假的。
在您的业务流程中,您可以查看收到文件的位置。如果它是辅助接收位置(使用上下文属性BTS.ReceiveLocationName),则检查此虚拟/智能消息的日期字段,如果它是过去24小时(或类似逻辑),则发送电子邮件通知您未收到该文件从上游FTP进程中还可以将虚拟消息(已接收)的副本保存回辅助FILE接收位置不变。
成功案例:
除了正常处理之外,您还可以将虚拟/智能消息的副本保存到辅助文件接收位置,并在处理从FTP接收位置收到的文件时反映日期时间字段。
正开始:
您在辅助FILE接收位置开始使用虚拟/智能消息,其中过去的日期时间字段值很好(假设我们从未接收过FTP的文件)或昨天的日期(假设我们已成功从FTP接收文件)前一天。)
概述: 您的业务流程有两个触发点。