BizTalk NSoftware SFTP - чтение первого файла только при получении второго файла - PullRequest
1 голос
/ 30 января 2012

У меня есть сценарий, когда клиент удаляет XML и файл .FINISHED.Клиент создает файл .FINISHED после завершения записи XML-файла.Оба файла имеют одинаковые имена.Как видите, я не могу начать читать .XML до того, как будет создан .FINISHED.После того, как XML скопирован в целевой файл, мне нравится удалять оба файла из клиентского местоположения.

Это выглядит очень типичной проблемой, но я думаю, что SFTP и SSO сделали ее нетипичной.

Я занимаюсь разработкойBizTalk 2009 с использованием / n программного адаптера SFTP для BizTalk с SSO для аутентификации.

Примечания:

  • Я должен использовать SFTP, так как не могу использовать протокол FTP.

  • Есть некоторые решения, которые я пробовал и использовал Googled, но все они основаны на FTP и / или используют корреляцию.

  • Я должен использовать единый вход для управления учетными данными.

  • Программный SFTP-адаптер предоставляет функцию использования единого входа и работает нормально при нормальном сценарии.где я должен читать / писать без ожидания .FINISHED файла.

Я использовал следующие подходы:

Корреляция - Параллельный / Последовательный

  • Потратив некоторое время, я понял, что не могу использовать корреляцию, так как мне приходится ждать файла .FINISHED, прежде чем начать читать .XML.Клиент начинает сначала писать XML, а затем ЗАВЕРШАЕТСЯ

  • Когда я отбрасываю местоположение приема .XML, выбирает файл, не ожидая .FINISHED и Orchestration через исключение в зависимости от ситуации.

    Для этого решения я получил помощь из следующего блога

    http://www.paulvanbrenk.com/blog/CategoryView,category,BizTalk.aspx

Пожалуйста, исправьте меня, если я неправильно понимаю.

Использование .NetКомпонент для получения XML-файла из местоположения SFTP один раз. Получено НЕОБХОДИМО:

  • Я вижу это как решение, но у меня возникают проблемы с получением файла с сайта SFTP.Я должен использовать единый вход для проверки подлинности и не могу найти какое-либо SFTP-решение на основе .NET с использованием единого входа.

    Для этого решения я получил помощь со следующего сайта:

    http://social.msdn.microsoft.com/Forums/en-AU/biztalkgeneral/thread/29938f2f-ba45-4f5d-bb4c-3dfab4c9bd3e

Другое возможное решение состоит в том, чтобы изменить программное обеспечение или другое место получения UTP-адаптера или URI в Orchestration во время выполнения, то есть изначально установить его на .FINISHED после получения, изменить его на .XML и получить его.

Не знаю, как этого добиться, но возможно ли это в оркестровке ??

Ответы [ 2 ]

3 голосов
/ 31 января 2012

Другой вариант с SFTP-адаптером / nsoftware - использовать параметр MonitorFileGrowth.

Записывает размер файла между интервалами опроса и не будет пытаться загрузить файл, пока он не перестанет увеличиваться (поэтому файл больше не записывается).Вы можете установить его в свойстве Other адаптера, например:

MonitorFileGrowth = true

Или если у вас есть контроль над процессом, который создает файлы на сервере с помощьювременное расширение для файла, который не соответствует вашей FileMask (поэтому местоположение приема не будет пытаться загрузить его) также будет работать.

Или если вы хотите дождаться файла .FINISHED, как сказал ФабиоВы можете настроить местоположение получения так, чтобы он искал только INFINISHED-файлы, и после получения в вашей оркестрации используйте адаптер отправки для загрузки XML-файла согласно этой статье: http://www.nsoftware.com/kb/showentry.aspx?entry=09170901

1 голос
/ 30 января 2012

Почему бы вам не указать место получения для активации только для файлов, которые заканчиваются на .FINISHED. Затем напишите свою оркестровку, чтобы пойти и получить соответствующий XML-файл - это может сработать?

...