BizTalk NSoftware SFTP - читать первый файл только при получении второго файла

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

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

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

Примечания:

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

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

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

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

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

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

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

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

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

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

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

Использование компонента .Net для получения XML-файла из местоположения SFTP после получения .FINISHED:

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

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

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

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

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


person Bob_Arch    schedule 30.01.2012    source источник


Ответы (2)


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

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

MonitorFileGrowth = true

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

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

person Spencer    schedule 30.01.2012
comment
Спасибо. Я не могу использовать MonitorFileGrowth из-за требований клиента. Не могли бы вы подробно объяснить, как я могу использовать подход, который вы, ребята, указали в этой статье: nsoftware.com/kb/showentry.aspx?entry=09170901 Я имею в виду, должен ли я создать два порта приема, один активный для .FINISHED, а другой неактивный для .XML? Когда и где я буду устанавливать следующие свойства? перед получением файла .XML на второй порт приема в форме «Создать сообщение» ?: Сообщение_2 (nsoftware.BizTalk.SFTP.RemoteFile) = * .txt; Будем очень признательны за подробный ответ. - person Bob_Arch; 01.02.2012

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

person Fabio    schedule 30.01.2012
comment
Фабио, это второй вариант, который я попробовал и упомянул. Для этого мне нужно написать компонент .NET с использованием протокола SFTP и SSO для аутентификации. Не могли бы вы помочь мне сделать это? Любой сторонний компонент или библиотека, позволяющие загружать файлы SFTP с использованием единого входа. ИЛИ. любая работа. Спасибо - person Bob_Arch; 30.01.2012
comment
Вы сказали, что ваш адаптер SFTP предоставляет возможность использовать SSO, зачем вам компонент .NET? Все, что вам нужно, это установить маску для файла, который вы хотите загрузить, например * .FINISHED - ваш адаптер не поддерживает это? - person Fabio; 30.01.2012
comment
Да, поддерживает. Позвольте мне перефразировать свой сценарий. Когда клиент начинает писать XML-файл, я не могу читать. После завершения копирования создается файл .FINISHED. Я создал место приема для .FINISHED. В моем Orchstrtn я проверяю, получен ли файл .FINISHED, а затем получаю файл .XML. Но я не знаю, как получить .XML с помощью SFTP и SSO. Должен ли я получить его через пользовательский / сторонний .Net compnt или SFTP Adptr? Я думаю, мне нужен .Net cmpnt для чтения файла .XML, поскольку Adptr может читать только через порт приема. Вы сказали: «Тогда напишите свою оркестровку, чтобы получить соответствующий XML-файл». Что это значит? - person Bob_Arch; 30.01.2012
comment
Можно ли организовать оркестровку с двумя портами приема, первый для файла .FINISHED, а второй для XML? Не уверен, что это сработает, вам нужно будет указать имя файла для второго порта во время выполнения, например используя продвигаемую недвижимость. Вы пробовали это? - person Fabio; 30.01.2012
comment
Как сказал Спенсер, вы можете использовать адаптер отправки для загрузки файла по запросу (не получать, как я предлагал выше). Вам нужно будет указать продвигаемое свойство nsoftware.BizTalk.SFTP.RemoteFile, чтобы указать имя файла, соответствующего файлу .FINISHED, который активировал экземпляр оркестрации. Надеюсь, это ясно, получайте удовольствие! - person Fabio; 31.01.2012
comment
Спасибо, Фабио, но я не знаю, как использовать / создать порт ответа запроса в оркестровке, которая позволит мне загрузить файл XML? Получу ли я файл в Orch. и мне нужно отправить в порт отправки? Пожалуйста, дополните. С Уважением - person Bob_Arch; 01.02.2012
comment
This и это может помочь ... - person Fabio; 01.02.2012