您对Windows Workflow Foundation有什么经验?

我正在评估WF在networking业务应用程序中的使用情况,我很想听听最近关于这项技术的第一手资料。

我的主要兴趣在于提高项目的可维护性,并且在处理频繁变化的复杂stream程时提高开发人员的生产力。

我真的很喜欢WF的想法,但它似乎是相对未知的,我曾经提到的许多旧的评论提到,一旦你进入它是非常复杂的。

如果它被过度devise,以至于它对于中小型项目来说是无法使用的(或者是一个不好的折衷),那我就需要知道这一点。

当然,自2006年年底以来,它已经成熟了。 如果是这样,这是另一个信息,这将是非常有益的!

提前致谢!

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

使用的主要原因包括:

  1. 对业务需求进行可视化build模
  2. 将业务逻辑与业务规则分开,并将规则外化为XML文件。
  3. 通过将工作stream程外部化为XML文件,从您的应用程序分离业务stream程。
  4. 创build长时间运行的进程,如果在一段延长的时间内没有发生任何事情,可以自动进行反应。 例如发票没有被支付。
  5. 长时间运行的工作stream程的自动持久性,以保持资源使用状态,并允许进程和/或机器重新启动。
  6. 自动跟踪帮助业务需求的工作stream程。

WF来作为一个库/框架,所以大多数时候你需要编写实例化WF运行时的主机。 这就是说,使用WCF托pipe在IIS中是一个可行的解决scheme,并节省了大量的工作。 但是WCF / WF耦合不够完美,需要一些认真的工作。 有关更多详细信息,请参阅http://msmvps.com/blogs/theproblemsolver/archive/2008/08/06/using-a-transactionscopeactivity-with-a-wcf-receiveactivity.aspx 。 在下一个版本中会有不less变化/改进。

WF(和WCF)对于来自微软的许多新东西来说是相当重要的。 您可以期待在PDC期间一些有趣的通知。

顺便说一句,保持一个工作stream程的多个版本需要一点工作,但主要是标准的.NET。 我刚从这里开始就这个主题做了一系列的博客文章: http : //msmvps.com/blogs/theproblemsolver/archive/2008/09/10/versioning-long-running-workfows.aspx

关于视觉build模业务需求。 从理论上讲,这种分离意图和实施的方式很好。 然而在实践中,纯粹出于技术原因,您会在工作stream程上放弃一些额外的活动,并且这样做会使目标失败,因为您必须告诉业务分析师忽略一半的形状和线条。

相关问题: 何时使用Windows Workflow Foundation? 我的答案在那里:

只有满足以下任一条件,才可能需要WF:

  1. 你有一个长期运行的过程。
  2. 你有一个经常变化的过程。
  3. 你需要一个过程的视觉模型。

有关更多详细信息,请参阅Paul Andrew的文章: 如何使用Windows Workflow Foundation ?

请不要将WF与任何types的可视化编程混淆或联系起来。 这是错误的,并可能导致非常糟糕的架构/devise决策。

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

我无法判断“中小型项目”是什么意思,但总的来说,如果你的项目至less有两个要求,那么你可以把WF看作一个解决scheme。

我们已经在一个大型的SharePoint应用程序中使用了WF,我可以说没关系。 它有很多的力量和灵活性。 而且正如凯文所说,一旦你理解了工作stream的基本概念,你可以用它做任何你想做的事情。

另一方面,它有一些非常严重的问题,比如缺乏版本控制,这些问题在未来可能会严重影响您的应用程序。 我们不得不部署最多3个名为xxx-v1,xxx-v2和xxx-v3的同一工作stream程的并行版本,以保持旧实例的运行并使新实例使用更新后的版本。 在屁股真正的痛苦。 哦,还有一些非直观的概念(相关令牌,wtf ??)

我们参与了使用工作stream程的一个项目。 这个想法(来自pipe理层)是我们程序员会把工作stream活动和“引擎”和框架一起编写出来。 然后,非程序员将通过将他们自己的工作stream编译到引擎将自动加载的dll中来处理所有剩下的问题。

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

最终的结果是,我们无法使Workflow模块足够通用以供其他人使用。 所以程序员是那些被迫使用工作stream的人,所有的工作stream都是按照我们的方式进行的。

过去几个月来我一直在使用Workflow 4.0,虽然大多数人都印象深刻,但我发现学习起来非常困难。

对于最新版本(与.NET 4.0 RC一起提供),在networking上没有任何文档或任何培训课程可用。 我只find有关现在停用的3.0版本的文章。 即使是MSDN文档也很轻松。

工作streamdevise人员不像任何方式那么直观,所以学习非常困难。 我不得不依靠StackOverflow上的一个人的答案(感谢Maurice!) – 我会在没有他的帮助下塞满。

所以总的来说,我认为它有潜力,但是你还是会非常生气 – 等待更多的培训,文件和书籍,否则你将会盲目地进入它!

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

虽然取得了成功,但一直存在诸多问题和危机。 对于任何规模较小的项目来说,这都不值得。

我认为MS WF是一个低级别的工作stream程库,而不是完全成熟的企业工作stream产品,如K2。 它将使您能够构build一个支持工作stream的应用程序,但本身并不是一个工作stream应用程序。 虽然我们不得不围绕自己的基础架构(pub / sub框架,worlflow终身pipe理器等)构build自己的基础架构,但我以这种能力对其进行了试验。 许多文档都相当简单,不包括基于MS WF构build企业工作stream应用程序。

很难学习。 非常灵活。 不要与最终用户的可视化工具混淆,只能用于程序员。 不知道我是否喜欢依赖属性方法。

这真的取决于你想用它做什么。 我只用了一点,但是与MetaStorm(我知道它是一个BPM,但仍然有一个工作stream程组件),Process Choriographer和IBM MQ工作stream程等更成熟的产品相比,没有任何比较。 这还不够成熟。 另一方面,在其他人不在的情况下是免费的,可以完成工作。 我不知道我是否会投入数百万美元的资金,但是如果投资额度较小,我会再投入一次。 你将面临的真正障碍是它需要的思考过程的变化。 如果你没有开发人员,那么在这之前可能是一个真正的障碍。

布赖恩,我不能回复您的评论,但无论如何,通过版本控制我的意思是改变工作stream程的底层代码,而不破坏已经运行的实例,并优雅地应用更新到现有的工作stream程。 我不确定“股票”的WF,但至less在SharePoint环境中没有工作stream版本的概念,所以新版本必须部署为完全不同的工作stream程,这成为维护的一个噩梦。 这与“补液”无关,补液是在某种事件或状态改变之后,将“hibernate”工作stream程带回活动的过程。 这是由工作stream运行时透明地处理的。

WF ist集成到SharePoint(WSS 3.0)中,并且我为不同的SharePoint网站创build了不less工作stream程,所以我可以告诉我有关SharePoint中WF的经验。 与其他工作stream框架相比,WF得分较高。 它是稳定的(我没有经历过任何神秘的错误),工作stream程相当容易devise(感谢Visual Studio中的工作stream程devise器),您不仅可以使用顺序工作stream程,还可以使用状态机工作stream程。

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

从来没有尝试过WFF,但是我还记得Leon Bambrick在读这篇关于WFF的文章 ,他基本上说整个types的软件开发工具都是无稽之谈。 可以帮助你决定一种方式或另一种方式。