2012-01-17 7 views
1

BizTalkがオーケストレーションを持つように構成する方法があるかどうかを知りたいのですが、ファイルのフォルダーを常にポーリングしないで "オンデマンド" 。BizTalkが手動でポーリングの代わりにファイルを取得する

「オンデマンド」とは、(WCFポート経由で)Webサービスコールを待機するためにBizTalkが必要であることを意味し、FTPフォルダにファイルを取得してオーケストレーションを開始します。

これは実現可能ですか?私は "ダイナミックポート"がそれに使用できると読んだ、それは本当ですか?これはあなたがオンとオフにする場所を受け取るスケジュールすることを可能にするサービスウィンドウと呼ばれるものがあるため

おかげで、 アレックス

答えて

1

は、残念ながら、唯一のBizTalkが用意されています。

しかし、それは非常に制限されており、24時間ごとに1つのウィンドウしかありません。また、あなたは時間を前もって知る必要があります。

ダイナミックポートはメッセージの送信にのみ適用され、受信には適用されません。

0

Webサービスを何らかの方法で制御する場合、キューまたはデータベーステーブルを使用して2つのシステムを疎結合することができます。つまり、呼び出しが行われるとBizTalk用のメッセージが配置されるようにWebサービスを変更しますキュー/テーブルに格納します。その後、オーケストレーションを同じキュー/テーブルに接続して、オンデマンドでファイルをフェッチします。このシナリオはあなたの状況に完全には適していないかもしれませんが、おそらく最も近いものです。

3

WCF受信ポートによってアクティブ化されたオーケストレーションでFILE(またはFTP)受信場所を動的に作成できます。

Brian Loesgen bloggedオーケストレーションが受信場所を作成するために呼び出すことのできる簡単なコード例です。サーバー名とフォルダー名が1つの呼び出しから次の呼び出しに変更されない場合は、毎回同じ受信場所を使用し、実行時にそれを有効/無効にすることができます。ここで

特にコード内の場所を受ける活性化に対処別のスタックオーバーフローの質問です:Is there a way to automate turning a BizTalk Receive Location on or off through code? は、Visual Studioで新しいクラスのプロジェクトを作成し、Microsoft.BizTalk.ExplorerOMへの参照を追加、数行のコードを書く、とのあなたはあなたのヘルパーアセンブリを持っています!

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; 
    } 
} 

はここで受信場所をHTTPを作成および設定するには、サンプルfrom MSDNです

関連する問題