代码之家  ›  专栏  ›  技术社区  ›  jeremcc chris

Windows工作流基础的替代方案?

  •  13
  • jeremcc chris  · 技术社区  · 16 年前

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

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

    是否有人建议使用更好的基于.NET的工作流框架?具体来说,我在寻找以下功能:

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

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

    9 回复  |  直到 16 年前
        1
  •  13
  •   Nathan    16 年前

    你可以试试 Simple State Machine . 你必须自己实现访问控制和后台计时器,但这不算什么。SSM也是建立在对WF的失望之上的。 There are some other state machine implementations on Codeplex 也。如果其中一个不适合他开箱即用,他们是开源的,应该让你足够接近。

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

        2
  •  4
  •   Tomas Andrle    16 年前

    我会远离Drools.net,因为它的最后一次SVN提交是在2007年9月。看起来不错,但当你知道这个项目不再引起任何注意的时候,把它作为你项目的一个大图书馆的一部分似乎有点太冒险了。

        3
  •  1
  •   Nick Berardi    16 年前

    尝试DROL.NET

        4
  •  1
  •   Jan Guardian    7 年前

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

        5
  •  0
  •   Vaibhav    16 年前

    是否可以考虑使用Biztalk Server?

        6
  •  0
  •   ilitirit    16 年前

    我非常喜欢与Oracle BPEL Process Manager合作。它是JDeveloper的一部分。

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

        7
  •  0
  •   John Hansen    12 年前

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

        8
  •  0
  •   Oleksandr Bilyk    8 年前

    试试WF4.5。它从.net4.0开始完全重新设计。

        9
  •  0
  •   Ralph    7 年前

    首先,您应该寻找支持BPMN的引擎。BPMN是工作流和流程管理中的一个标准,得到了许多项目的支持。 第二,您应该考虑对这样一个引擎的需求。 当您查找bpmn引擎时,有两种不同的方法:

    任务导向

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

    事件驱动

    以人为中心的工作流引擎是事件驱动的(例如 Imixs-Workflow )这是一种状态机,但通常提供更多的功能。通过为业务对象分配初始任务(由Start事件定义),可以启动新的ProcessInstance。而工作流引擎则允许您触发分配给模型中定义的每个任务的事件。每个事件(中间catchEvent)触发工作流引擎将正在运行的processInstance传输到下一个任务(状态)。在未触发任何新事件之前,processInstance将在当前任务(状态)中“等待”。审批流程是此类以人为中心的工作流的典型示例。

    你可以找到引擎列表 here .