BizTalk вручную извлекает файл вместо опроса - PullRequest
1 голос
/ 17 января 2012

Я хотел бы знать, есть ли способ настроить BizTalk на оркестровку, которая не будет постоянно опрашивать папку для файла, а будет проверять файл "по требованию".

Под «по требованию» я подразумеваю, что мне нужно, чтобы BizTalk «ждал» вызова веб-службы (через порт WCF), а затем пошел получить файл в папке FTP и начал оркестровку.

Эточто-то выполнимое?Я читал, что "Динамические порты" могут быть использованы для этого, правда?

Спасибо, Алекс

Ответы [ 3 ]

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

Вы можете динамически создать местоположение приема ФАЙЛА (или FTP) в оркестровке, которая активируется портом получения WCF.

Brian Loesgen blogged простой пример кода, который может быть вызван вашей оркестровкой для создания мест получения. Если имена серверов и папок не меняются от одного вызова к другому, вы можете каждый раз использовать одно и то же место приема и просто активировать / деактивировать его во время выполнения.

Вот еще один вопрос переполнения стека, в котором конкретно рассматривается активация местоположения получения в коде: Есть ли способ автоматизировать включение или выключение местоположения получения BizTalk с помощью кода? Создайте новый проект класса в Visual Studio, добавьте ссылку на Microsoft.BizTalk.ExplorerOM, напишите несколько строк кода, и вы получите свою вспомогательную сборку!

Вот пример из MSDN для создания и настройки местоположения приема HTTP:

private void CreateAndConfigureReceiveLocation()
{
   BtsCatalogExplorer root = new BtsCatalogExplorer();
   try
   {
      root.ConnectionString = "Server=.;Initial Catalog=BizTalkMgmtDb;Integrated Security=SSPI;";

      //First, create a new one way receive port.
      ReceivePort myreceivePort = root.AddNewReceivePort(false);

      //Note that if you dont set the name property for the receieve port, 
      //it will create a new receive location and add it to the receive       //port.
      myreceivePort.Name = "My Receive Port";

      //Create a new receive location and add it to the receive port
      ReceiveLocation myreceiveLocation = myreceivePort.AddNewReceiveLocation();

      foreach(ReceiveHandler handler in root.ReceiveHandlers)
      {
         if(handler.TransportType.Name == "HTTP")
         {
            myreceiveLocation.ReceiveHandler = handler;
            break;
         }
      }

      //Associate a transport protocol and URI with the receive location.
      foreach (ProtocolType protocol in root.ProtocolTypes)
      {
         if(protocol.Name == "HTTP")
         {
            myreceiveLocation.TransportType =  protocol;
            break;
         }
      }

      myreceiveLocation.Address = "/home";
      //Assign the first receive pipeline found to process the message.
      foreach(Pipeline pipeline in root.Pipelines)
      {
         if(pipeline.Type == PipelineType.Receive)
         {
            myreceiveLocation.ReceivePipeline = pipeline;
            break;
         }
      }

      //Enable the receive location.
      myreceiveLocation.Enable = true;
      myreceiveLocation.FragmentMessages = Fragmentation.Yes;//optional property
      myreceiveLocation.ServiceWindowEnabled = false; //optional property

      //Try to commit the changes made so far. If the commit fails, 
      //roll-back all changes.
      root.SaveChanges();
   }
   catch(Exception e)
   {
      root.DiscardChanges();
      throw e;
   }
}
1 голос
/ 17 января 2012

К сожалению, единственное, что BizTalk предоставляет для этого, это так называемое окно обслуживания, которое позволяет планировать места приема для включения и выключения.

Однако это очень ограничительно, с одним окном только на 24-часовой период.Также вы должны знать время заранее.

Динамические порты применяются только для отправки сообщений, а не для их получения.

0 голосов
/ 17 января 2012

Если вы управляете веб-службой каким-либо образом, то вы всегда можете свободно объединить две системы, используя очередь или таблицу базы данных, т.е. изменить веб-службу так, чтобы при выполнении вызова сообщение для BizTalk помещалось в очередь / таблица. Затем подключите вашу оркестровку к той же очереди / таблице, чтобы она извлекала файл «по требованию». Этот сценарий может быть не совсем уместен в вашей ситуации, но это, вероятно, самое близкое, что вы можете получить ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...