34

我正在评估 WF 是否可用于 Web 上的业务线应用程序,我很想听听最近关于这项技术的第一手资料。

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

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

如果它的设计过度以至于对于中小型项目无法使用(或糟糕的权衡),那是我需要知道的。

当然,它从 2006 年底就已经推出,所以它可能已经成熟了。如果是这样,那将是另一条非常有用的信息!

提前致谢!

4

12 回答 12

22

Windows Workflow Foundation 是一款功能非常强大的产品,但仍处于其第一个版本中 :-(

使用的主要原因包括:

  1. 可视化建模业务需求。
  2. 将您的业务逻辑与业务规则分离,并将规则外部化为 XML 文件。
  3. 通过将您的工作流程外部化为 XML 文件,将您的业务流程与您的应用程序分离。
  4. 如果长时间没有发生任何事情,创建具有自动反应能力的长时间运行的进程。例如未支付的发票。
  5. 自动持久化长时间运行的工作流,以降低资源使用率并允许进程和/或机器重新启动。
  6. 自动跟踪有助于满足业务需求的工作流。

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)对于 Microsoft 推出的许多新产品来说非常重要。您可以期待在 PDC 期间发布一些有趣的公告。

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

关于可视化建模业务需求。从理论上讲,这在意图和实现分离的情况下非常有效。然而,在实践中,纯粹出于技术原因,您将在工作流中丢弃相当多的额外活动,这会违背目的,因为您必须告诉业务分析师忽略一半的形状和线条。

于 2008-09-22T16:01:16.127 回答
13

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

仅当满足以下任一条件时,您才可能需要 WF:

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

有关更多详细信息,请参阅 Paul Andrew 的帖子:将 Windows Workflow Foundation 用于什么?

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

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

我无法判断您所说的“中小型项目”是什么意思,但总的来说,我会说如果您的项目至少有上述列表中的两个要求,那么您可以考虑使用 WF 作为解决方案。

于 2008-09-22T15:38:34.200 回答
10

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

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

于 2008-09-22T14:51:44.700 回答
9

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

管理层被非程序员使用 Workflow 来帮助开发软件的想法所说服,这完全是浪费时间。我们试图用这个项目解决的问题相对复杂,我们从一开始就知道软件几乎必须不断地修改(它的计算依赖于其他公司和政府)。

最终结果是我们无法使工作流模块足够通用以供其他人使用。所以程序员是被迫使用工作流程的人,而工作流程所做的所有事情都妨碍了我们。

于 2008-10-03T18:30:55.200 回答
7

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

对于最新版本(.NET 4.0 RC 附带),网络上几乎没有文档,在任何书籍中或没有可用的培训课程。我只找到了与现已失效的 3.0 版本相关的文章。甚至 MSDN 文档也很简单。

工作流设计器并不像它应该的那样直观,因此学习非常困难。我不得不依赖 StackOverflow 上一个人的答案(顺便感谢 Maurice!)——如果没有他的帮助,我会被填满。

所以总而言之,我认为它有潜力,但你会非常疯狂地学习它——等待更多的培训、文档和书籍,否则你会盲目地进入它!

于 2010-04-07T13:32:58.193 回答
5

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

虽然成功了,但一路走来也有很多问题和危机。对于任何较小规模的项目,它都不值得麻烦。

于 2009-01-23T13:40:17.107 回答
4

我认为 MS WF 是一个低级工作流库,而不是一个成熟的企业工作流产品,例如 K2。它将使您能够构建启用工作流的应用程序,但它本身并不是工作流应用程序。尽管我们不得不围绕它构建很多我们自己的基础设施(发布/订阅框架、工作流生命周期管理器等),但我在这种能力方面的经验是积极的。那里的许多文档都相当简单,并没有涵盖构建基于 MS WF 的企业工作流应用程序。

于 2008-09-22T15:15:35.563 回答
3

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

于 2010-04-07T13:45:15.957 回答
2

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

于 2008-09-22T14:32:19.037 回答
1

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

于 2008-09-22T15:19:26.040 回答
1

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

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

于 2008-09-22T15:26:56.630 回答
0

从未尝试过 WFF,但我记得读过Leon Bambrick 的这篇关于 WFF 的文章,他基本上说软件开发工具的整个类型都是无稽之谈。可能会帮助您决定一种或另一种方式。

于 2008-09-22T16:44:56.550 回答