运行WF 4.0工作流的动态更新

时间:2010-12-17 10:12:45

标签: .net c#-4.0 workflow workflow-foundation workflow-foundation-4

在我的项目中有一个要求我应该实现一个选项,用户可以动态地改变工作流程,即在运行时。更具体地说,如果工作流程通过一组活动,则说活动A,B和C.然后,用户应该可以选择更改流程,例如,他们可以直接从A-> C跳过B.而不是从A-> B-> C跳过。这种流程的变化应该在运行时发生。

有超过3项活动(上面提到的A,B,C)活动可能达到20-30,用户应该可以选择去任何活动,或者你可以说那个用户应该有一个在运行时编辑流的选项。

请帮我解决这个问题,Windows工作基础(WF)中是否提供此选项。

提前致谢

3 个答案:

答案 0 :(得分:2)

目前使用WF4您无法更改正在运行的工作流实例的工作流定义。因此,要么必须在启动之前更改工作流,要么自己使用工作流中的条件逻辑对工作流进行可能的更改。

下一版本的工作流程将支持对正在运行的工作流程的更改,但何时可用将是未知的。不要指望它很快就会出现。

答案 1 :(得分:1)

以工作流可以访问的方式捕获用户决策,然后使用ifElse Activity决定是否执行活动B.

这只是正常的工作流建模,除非我完全理解你的问题。

编辑:作为对您的评论的回应,可能有可能提出该要求的解决方案,但这将非常难看,因为它违背了工作流引擎的目的。

如果您将用户购物篮等工作流视为可以选择任何喜欢的用户,那么它就不再是工作流程了。至少应该有一些连贯的步骤,没有任何意义可以破坏。那么将它们放入单独的工作流程并让用户决定下一步要做哪个工作流程是否有意义呢?

答案 2 :(得分:0)

我会考虑为每个活动创建1个仿函数并将活动存储在列表中执行。此列表在运行时被修改。 “核心”只需要解析列表并执行仿函数。