工作流程还是不工作流程?

我对将要开始开发轻量级保险索赔系统的开发团队负责。 该系统涉及大量手动任务和业务工作流程,我们正在考虑使用Windows Workflow(.NET 4.0)。

业务领域的一个例子如下:保单持有人呼叫联络中心提出索赔。 这个“事件”触发了两个并行手动操作的子任务,可能需要很长时间才能完成;

  • 检查客户是否存在欺诈行为 - 操作员通过手动方式呼叫各种信用卡公司检查并评估欺诈客户的潜力。 从这里子任务可以输入许多子状态(检查进行中,失败的参考检查,通过的参考检查等)
  • 将项目发送至维修中心 - 保单持有人提出索赔的项目将被送至维修中心进行修理。 从这里,子任务可以输入多个子状态(等待修复,进行中,修复,发布等)。 只有当每个子任务的状态达到预定义状态(根据业务规则)后,该索赔才能继续。
  • 从表面上看,Workflow确实是最好的技术选择; 但是我在使用WF 4.0时有一些担忧。

  • 技能集 - 查看平均开发人员技能集,我没有看到许多了解或了解工作流的开发人员。
  • 可维护性 - WF 4.0项目在社区内似乎没有什么支持,而且这与缺乏技能一起引起了对可维护性的关注。
  • 进入壁垒 - 我有一种感觉,Windows Workflow的学习曲线陡峭,并不总是那么容易上手。
  • 新产品 - 由于.NET 4.0完全重写了工作流程,因此我将该产品视为第一代产品,可能没有必要的稳定性。
  • 声誉 - 以前版本的工作流程没有得到很好的接受,认为难以开发并导致业务不景气。
  • 所以我的问题是,我们应该使用Windows Workflow(WF)4.0来处理这种情况,或者是否有其他技术(例如,简单状态机等),甚至是更好的工作流引擎?


    我已经完成了几个WF4项目,所以让我看看我是否可以添加任何有用的信息到其他答案。

    从您的业务问题描述来看,WF4听起来很不错,所以没有问题。

    关于你的担忧,你是对的。 基本上WF4是一款新产品,缺乏一些重要功能,并且有一些粗糙的优势。 有一条学习曲线,你必须做一些不同的事情。 主要观点是长时间运行和序列化,这是普通开发人员不习惯的事情,需要一些思路才能正确,因为我经常听到人们在序列化实体框架数据上下文时遇到问题。

    大多数情况下,使用IIS / WAS中托管的工作流服务是完成这些长时间运行的工作流程的最佳途径。 这使得解决版本控制问题也不难,只需要第一条消息返回工作流版本并将其作为每个后续消息的一部分。 接下来将WCF路由器置于其间,根据版本将消息路由到正确的端点。 基本不会改变现有的工作流程,总是创建一个新的工作流程。

    那么我有什么建议吗? 不要对未知的事物进行大胆的赌博,对于你来说未经证实的技术。 使用WF4做一个小而非关键的应用程序。 这样,如果它可以扩展它,但是如果它失败了,你可以把它翻出来,用更传统的.NET代码替换它。 通过这种方式,您可以获得WF4的真实体验,而不必基于第二手信息作出决定,并且可以在此过程中学习新的强大技术。 如果可能的话,参加WF4课程,因为这将为你节省很多时间来加快速度(无耻的自我插入)。

    关于简单状态机。 我没有使用它,但我的印象是短暂运行,在内存中,状态机。 WF4的主要优点之一是运行时间长。


    我几次遇到这种困境,我选择不使用Work Flow基础。 一些考虑(类似于你的)是

  • 涉及到的工作流程要简单得多(状态机和顺序操作的组合),并且在WF中执行操作看起来对于所涉及的努力来说是过度的。
  • 学习曲线让开发人员理解并有效使用WF被认为是很高的。 描述有效转换和采取的动作的状态转换表用于提高灵活性,并且开发人员对此感到满意,轻松理解概念和目的。
  • 在转换表的帮助下,业务流程变更的机会很渺茫,并且很容易实现基本的变化。 转换中的更改将意味着数据库脚本,而更改操作会导致新的发行版/修补程序。 然而,这种情况的可能性被认为是低的。
  • 回顾13-14个月后,我仍然认为不使用WF的决定是正确的。 国际海事组织,WF很有道理,工作流程可能发生变化和/或业务规则可能发生变化的可能性很大。 WF允许在单独的文件中隔离工作流程,因此用户可以配置它将会更简单。


    过去几个月我们一直在使用WF 4.0。 我不得不说认为工作流的方式很具挑战性。 但是,我可以告诉你这是值得的。 当我们开始时,我们知道的很少。 我们为WF 4.0购买了一本初学者和专业书籍。 我自己在网上观看了许多视频,并关注了PDC 2009,以了解他们关于WF 4.0的突发新闻,以及它与以前的有些糟糕的版本有何不同。 我们不得不提出解决方案的一个主要问题是我们可以在工作流中处理In / Our Arguments,而不将自定义活动限制在某些数据类型以及如何在活动之间传递参数。 我已经为此提出了一个很好的解决方案,迄今为止我们的工作流程体验并不差。 实际上,我们有一个工作流程密集型应用程序越来越大,我真的无法想象自己在不同的环境中解决它。 我喜欢它所具有的视觉效果:它使我远离if / else等构造的细节,并使得业务规则明显表现出来,这种方式不会让您不得不深入代码行以了解正在发生的事情或如何修复一些错误。 顺便说一下,我们所从事的项目与您所描述的项目非常相似,并且是一个中等规模的项目。 您可以从我的文字中看出我喜欢它,但我确实推荐它,但由于它是一种新技术,因此需要考虑一些风险,因此您必须提出一些创新想法。

    我的2分钱...

    链接地址: http://www.djcxy.com/p/61517.html

    上一篇: To Workflow or Not to Workflow?

    下一篇: Drawbacks of Windows Azure Platform?