WF的一个强有力的案例

时间:2010-03-21 03:27:57

标签: workflow workflow-foundation workflow-foundation-4

我一直在努力寻找一个引人注目的工作流用例(即:WF),而不是常规的命令式编程。每次我回到结论,我应该离开WF或推迟到晚些时候进入。但我一直有这种唠叨的感觉,有些东西不见了。

有没有人知道任何真正为Workflow方式提供强有力理由的书籍?本书必须(i)很好地教授WF,并且(ii)使用适当的用例来表明WF使实现变得容易,而不是我们只是进行常规的直接编码。

我会很感激。

5 个答案:

答案 0 :(得分:21)

从非专家的角度来看,我有两件事情可以为WF提供案例 - 一个是工作流平台独有的,另一个可能更方便。

便利功能是能够创建新的作曲方式。命令式编程仅提供有限的组合原语库:基本上是排序,if-else和循环。 WF允许您构建自己的组合运算符,例如交错执行,并行执行,首先发布帖子等。当然,它具有内置状态机的复杂组合机制。

我说这是一个方便的功能,因为您可以使用C#等命令式语言构建所有这些运算符:实际上, 是如何构建WF运算符的。但是WF使得使用读取自定义组合变得容易,而在C#中,你会迅速陷入lambda表达式。因此,如果您有复杂的编排要求 - 也就是说,如果您的活动相互配合的方式比序列,if-else和循环更复杂,那么WF可以使您的程序更容易表达和理解。

独特的功能是耐久性。这就是舒克拉和施密特着作的起源地,以及它不断回归的地方。用C#或VB编写的命令式程序可以运行数小时,数天,数周,如果幸运的话,甚至可能是几个月...但最终IIS将会循环应用程序池,或者管理员将要安装最新的安全更新或者有人要用电源线绊倒。那么你的程序如何记住,“好吧,我从Unimaginative公司名称R Us获得了采购订单,我正在等待Bank of Breadheads Inc.的信用审批,当我得到它时,我可以发送确认电子邮件“?

在传统的命令式程序中,当进程终止时,执行状态随之消失。您可以启动一个新流程,但它将从程序开始时开始。当然,您可以创建一个数据库,并使用它来存储“获得采购订单”和“获得信用审批”等标志。但是现在你必须编写特定于应用程序的代码来保存和查询状态,并根据该状态跳回程序中的正确位置。而且你必须为每个长期运行的应用程序设计一个新的数据库和新的保存/恢复/跳转逻辑。

耐用的工作流程就是要解决这个问题。如果您将程序编写为活动的工作流程,那么WF将负责保持其状态,包括它在执行流程中的位置。运行该程序的机器可能会着火并烧毁您的数据中心,但是当银行的响应进入时,WF将在您的其他数据中心唤醒您的程序,它将在正确的位置开始运行并且在右侧数据

对我来说,这是WF的“强有力的案例”。在许多情况下,您不需要它:应用程序的寿命足够短,故障不是一个重要问题,从头开始重新启动是一种可行的恢复策略。但对于长期存在的应用程序,例如可能需要花费数小时响应的外部系统,或涉及可能需要数天才能响应的人员的业务流程,持久性可能是WF的杀手级功能。

免责声明:我不是WF程序员,也从未构建过真实的WF系统。我是从BizTalk背景来看这个,从我读过的关于WF的内容来看,所以这个评估有点理论化。希望它有所帮助!

答案 1 :(得分:5)

不确定您的问题是否有一个好的答案。问题不在于问题是无效的还是类似的问题,因为你要求的是两个非常不同的东西。

首先,您要求使用工作流程的令人信服的理由。这是一个非常主观的问题,而与技术无关。你可以在网上找到指向各种成功的白皮书,并且在工作流实现方面不成功。这与技术无关,使用某些产品X完成的解决方案也可以使用产品Y完成.Sukla和Schmidt的章节肯定解释了基本原理,但我不确定这是一本很好的书,向您展示如何应用工作流程。

其次,您正在寻找一本书来教您Windows Workflow Foundation。第一个问题是WF3或WF4,因为它们是非常不同的野兽。我将假设WF4,因为当.NET 4发布时它将取代WF3(现在很快就会实现),并且在大多数情况下从WF3开始并没有多大意义。但是,由于WF3从未如此普及,而且对于大多数作家来说,图书市场并不是非常有利可图,因此还没有WF4书籍。我相信布鲁斯·布科维奇正在研究他的Pro WF: Windows Workflow in .NET 3.5书的新版本,我发现了一本比较有用的WF3书​​籍。到目前为止,没有任何东西,你仍然坚持在msdn网站和博客上的极其有限的文档,如我的here。当然,那里有一些来自DevelopMentor的this(注意:无耻的插件,因为我是主要课程的作者)

我在这个答案here中提供了很多理由,这些可能对你有所帮助。

对你的问题不是一个答案,但我希望这一切对你仍然有用。

答案 2 :(得分:1)

这也不是直接的答案,但如果搜索其他资源,这可能会有所帮助。对我来说,看起来WF非常接近于Business Process Execution Language (BPEL)中引入的概念。这标准。已经存在了比WF更长的时间,BPEL的任何使用都应该让你知道如何使用WF。

我没有使用过WF,但是当我玩弄BPEL时,我发现它很难使用。这主要是由于工具支持(我发现缺乏视觉建模的eclipse插件)。当您将此与事实相结合时,与“普通编程语言语法”相比,难以读取XML中的代码,那么BPEL就不是一个可行的解决方案。如果WF有一个很好的可视化工具,那么这个问题至少已经解决了。

答案 3 :(得分:1)

很好的理由是: 视觉概述您的业务流程。 您甚至可以让您的客户 - 领域专家 - 与设计师一起编辑工作流程;重新启动应用程序并使其运行而不重新编译

好书:Bruce Bukowics AND 我最喜欢的:PRO C#2010和.NET 4框架有一个很好的章节

答案 4 :(得分:0)

我不知道有关这个主题的书。但是,我认为WF(或其他工作流程产品)的部分吸引力在于它重新引入了原始OO人员(如Alan Kay)感兴趣的松散耦合,基于消息的范例的可能性。 p>

传递“消息”的概念在WF中并不是立即显而易见的。然而,作为离散机器的物体的概念是。

关于OO状态的一本很棒(但有点疯狂)的书,请参阅Object Thinking by David West。请参阅here,了解Alan Kay对OO对他意味着什么的讨论。