您对Windows Workflow Foundation有哪些经验?

时间:2008-09-22 14:26:07

标签: asp.net .net workflow workflow-foundation

我正在评估WF在网络上的业务应用程序中的使用,我很想听听最近这个技术的第一手资料。

我的主要兴趣在于提高项目的可维护性,并在处理经常变化的复杂流程时提高开发人员的工作效率。

我真的很喜欢WF的想法,但是它似乎相对不为人知,而且我发现的许多旧评论都提到它一旦进入它就会非常复杂。

如果它被过度设计到中小型项目无法使用(或不良权衡),那就是我需要知道的事情。

当然,它已经从2006年底开始,所以也许它已经成熟了。如果是这样的话,这是另一条非常有用的信息!

提前致谢!

12 个答案:

答案 0 :(得分:22)

Windows Workflow Foundation是一款非常强大的产品,但仍处于第一版: - (

使用的主要原因包括:

  1. 可视化建模业务需求。
  2. 将业务逻辑与业务规则分离,并将规则外部化为XML文件。
  3. 通过将工作流外部化为XML文件,从您的应用程序中分离业务流程。
  4. 创建长时间运行的进程,如果在一段延长的时间内没有发生任何事情,则可以自动做出反应。例如,发票未付款。
  5. 长时间运行的工作流程的自动持久性,以减少资源使用并允许进程和/或计算机重新启动。
  6. 自动跟踪有助于满足业务需求的工作流程。
  7. WF是一个库/框架,所以大多数时候你需要编写实例化WF运行时的主机。也就是说,使用IIS中托管的WCF是一种可行的解决方案,可以节省大量的工作。然而,WCF / WF耦合并不完美,需要一些认真的工作。有关详细信息,请参阅此处http://msmvps.com/blogs/theproblemsolver/archive/2008/08/06/using-a-transactionscopeactivity-with-a-wcf-receiveactivity.aspx。预计下一版本会有相当多的变化/增强。

    WF(和WCF)是微软推出的许多新东西的核心。在PDC期间你可以期待一些有趣的公告。

    BTW保持多个版本的工作流程运行需要一些工作,但这主要是标准的.NET。我刚从这里开始撰写了一系列有关该主题的博客文章:http://msmvps.com/blogs/theproblemsolver/archive/2008/09/10/versioning-long-running-workfows.aspx

    关于可视化建模业务需求。 理论上,这与意图和实现的分离非常有效。但是在实践中,你会在工作流程上放弃一些额外的活动,纯粹是出于技术原因,这有点挫败了目的,因为你必须告诉业务分析师忽略一半的形状和线条。

答案 1 :(得分:13)

相关问题:When to use Windows Workflow Foundation?我的回答是:

  

你可能只需要任何一个WF   以下是真的:

     
      
  1. 你有一个漫长的过程。
  2.   
  3. 您的流程经常变更。
  4.   
  5. 您需要一个流程的可视化模型。
  6.         

    有关详细信息,请参阅Paul Andrew's   发布:What to use Windows Workflow Foundation for

         

    请不要混淆或关联WF   任何形式的可视化编程。   这是错误的,可能导致非常糟糕   架构/设计决策。

所以,如果你有这样的要求,那么WF是一个很好的候选人。当然它相对复杂,但提到试图解决的问题也很复杂(有时非常复杂)。恕我直言,例如,对附加了事件处理程序的对象进行脱水/再水化非常复杂(当对象不在内存中时可以触发事件)。

我无法判断“中小型项目”的含义,但总的来说,如果您的项目至少有上述列表中的两项要求,那么您可以将WF视为解决方案。< / p>

答案 2 :(得分:10)

我们在大型SharePoint应用程序中使用了WF,我可以说它没问题。它具有很强的功能和灵活性。而且,正如凯文所提到的,一旦你理解了工作流程的基本概念,你就可以用它做任何你想做的事情。

另一方面,它有一些非常严重的问题,例如缺少版本控制,这可能会在将来真正损害您的应用程序。我们被迫部署多达3个相同工作流程的并行版本,名为xxx-v1,xxx-v2和xxx-v3,以保持旧实例运行并让新实例使用更新版本。屁股真正的痛苦。哦,还有一些非直观的概念(相关标记,wtf ??)

答案 3 :(得分:9)

我参与使用工作流程的项目正在进行中。 (来自管理层)的想法是,我们的程序员将编写工作流程活动以及“引擎”和框架。然后非程序员通过将他们自己的工作流程编译成引擎会自动加载的dll来处理所有其他工作。

管理层因为非程序员使用Workflow帮助开发软件的想法而被出售,这几乎完全是浪费时间。我们试图通过这个项目解决的问题相对复杂,我们从一开始就知道软件几乎要经常被修改(其计算依赖于其他公司和政府)。

最终结果是我们无法使Workflow模块足够通用以供其他人使用。所以程序员就是那些被迫使用工作流程的人,并且所有的工作流程都阻碍了我们的工作。

答案 4 :(得分:7)

过去几个月我一直在使用Workflow 4.0,虽然印象非常深刻,但我发现它很难学习。

对于最新版本(.NET 4.0 RC附带),在网络上,任何书籍或没有可用的培训课程中都有下一个没有文档。我只找到了与现已解散的3.0版本相关的文章。即使是MSDN文档也很轻松。

工作流设计师并不像任何方式那样直观,因此学习非常困难。我不得不依赖StackOverflow上一个人的答案(感谢莫里斯的方式!) - 如果没有他的帮助我就会被塞满。

因此,在总结,我认为它有潜力,但你会很疯狂学习它尚未! - 等待更多的培训,文档和书籍,否则你会进入它的盲

答案 5 :(得分:5)

去年,我们完成了与WF的工作申请,现在被用作一个令人难以置信的巨大系统的支柱,一个非常大的银行用于抵押贷款流程。 pe流程有许多步骤,从客户申请到信贷审批。

尽管取得了成功,但在整个过程中存在着许多问题和危机。对于任何规模较小的项目来说,这都不值得。

答案 6 :(得分:4)

我认为MS WF是一个低级工作流库,而不是像K2这样的完全成熟的企业工作流产品。它将使您能够构建启用工作流的应用程序,但其本身不是工作流应用程序。虽然我们不得不围绕它构建我们自己的许多基础架构(pub / sub框架,worlkflow终身经理等),但我在这方面的经验是积极的。许多文档都相当简单,并不包括构建基于MS WF的企业工作流应用程序。

答案 7 :(得分:3)

很难学。非常灵活。不要与最终用户的可视化工具相混淆,仅针对程序员。不确定我是否喜欢依赖属性方法。

答案 8 :(得分:2)

这实际上取决于你想用它做什么。我只使用了一点,但与MetaStorm等更成熟的产品(我在技术上知道它是BPM,但仍有工作流程组件),Process Choriographer和IBM MQ工作流程相比,没有比较。它还不够成熟。另一方面,它是免费的,而其他人则没有,并且可能完成工作。我不知道我是否会对它进行数百万美元的操作,但是对于较小的操作,我会再给它一次。你要面对的真正障碍是它需要改变思维过程。如果您之前没有使用状态系统的开发人员,那可能是一个真正的障碍。

答案 9 :(得分:1)

Brian,我无法回复您的评论,但无论如何,通过版本控制,我的意思是在不破坏已经运行的实例的情况下更改工作流的底层代码,并优雅地将更新应用于现有工作流。我不确定'库存'WF,但至少在SharePoint环境中没有工作流版本的概念,因此必须将新版本部署为完全不同的工作流程,这将成为维护的噩梦。 这与“补液”无关,补液是在某些事件或状态发生变化后将“休眠”工作流程带回活动的过程。这由工作流运行时透明地处理。

答案 10 :(得分:1)

WF已集成到SharePoint(WSS 3.0)中,我为各种SharePoint网站创建了相当多的工作流程,因此我可以讲述我在SharePoint中使用WF的体验。与其他工作流程框架相比,WF得分很高。它很稳定(我没有遇到任何神秘的错误),工作流程设计相当容易(感谢Visual Studio中的工作流程设计人员),您不仅可以使用顺序工作流程,还可以使用状态机工作流程。

当然,这并不完美,开发人员肯定需要一些时间来理解这个概念(即活动模型);但它绝对可用 - 即使是“小任务”。

答案 11 :(得分:0)

从未尝试过WFF,但我记得在阅读this article about WFF by Leon Bambrick,他基本上说整个类型的软件开发工具都是无稽之谈。可能会帮助你决定一种方式。