0

假设存在工作流服务 A。WF A 可能有多个实例(使用 CanCreateInstance)。现在,假设存在 WF B,它(在内容上)不同,但与 WF A 具有相同的特性。为了使 WF A 完成,它必须调用 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

不确定您在问什么-您应该能够将 Sequence 活动放入 ParallelForEach 活动中,并将发送和接收活动放入 Sequence 中。

下面是一个关于如何使用 ParallelForEach 的示例:

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

于 2012-03-28T22:06:20.223 回答
0

有几点需要注意;

有两种方法可以在 WF 中调用服务。

  • 一种方法是使用 Send-Receive 活动样式消息传递,其中需要指定服务(或配置端点)的地址以及方法名称和参数(包括它们的名称)。
  • 另一种方法是使用服务引用。使用这样的引用时,Visual Studio 将为每个服务方法创建一个专用的活动。这种方式似乎是一种原生方式,并使用 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 程序集中使用的名称空间相同),通过删除合同名称中客户端部分中的前导名称空间来更改主机的客户端配置( IServiceB 而不是 ServiceReference.IServiceB)

最后一步可以替换为自己配置客户端绑定,但使用服务引用更容易(您也可以更新)

于 2012-03-30T12:31:10.853 回答