我有一个客户端删除XML和.FINISHED文件的场景。一旦完成编写XML文件,客户端就会创建.FINISHED文件。两个文件都有相同的名称。如你所见,我无法在.FINISHED创建之前开始阅读.XML。将XML复制到目标后,我想从客户端位置删除这两个文件。
这看起来很典型,但我认为SFTP和SSO已经使它成为非典型问题。
我正在开发BizTalk 2009上使用/ n软件SFTP Adapter for BizTalk with SSO进行身份验证。
备注:
我必须使用SFTP,因为我无法使用FTP协议。
我有一些Google搜索和试用的解决方案,但都是FTP 基于和/或使用相关。
我必须使用SSO来管理凭据。
软件SFTP Adapter提供了使用SSO的功能,它在正常情况下工作正常,我必须在不等待.FINISHED文件的情况下进行读/写。
我使用了以下方法:
相关 - 并行/顺序
花了一些时间后,我意识到我不能像我这样使用Correlation 在开始阅读.XML之前必须等待.FINISHED文件。客户 首先开始编写XML然后完成
当我放弃.XML接收位置选择文件而不等待.FINISHED和Orchestration通过异常取决于 在情况下。
对于这个解决方案,我从以下博客获得了帮助
http://www.paulvanbrenk.com/blog/CategoryView,category,BizTalk.aspx
如果我的理解错误,请纠正我。
使用.Net组件从SFTP位置获取XML文件一次.FINISHED收到:
我认为这是解决方案,但我在从SFTP获取文件时遇到问题 现场。我必须使用SSO进行身份验证,找不到任何.NET 基于SFTP的SFTP解决方案。
对于这个解决方案,我从以下网站获得了帮助:
另一种可能的解决方案是在运行时在Orchestration中更改软件或任何其他SFTP适配器的接收位置或URI,即最初将其设置为.FINISHED一旦收到将其更改为.XML并获取它。
不知道如何实现它,但是在编排中是否可能?
答案 0 :(得分:3)
/ nsoftware SFTP适配器的另一个选项是使用MonitorFileGrowth设置。
这会记录轮询间隔之间的文件大小,并且在文件停止增加之前不会尝试下载文件(因此不再写入文件)。您可以在适配器的Other属性中设置它,如:
MonitorFileGrowth =真
或者,如果您可以控制使用与FileMask不匹配的文件的临时扩展名在服务器上创建文件的进程(因此接收位置不会尝试下载它)也可以。< / p>
或者,如果你想等待像Fabio所说的.FINISHED文件,你可以配置接收位置只查找.FINISHED文件,并且在你的业务流程中收到后,使用发送适配器按照这个下载XML文件文章:http://www.nsoftware.com/kb/showentry.aspx?entry=09170901
答案 1 :(得分:1)
为什么不将接收位置设置为仅激活以.FINISHED结尾的文件。然后编写您的业务流程以获取相应的XML文件 - 这可行吗?