Workflow Foundation 4,执行工作流的最佳方式

时间:2012-06-20 16:52:27

标签: workflow workflow-foundation-4 workflowservice

在提出问题之前,在你因为有几个类似问题而生气之前,我想解释一下项目要求是什么。你会发现这个问题与其他问题不同。

  • 用户将使用ReHosted WPF应用程序创建工作流程,并将xaml文件上传到我们将提供的Web应用程序。
  • 启动工作流程执行的入口点位于该Web应用程序中。他们可以使用UI或使用自己应用程序中的API函数。
  • 工作流程将长期运行。

我知道托管的不同可能性。

最简单的方法是在ASP.NET Web应用程序中托管,但由于我们不知道用户将上传哪种工作流程,因此IIS AppDomain回收可能会破坏工作流程线程的执行。

WCF工作流服务看起来不错,但用户上传自己的xaml工作流定义会让事情变得更复杂。看起来我们必须创建像核心工作流,公开为WCF服务,并且该工作流将加载和执行内部工作流(xaml客户上传)。在这种情况下,不确定如何将参数传递给内部工作流。

第三个选项,也是最适合我的选项,是在 Windows服务中托管工作流程执行。 Web应用程序和窗口服务之间的通信可以通过MSMQ。这个解决方案的缺点可能是确保web应用程序和赢得服务之间良好沟通的男性代码。

我错过了更好的解决方案吗?如果您需要更多详细信息,请发表评论。

1 个答案:

答案 0 :(得分:3)

我有类似的要求,并与“问题解决者”进行了长时间的讨论。

which one is better architecture for the WF4.0?

现在我的结论是将Workflow开发为IIS上托管的工作流服务。

您可以遵循以下两种方法。

  1. 将工作流程需求划分为较小的活动,它们可以是独立的XAML活动,并创建工作流程拖放工作流服务(xamlx)上的工作流程。在必要时将这些与InArgument和outargument以及相关上下文联系起来。
  2. 在db中创建和存储工作流并动态加载它们。 优秀的链接 - http://blogs.msdn.com/b/appfabric/archive/2011/06/16/how-to-load-wf4-workflow-services-from-a-database-with-iis-appfabric.aspx