WF的一个强有力的案例

Pit*_*a.O 38 workflow workflow-foundation workflow-foundation-4

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

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

我会很感激的.

ito*_*son 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的内容来看,所以这个评估有点理论化.希望它有所帮助!


Mau*_*ice 5

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

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

其次,您正在寻找一本书来教您Windows Workflow Foundation.第一个问题是WF3或WF4,因为它们是非常不同的野兽.我将假设WF4,因为当.NET 4发布时它将取代WF3(现在很快就会实现),并且在大多数情况下从WF3开始并没有多大意义.但是,由于WF3从未如此普及,而且对于大多数作家来说,图书市场并不是非常有利可图,因此还没有WF4书籍.我相信Bruce Bukovics正在开发他的Pro WF的新版本:.NET 3.5中的Windows Workflow,我找到了一本更实用的WF3书​​籍.到目前为止,没有什么,虽然你被卡住了,极其有限,在MSDN网站的文档和博客像我在这里.当然,也有当然有像这样从DevelopMentor的(注:无耻的插头,因为我的领导当然笔者)

我也提供了许多的原因,这个答案在这里,这可能会帮助你一些.

你问的答案不是很完整,但我希望这一切对你有用.