2012-03-28 11 views
0

ワークフローサービスがあるとします。A. WF Aに複数のインスタンスが存在することがあります(CanCreateInstanceを使用)。 WF Bとは内容が異なりますが、WF Aと同じ特性があるとします。 WF Aが終了するには、WF-Bを呼び出す必要があります。(動的に決定された) (もちろん、異なる議論があるたびに)。ワークフロー4複数のワークフローサービスを並列に生成(送信および受信)するサービス

擬似ワークフローは次のようになります。

Instance of WF-A: 
    // WF is instantiated 
    // do some activities 
    parallel-foreach (product in Products) 
     Send & Receive to a different instance of WF-B with parameter product 
    // do some activities 
    // WF-A is done 

唯一の問題は、どのような仕組みを実装していますか?

+0

はWF Aは、WFの同じインスタンスを呼び出していますビーチタイム? – scmccart

答えて

0

注意すべき点がいくつがあります。

WF内でサービスを呼び出すには、2つの方法があります。

  • 1つの方法は、1つのサービス(または構成エンドポイント)のアドレスを指定する必要のある、送受信活動スタイルのメッセージングだけでなく、メソッド名(自分の名前を含む)&引数を使用しています。
  • もう1つの方法はサービス参照を使用することです。このようなリファレンスを使用する場合、ビジュアルスタジオは各サービスメソッドに対して専用のアクティビティを作成します。その方法はネイティブな方法であり、WFアクティビティ抽象化を使用します(可能であればその方法を使用してください)。宣言WFサービスを表す.XAMLXファイルは、最終的にはXAMLXに存在するプロジェクトのDLLにバンドルされ、特定のサービスの基準活性、をポイントすること

注意。

注生成されたサービス参照アクティビティが一部のWCF構成クライアントのバインディングを指していることも示します。 WF-AはWF-Bのクライアントであるためです。

したがって、次の操作を行うことができます:

  1. あなたはWF-Aでやりたい - ちょうどサービス参照のアクティビティを使用してWF-Bを使用します。

  2. WF-AのホストはWF-A.XAMLXは、(ホストがそのサービス基準からWF-B活性を有するであろうことを意味する)存在するアセンブリへの参照を持つべきです。つまり、XamlX自体はホストにとって十分ではありません。

  3. (WF-アセンブリで使用したのと同じ名前空間に)、ホストWF-AのにWF-Bにサービス参照を追加のリーディング名前空間を除去することにより、ホストのクライアント構成を変更しますクライアント名の部分(ServiceReferenceではなくIServiceB)。IServiceB)

最後のステップは自分でクライアントバインディングの設定に置き換えることができ、それがサービス参照を使用してはるかに簡単です(あなたも更新することができる)

0

あなたが何を求めているのかわからない - あなたはSequenceアクティビティをParallelForEachアクティビティに入れ、Sequence内で送受信アクティビティを配置できるはずです。

ここParallelForEachを使用する方法の例です:

http://msdn.microsoft.com/en-us/library/dd647810.aspx

関連する問題