4

我有一个简单的业务工作流程,具有以下条件

  1. 用户需要使用设计器更改工作流程本身
  2. 工作流程是一个长时间的rinning工作流程,所以会被序列化

有没有办法自动执行不同工作流程序集的版本控制任务?

4

3 回答 3

3

不同工作流程序集的版本控制不是一项简单的任务,并且有很多复杂性。在这里,您可以找到一系列与此相关的帖子。

于 2008-09-22T13:39:08.807 回答
2

您可以在自己的应用程序中重新托管 WF 设计器,以让最终用户更改工作流程。当您托管设计师时,您几乎可以控制他们可以做什么。例如,您可以阻止他们删除或禁用活动,只允许他们在工作流的预定义区域中添加特定的新活动。最好的方法是将这些工作流保存为 XOML 文件并以此方式启动它们。这确实意味着您不能将代码添加到工作流本身,但您可以自由定义从 SequentialWorkflowActivity(或状态等效项)派生的工作流基类并将其用作工作流基类。这允许您添加代码和属性。例如,您仍然可以添加 CodeActivity,但需要链接到基类中的代码。

工作流程序列化或所谓的脱水与正在运行的工作流程一起使用,以将它们保存到磁盘。这使用标准的 .NET 二进制序列化,并且由于工作流的长期运行性质,可能会很棘手。但是,一旦您知道要寻找什么,就没什么大不了的。有关一系列博客文章的开头,请参阅http://msmvps.com/blogs/theproblemsolver/archive/2008/09/10/versioning-long-running-workfows.aspx 。

不确定您是否需要它,但也可以更改已经执行的工作流程。这使用 WorkflowChanges 对象。有关更多详细信息,请参见此处http://wiki.windowsworkflowfoundation.eu/default.aspx/WF/RuntimeModificationOfWorkflows.html

于 2008-09-22T16:44:27.877 回答
0

这是另一篇关于工作流版本控制的文章:

http://www.adefwebserver.com/DotNetNukeHELP/Workflow/VacationRequest3.htm

基本上,您可以在以下情况下对使用程序集的工作流进行版本化:

  • 与工作流一起使用的任何程序集都必须是强命名的。
  • 如果程序集使用接口,它也必须是强命名的并放置在单独的程序集中。
  • web.config 中的一个条目可以指示asp.net 在哪里可以找到正确的程序集。
于 2008-10-12T13:13:31.063 回答