Windows Workflow Foundation:坚持并行序列

时间:2013-09-04 13:10:51

标签: .net workflow workflow-foundation-4 workflow-foundation

我有一个包含并行活动的Windows工作流基础工作流。在这个并行活动中,有一系列活动可能需要相当长的时间(序列和序列内的活动)。

这些活动源自NativeActivity并使用书签和System.Threading.Tasks.Task来执行他们的工作。

通常,并行运行它们可以正常工作。

现在我想在并行分支的几个地方添加Persist-activities。

让我们假设我们有两个平行的分支A,B,活动1,2在A中,3,4在B中。

星号符号表示正在运行某些内容:

|   Branch A   |   Branch B   |  
|##############|##############|  
|  Activity 1  |  Activity 3  |  
|              |  PERSIST     |  
| *Activity 2* |  Activity 4  |  
|  PERSIST     |              |  
|  Activity 5  | *Activity 6* | 

A已经关闭1,并且正在执行2,它还没有持久化。 B已关闭3,持续,关闭4,现在正在执行6。 服务器死了

现在,如果我重新启动服务器并恢复WF实例,我希望分支A再次从1开始,B从4开始。

|   Branch A   |   Branch B   |
|##############|##############|
| *Activity 1* |  Activity 3  |
|              |  PERSIST     |
|  Activity 2  | *Activity 4* |
|  PERSIST     |              |
|  Activity 5  |  Activity 6  |

所以换句话说,我希望看到的行为是,对于每个并行分支,持久化应该只应用于它所在的分支。

由于我认为整个工作流程都是持久的,我假设这不是它的工作原理,但我希望被证明是错误的! 那么,我可以实现这种行为吗?

1 个答案:

答案 0 :(得分:0)

你的基本前提是错误的......工作流程只会处理其中一个任务,它不能处理2和6.在任务2完成之前它不会处理6,并且该分支变为空闲(在坚持点。)

因此整个工作流程保持不变的事实并不重要。