Windows Workflow Foundation:按并行顺序保留



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

这些活动派生自 NativeActivity,并使用书签和 System.Threading.Tasks.Task 来执行其工作。

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

现在,我想在整个并行分支的多个位置添加持久活动。

假设我们有两个平行的分支 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  |
因此,换句话说,

我希望看到的行为是,对于每个并行分支,持久应该只适用于它所在的分支。

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

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

因此,整个工作流被保留的事实并不重要。

最新更新