替代Windows Workflow Foundation的方案?

14

我使用WWF已经有一段时间了,作为内部呼叫中心应用程序(ASP.NET)的一部分。在学习过程中,它是理解基于状态机工作流系统如何工作的好实践,但我绝对不喜欢WWF本身。在我看来,它:

  1. 过于复杂,特别是在Web应用程序中的使用(所有那些线程运行时的东西)
  2. 不够成熟(曾经用过那个可怕的设计工具吗?)
  3. 在其当前功能集方面缺乏活力

有人有更好的基于.NET的工作流框架建议吗?具体而言,我正在寻找以下功能:

  1. 基于状态机(将状态映射到可用操作)
  2. 侧重于用户权限(控制谁有权访问哪些操作)
  3. 能够将工作流作为定时的后台任务运行(例如,发送提醒已处于某个状态x天的项目)

这真的是我所需要的全部。我不需要能够“拖放”任何活动或视觉上设计流程。一旦触发特定操作,我完全可以编写实际代码。

9个回答

14
您可以尝试使用Simple State Machine。您需要自己实现访问控制和后台计时器,但这不应该是一个大问题。SSM也是出于对WF的沮丧而构建的。 Codeplex上还有其他一些状态机实现。如果其中一个不能直接满足要求,它们都是开源的,并且应该足够接近您的需求。
我完全同意您关于WF中状态机的看法-它们无法测试,过于复杂,线程模型很奇特且难以理解,而且用于设计状态机图形化的可视化设计器可能是最糟糕的构思之一。我认为这可能是因为状态机概念感觉被添加到了WF运行时中,而WF运行时是为顺序状态机设计的,在我看来,它做得更好。问题在于,状态机与顺序工作流并不是同一类型的动物,因此应该为它们提供第一类实现,因为将WF扭曲使其似乎支持它们的尝试结果是几乎无法支持,甚至无法使用。

2
简单状态机很聪明。如果它的模型适合你,但你更喜欢使用C#而不是Boo,那么你也可以考虑使用Stateless(http://stateless.googlecode.com)。 - Nicholas Blumhardt
抱歉,我是新手(也是.NET的新手),所以来晚了。 :) 我同意WF中状态机的实现相当复杂。我自己正在使用顺序工作流,因为它们符合我的要求,但当涉及到GUI更新要求时,错误处理对我来说确实很棘手。感谢您推荐Simple State Machine - 我喜欢在WF中实现顺序工作流的简易性,但我想在SSM中也应该很容易,并且错误处理也会更加简单易行。 - Dave

4

我建议远离Drools.Net,因为它的最后一次SVN提交是在2007年9月。虽然看起来不错,但当你知道它不再得到关注时,将这样一个大型库作为你项目的一部分似乎有些冒险。


1

请看工作流引擎。它是一个轻量级的.NET和Java解决方案的工作流框架。它有一个HTML5可视化设计师,版本控制,良好的用户界面,支持广泛的数据库。


1

尝试使用Drools.NET


0

0

尝试使用WF4.5。自.NET4.0以来,它已经完全重新设计。


0

首先,您应该寻找支持BPMN的引擎。BPMN是工作流和流程管理中的标准,并得到许多项目的广泛支持。 其次,您应该考虑引擎的要求。 当您寻找BPMN引擎时,有两种不同的方法:

任务导向

这些引擎(例如JBoss BPM - jbpm)旨在通过定义良好的流程模型处理输入数据。模型中的每个任务将控制权交给一段代码-标准实现或个人实现。当流程令牌到达流程模型的末尾(结束事件)时,流程结束。这种处理只需毫秒级别的时间。该引擎可用于批处理作业或处理具有复杂流程方向的数据。

事件驱动

人本工作流引擎是事件驱动的(例如 Imixs-Workflow)。这是一种状态机,但通常提供更多功能。您可以通过将业务对象分配给初始任务(由起始事件定义)来启动新的进程实例。然后,工作流引擎允许您触发分配给模型中每个任务的事件。每个事件(中间捕获事件)都会触发工作流引擎将正在运行的进程实例转移到下一个任务(状态)。直到没有触发新事件,进程实例才会“等待”在当前任务(状态)中。批准流程是这种人本工作流的典型示例。
您可以在此处找到引擎列表here

0

0

您是否考虑使用BizTalk Server?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接