使用Microsoft WF序列化版本化工作流

时间:2008-09-22 12:48:00

标签: serialization workflow versioning workflow-foundation

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

  1. 用户需要使用desinger
  2. 更改工作流程本身
  3. 工作流程是一个很长的工作流程,所以它将被序列化
  4. 有没有办法自动化版本化不同工作流程程序集的任务?

3 个答案:

答案 0 :(得分:3)

不同工作流程程序集的版本控制并非易事,而且有很多复杂因素。 Here你可以找到一系列与此完全相符的帖子。

答案 1 :(得分: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

答案 2 :(得分:0)

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

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

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

  • 与工作流程一起使用的任何程序集 必须坚强命名。
  • 如果是集会 使用界面它也必须强大 命名并单独放置 部件。
  • web.config中的条目 可以指示asp.net在哪里找到 适当的组装。