我正在评估WF在网络上的业务应用程序中使用,我很想听听最近这个技术的第一手资料.
我最关心的是提高项目的可维护性,并在处理频繁变化的复杂流程时提高开发人员的工作效率.
我真的很喜欢WF的想法,但是它似乎相对不为人知,而且我发现许多较老的评论都提到它一旦进入它就会非常复杂.
如果它被过度设计到一个中小型项目无法使用(或不好的权衡),那就是我需要知道的事情.
当然,它已经从2006年底开始,所以也许它已经成熟了.如果是这样的话,这是另一条非常有用的信息!
提前致谢!
Windows Workflow Foundation是一个非常强大的产品,但仍然非常第一版:-(
使用的主要原因包括:
可视化建模业务需求.
将业务逻辑与业务规则分离,并将规则外部化为XML文件.
通过将工作流外部化为XML文件,从您的应用程序中分离业务流.
创建长时间运行的进程,如果在一段延长的时间内没有发生任何事情,则可以自动做出反应.例如,发票未付款.
长时间运行的工作流的自动持久性,以减少资源使用并允许进程和/或计算机重新启动.
自动跟踪工作流程,帮助满足业务需求.
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
关于可视化建模业务需求.理论上,这与意图和实现的分离非常有效.但是在实践中,你会在工作流程上放弃一些额外的活动,纯粹出于技术原因,这有点挫败了目的,因为你必须告诉业务分析师忽略一半的形状和线条.
相关问题:何时使用Windows Workflow Foundation?我的回答是:
只有在满足以下任何条件时,您才需要WF:
你有一个长期运行的过程.
您有一个经常更改的流程.
您需要一个流程的可视化模型.
有关更多详细信息,请参阅Paul Andrew的帖子:Windows Workflow Foundation的用途是什么?
请不要将WF与任何形式的可视化编程混淆或联系起来.这是错误的,可能导致非常糟糕的架构/设计决策.
所以,如果你有这样的要求,那么WF是一个很好的候选人.当然它相对复杂,但提到试图解决的问题也很复杂(有时非常复杂).恕我直言,例如,对附加了事件处理程序的对象进行脱水/再水化非常复杂(当对象不在内存中时可以触发事件).
我无法判断"中小型项目"的含义,但总的来说,如果您的项目至少有上述列表中的两个要求,那么您可以将WF视为解决方案.
我们在一个大型的SharePoint应用程序中使用了WF,我可以说它没问题.它具有很强的功能和灵活性.而且,正如凯文所提到的,一旦你了解了工作流程的基本概念,你就可以用它做任何你想做的事情.
另一方面,它有一些非常严重的问题,例如缺乏版本控制,这可能会在将来真正损害您的应用程序.我们被迫部署多达3个相同工作流程的并行版本,名为xxx-v1,xxx-v2和xxx-v3,以保持旧实例运行并让新实例使用更新版本.屁股真正的痛苦.哦,还有一些非直观的概念(相关标记,wtf ??)
我有一个工作项目,我参与使用工作流程.(来自管理层)的想法是,我们的程序员会将"工作流程活动"与"引擎"和框架一起编写.然后非程序员通过将他们自己的工作流程编译成引擎自动加载的dll来处理所有其余的事情.
管理层出售的是非程序员使用Workflow帮助开发软件的想法,这几乎完全是浪费时间.我们试图通过这个项目解决的问题相对复杂,我们从一开始就知道软件几乎要经常被修改(其计算依赖于其他公司和政府).
最终结果是我们无法使Workflow模块足够通用以供其他任何人使用.因此,程序员是那些被迫使用工作流程的人,所有工作流程都是我们的方式.
我在过去的几个月里一直在使用Workflow 4.0,虽然印象非常深刻,但我发现它非常难学.
对于最新版本(.NET 4.0 RC附带),在网络上,任何书籍中都没有文档,也没有可用的培训课程.我只找到了与现已解散的3.0版本相关的文章.甚至MSDN文档也很轻松.
工作流设计师并不像任何方式那样直观,因此学习非常困难.我不得不依赖StackOverflow上一个人的答案(感谢Maurice的方式!) - 如果没有他的帮助我就会被塞进去.
总而言之,我认为它有潜力,但你会非常生气地学习它 - 等待更多的培训,文档和书籍,否则你会盲目进入它!
去年,我们完成了与WF的工作申请,现在被用作一个令人难以置信的巨大系统的支柱,一个非常大的银行用于抵押贷款流程.pe流程有许多步骤,从客户申请到信贷审批.
虽然它取得了成功,但在整个过程中存在着许多问题和危机.对于任何规模较小的项目来说,这都不值得.