【问题标题】:Windows Workflow Foundation: Persist in Parallel SequencesWindows Workflow Foundation:坚持并行序列
【发布时间】:2013-09-04 13:10:51
【问题描述】:

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

这些活动是从 NativeActivity 派生的,并使用书签和 System.Threading.Tasks.Task 来执行它们的工作。

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

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

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

星号表示正在运行:

|   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  |

因此,简而言之,我希望看到的行为是,对于每个并行分支,persist 应该只应用于它所在的分支。

由于我认为整个工作流程是持续的,我假设这不是它的工作方式,但我很想被证明是错误的! 那么,我可以实现这种行为吗?

【问题讨论】:

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


    【解决方案1】:

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

    因此,整个工作流程得到持久化这一事实并不重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      相关资源
      最近更新 更多