2011-04-27 42 views
2

我最近加入了一个使用Workflow Foundation 4.0来为业务流程建模的项目。Workflow Foundation以及与长时间运行的实例的向后兼容性

我们有一个设计工具,以便客户的顾问可以自定义工作流定义。我们还坚持工作流实例和定义。工作流程可能需要很长时间(例如几个月或几年)。

我的问题是我们如何管理每个版本的向后兼容性,因为我们不一定知道定制是什么以及哪些传统工作流仍在运行?我们正在从XAML加载,但即使对工作流定义进行了小幅改动,也无法加载。迁移脚本是我最初的想法,但考虑到WF工作流程的复杂性,它似乎不是微不足道的。

回答

3

首先,XOML是3.0; WF4使用直线上的XAML。

这样做有两种选择。这取决于是否需要升级正在运行的长时间运行的工作流程,或者是否需要更新工作流程并将其用于所有新实例,同时保持当前实例在先前版本上运行。让我们打电话给这两个选项升级多版本策略。

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

重新升级
这个目前不被支持,但也有包括本在(近)未来的发行计划。 Ron Jacobs gave a presentation at PDC10 last October详细介绍了WF4期货。在演示文稿中提到了三件事(我记得) - 元数据错误破坏了构建,状态机,并在执行过程中为工作流提供了升级途径。我可以告诉你,状态机是在最近发布的Platform Update中发布的,而且我被告知元数据错误打破构建功能也即将推出。我假设升级路径功能也即将推出。

+0

感谢您的XOML/XAML校正。据此编辑。 – 2011-04-27 23:13:27