Windows Workflow Foundation的替代品?

时间:2008-08-21 03:58:12

标签: asp.net workflow

作为内部呼叫中心应用程序(ASP.NET)的一部分,我一直在使用WWF,虽然学习它是理解基于状态机的工作流系统应该如何工作,我绝对不爱WWF本身。在我看来是:

  1. 过于复杂,尤其适用于网络应用程序(所有线程运行时的东西)
  2. 不成熟(曾与那位可怕的设计师合作过?)
  3. 当前功能集中的贫血
  4. 有没有人建议更好的基于.NET的工作流程框架?具体来说,我正在寻找以下功能:

    1. 基于状态机(将状态映射到可用操作)
    2. 关注用户权限(控制谁有权访问哪些操作)
    3. 将工作流程作为定时后台任务运行的能力(例如,为已经处于特定状态的项目发送提醒,持续x天)
    4. 这就是我真正需要的一切。我不需要能够“拖放”任何活动或直观地设计流程。一旦特定动作被触发,我完全可以自如地编写实际代码。

9 个答案:

答案 0 :(得分:13)

您可以尝试Simple State Machine。您必须自己实现访问控制和后台计时器,但这不应该是一个大问题。 SSM也是出于对WF的挫折而建立起来的。 There are some other state machine implementations on Codeplex也是如此。如果其中一个不适合他开箱即用,他们是开源的,应该让你足够接近。

我全心全意地同意你们关于WF中的状态机 - 他们不可测试,太复杂,线程模型特别难以理解,我不确定视觉设计师是否会因为以图形方式设计状态机。我认为这可能是因为状态机概念被设置为WF运行时,这是为顺序状态机而设计的,在我看来,WF做得更好。问题在于状态机实际上与顺序工作流程并不是同一个动物,应该给它们自己的第一类实现,因为WF的翘曲让它似乎支持它们或多或少不可支持,如果实际上不可用。

答案 1 :(得分:4)

我会远离Drools.Net,因为它的最后一次SVN提交是在2007年9月。看起来不错但是当你知道它没有得到任何关注时,将这么大的库作为你项目的一部分似乎有点冒险了。

答案 2 :(得分:1)

尝试Drools.NET

答案 3 :(得分:1)

看看Workflow Engine。它是.NET和Java解决方案的轻量级工作流框架。它有一个HTML5可视化设计器,版本控制,一个不错的用户界面,并支持各种数据库。

答案 4 :(得分:0)

您是否可以选择考虑BizTalk Server?

答案 5 :(得分:0)

我非常喜欢使用Oracle BPEL流程管理器。它是JDeveloper的一部分。

http://www.oracle.com/technology/bpel/index.html http://gemsres.com/story/dec06/313602/jellema-fig1.jpg

答案 6 :(得分:0)

你可能想看看爵士乐 - http://jazz.codeplex.com/

答案 7 :(得分:0)

尝试WF4.5。它从.NET4.0开始就完全重新设计了。

答案 8 :(得分:0)

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

以任务为导向

这些引擎(例如JBoss BPM - jbpm)旨在通过定义良好的流程模型处理输入数据。模型中的每个任务都可以控制一段代码 - 标准实现或单独实现。当进程令牌到达流程模型的末尾(End-Event)时,该流程结束。这种处理需要几毫秒。该引擎可用于批处理作业或处理具有复杂过程导向流的数据。

<强>事件驱动

以人为中心的工作流引擎是事件驱动的(例如Imixs-Workflow)。这是一种状态机,但通常提供更多功能。您可以通过为业务对象分配初始任务(由start事件定义)来启动新的流程实例。比工作流引擎允许您触发分配给模型中定义的每个任务的事件。每个事件(Intermediate CatchEvent)都会触发工作流引擎,将正在运行的processinstance转移到下一个任务(state)。在没有触发新事件之前,processinstance在当前任务(状态)中“等待”。批准过程是这种以人为中心的工作流程的典型示例。

您可以找到引擎列表here