【问题标题】:Workflow Foundation and backward compatibility with long running instances工作流基础和与长期运行实例的向后兼容性
【发布时间】:2011-04-28 22:46:17
【问题描述】:

我最近加入了一个使用 Workflow Foundation 4.0 对业务流程进行建模的项目。

我们有一个设计工具,以便客户的顾问可以自定义工作流程定义。我们还将工作流实例与定义一起保留。工作流程可以运行很长时间(例如几个月或可能几年)。

我的问题是我们如何管理每个版本的向后兼容性,因为我们不一定知道进行了哪些自定义以及哪些遗留工作流仍在进行中?我们正在从 XAML 加载,但即使是对工作流定义的看似微小的更改也会阻止它们加载。迁移脚本是我最初的想法,但考虑到 WF 工作流程的复杂性,这似乎并非易事。

【问题讨论】:

    标签: workflow versioning workflow-foundation-4


    【解决方案1】:

    首先,XOML 是 3.0; WF4 直接使用 XAML。

    执行此操作有两种选择。这取决于您是否需要升级正在进行的长时间运行的工作流,或者是否要更新工作流并将其用于所有新实例,同时保持当前实例在先前版本上运行。让我们将这两个选项称为 upgrademultiversion 策略。

    关于多版本
    我目前正在这样做。本质上,您必须在 AppDomain 中隔离同一工作流的每个不同版本。从 xaml 反序列化或创建类型的 new 实例是同一件事——它们都会导致程序集被加载到当前 AppDomain 中。如果 v1 的工作流是在程序集 A.1 中定义的,而工作流的 v2 是在程序集 A.2 中定义的,如果不小心,可能会遇到绑定问题。在其自己的 AppDomain 中隔离每个版本有助于减少发生这种情况的机会。

    重新升级
    目前不支持此功能,但计划在(近期)将来的版本中包含此功能。 Ron Jacobs gave a presentation at PDC10 last October 详细介绍 WF4 期货。演示文稿中提到了三件事(我记得)——破坏构建的元数据错误、状态机以及在执行期间为工作流提供升级路径。我可以告诉你,状态机是在最近的Platform Update 中发布的,并且我被告知 metadata-error-breaks-the-build 功能也即将推出。我认为升级路径功能也将很快推出。

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      相关资源
      最近更新 更多