0

ワークフローサービスAが存在するとします。WFAには複数のインスタンスがある場合があります(CanCreateInstanceを使用)。ここで、(内容は)異なるが、WF Aと同じ特性を持つWFBが存在するとします。WFAを終了するには、WF-Bをn回(動的に決定)呼び出す必要があります(毎回もちろん、別の議論)。

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

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

唯一の質問は、そのようなスキームをどのように実装するかということです。

4

2 に答える 2

0

何を求めているのかわからない-シーケンスアクティビティをParallelForEachアクティビティに入れ、送信および受信アクティビティをシーケンス内に入れることができるはずです。

ParallelForEachの使用方法の例を次に示します。

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

于 2012-03-28T22:06:20.223 に答える
0

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

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

  • 1つの方法は、送受信アクティビティスタイルのメッセージングを使用することです。このメッセージングでは、サービス(または構成エンドポイント)のアドレスと、メソッド名と引数(名前を含む)を指定する必要があります。
  • もう1つの方法は、サービス参照を使用することです。このような参照を使用する場合、VisualStudioはサービスメソッドごとに専用のアクティビティを作成します。その方法はネイティブな方法のようであり、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-AのホストのWF-Bに(WF-Aアセンブリで使用されるのと同じ名前空間を持つ)サービス参照を追加し、コントラクト名のクライアントセクションの先頭の名前空間を削除してホストのクライアント構成を変更します( ServiceReference.IServiceBの代わりにIServiceB)

最後のステップは、クライアントバインディングを自分で構成することで置き換えることができますが、サービス参照を使用する方がはるかに簡単です(更新することもできます)。

于 2012-03-30T12:31:10.853 に答える