【问题标题】:Implementing GoTo in WF 4在 WF 4 中实现 GoTo
【发布时间】:2023-03-25 16:40:02
【问题描述】:

鉴于在 AppFabric 下部署的 SQL Server 持久化 .NET 4 Windows Workflow Foundation (WF) 工作流服务,我如何将服务从一个活动“跳转”到另一个活动?工作流程可以是顺序或流程图。

用例是管理性的。长时间运行的工作流在接收活动 A 处处于空闲状态。一些客户端错误地调用服务,将其推进到接收活动 B。工作流(可以嵌入到更大的工作流中)没有返回 A 的路径。客户端调用支持并请求将工作流程设置回 A。

我们已经看到这种情况在生产中经常发生。我们现有的 BPM 系统支持“goto”调用。这在 WF 4 中如何实现?

编辑:如果上述方法不实用,那么从“快乐路径”中实现“失败”活动的良好设计模式是什么,该活动可以分支到有限数量的已知活动之一基于变量的先前活动(从这里重新开始)?目标是避免创建包含多行代码的不可读的工作流程。

编辑 2:我们决定不走这条路,但有一个更新的 MSDN article 正在这样做。

编辑 3: 我们再次改变主意,采用上面链接的 MSDN 文章中的 Leon Welicki 的解决方案。 :)

【问题讨论】:

    标签: wcf workflow-foundation workflow-foundation-4 appfabric


    【解决方案1】:

    这不能开箱即用。

    如果它可以完成,这将意味着打开工作流状态,存储在 4 个二进制列中,并将这些状态更改为之前的状态,因为知道可以执行任意数量的活动,并且可以更改甚至删除任何变量因为它们不再在范围内。

    假设我要尝试这个,我会尝试在每次工作流空闲时从 SQL 数据库中复制状态,这样您就可以得到一个包含工作流所有先前空闲状态的堆栈。然后在稍后的某个时间,当工作流空闲且不在内存中时,您可以将当前状态替换为以前的状态并重新加载工作流。我从来没有尝试过,所以不知道它是否会起作用并且看到很多潜在的问题,比如数据库事务已经竞争或电子邮件已经发送但第二次执行。

    【讨论】:

    • 我害怕那个。您对解决方法有什么建议(即使只是部分解决方案)?
    • 我对复制工作流状态记录的建议是我能想到的最佳解决方法。对不起,我没有更好的答案:-(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多