使用 ReplicatorActivity 活动

使用 ReplicatorActivity 活动可以在运行时创建单个活动的任意多个实例。 每个 ReplicatorActivity 活动都只能包含一个子活动,但该子活动可以是复合活动。

默认情况下,ReplicatorActivity 活动在所有子活动都已完成时完成。 您可以使用 UntilCondition 属性,在子活动实例完成之前停止执行 ReplicatorActivity。 有关条件的更多信息,请参见在工作流中使用条件

备注

如果所有子活动都已完成,而 UntilCondition 属性等于 false,则 ReplicatorActivity 活动将挂起。 在 ReplicatorActivity 活动以这种方式挂起后,您可以使用工作流更改,向 ReplicatorActivity 活动添加将导致 UntilCondition 等于 true 的子活动。

ReplicatorActivity 需要两条关键信息:

  • ExecutionType 属性必须设置为 Sequential 或 Parallel。 ExecutionType 属性指示复制的子活动实例是以并行方式还是顺序方式执行。如果是以并行方式执行,则将在 ReplicatorActivity 活动执行时创建所有实例;如果是以顺序方式执行,则将依次执行子活动的每个实例,即:前一个实例完成后再执行下一个实例。

  • 必须填充 InitialChildData 集合属性,以便为子活动的每个复制实例提供数据。

可以实现在 ReplicatorActivity 开始执行之前引发的 Initialized 处理程序,以填充 InitialChildData 集合属性并设置 ExecutionType

还可以指定使以下事件可以与 ReplicatorActivity 活动一起使用的处理程序:

  • ChildInitialized 事件在每次初始化子活动的实例时都会引发,它将 InitialChildData 集合的该项中的数据传递给要初始化的子活动的实际实例。ReplicatorChildEventArgs 包含该处理程序的事件参数。

  • 每当子活动的实例完成时都会引发的 ChildCompleted 事件。ReplicatorChildEventArgs 包含此处理程序的事件参数。

  • ReplicatorActivity 完成后引发的 Completed 事件。

当子活动执行多次时,会为每次迭代创建子活动的一个单独实例。 这样便可以单独执行实例(对于 ConditionedActivityGroup 活动,可能会以并行方式执行实例)。 因此,活动树(称为模板)中的活动的定义永远不会执行,并总是处于 Initialized 状态。 对模板的运行实例的访问由作为模板父级的复合活动提供。 例如,对于 ReplicatorActivity 活动,可能存在多个活动的实例,从而使得 ReplicatorActivity.DynamicActivities 返回子活动的运行实例的集合。

有关更多信息,请参见 Windows Workflow Foundation 类库参考中的 System.Workflow.Activities 命名空间的 ReplicatorActivity 类。

有关演示如何使用 ReplicatorActivity 活动的代码示例,请参见Using Replicator

请参见

参考

ReplicatorActivity
ReplicatorChildEventArgs

概念

在工作流中使用条件
“规则和条件”概述

其他资源

Replicator Sample
Windows Workflow Foundation 活动

Footer image

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。