14

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

  1. 过于复杂,尤其是在 Web 应用程序中使用(所有线程运行时的东西)
  2. 不成熟(曾经和那个可怕的设计师合作过?)
  3. 当前功能集贫血

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

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

这就是我所需要的。我不需要能够“拖放”任何活动或直观地设计流程。一旦触发特定操作,我就可以非常轻松地编写实际代码。

4

9 回答 9

14

你可以试试Simple State Machine。您必须自己实现访问控制和后台计时器,但这应该没什么大不了的。SSM 也是出于对 WF 的不满而建立的。Codeplex 上还有一些其他的状态机实现。如果其中一个不适合他开箱即用,它们是开源的,应该让你足够接近。

关于 WF 中的状态机,我完全同意你的看法——它们不可测试,太复杂,线程模型很奇特且难以遵循,而且我不确定视觉设计师在设计状态机时的构思是否会更差以图形方式。我认为这可能是因为状态机概念感觉被附加到了 WF 运行时,它是为顺序状态机设计的,在我看来,WF 在这方面做得更好。问题是状态机与顺序工作流实际上不是同一种动物,并且应该被赋予它们自己的一流实现,因为 WF 使其看起来支持它们的扭曲结果或多或少不支持,如果不是实际上不可用。

于 2008-08-21T04:38:42.127 回答
4

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

于 2009-01-09T10:41:01.737 回答
1

试试 Drools.NET

于 2008-10-23T14:44:53.527 回答
1

看看工作流引擎。它是用于 .NET 和 Java 解决方案的轻量级工作流框架。它有一个 HTML5 可视化设计器、版本控制、一个不错的 UI 并支持广泛的数据库。

于 2017-03-06T19:37:10.730 回答
0

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

于 2008-08-21T04:23:31.290 回答
0

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

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

于 2009-01-09T10:49:20.563 回答
0

您可能想看看 Jazz - http://jazz.codeplex.com/

于 2012-05-10T21:54:01.533 回答
0

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

于 2017-01-23T09:32:05.183 回答
0

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

任务导向

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

事件驱动

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

您可以在此处找到引擎列表。

于 2017-03-31T21:47:22.333 回答