【问题标题】:What are some alternatives to a Workflow Engine?工作流引擎有哪些替代品?
【发布时间】:2009-05-18 15:25:15
【问题描述】:

我们正在重写一个大量(错误)使用工作流引擎的大型遗留系统。展望未来,我想考虑新应用程序的工作流引擎的替代方案。一个非常有趣的可能性是Space-based architecture + 规则引擎。还有哪些其他范式?

我会提到这个应用程序编排复杂的文档发布工作流程,并根据国家/地区/等进行许多不同的调整,但如果可能的话,我希望让答案更笼统。

编辑:我为这个问题添加了赏金以获得更多反馈。我想听听实际实施工作流程替代方案的人的意见。如果什么都没产生,我会接受 BPEL 的答案,尽管我对技术本身完全不感兴趣。

【问题讨论】:

  • 对编程方面一无所知,但您看过 WWF(Windows Workflow Foundation)吗? msdn.microsoft.com/en-us/netframework/aa663328.aspx
  • 我不是在寻找工作流实现,而是在寻找工作流模式的替代方案
  • 缺少答案的原因是您没有描述您正在尝试解决的实际问题。描述归结为“对于编排工作流的应用程序的工作流替代方案是什么”,这排除了“工作流”之外的任何答案。
  • @ima - 我不同意。正如我在示例中所述,在 Pragmatic Programmer 中明确提到了基于空间的架构 + 规则引擎作为工作流的替代方案。对我来说,这就像将 ORM+RDBMS 作为 OODBMS 的替代品,或者将 JMS 作为文件系统或应用程序之间的数据库集成点的替代品。只要您了解要替换的现有设计,您仍然可以就替代设计提出一般性建议。
  • 了解工作流实施的哪些方面让您如此反对它作为解决方案会很有帮助。

标签: architecture workflow


【解决方案1】:

这似乎是一个显而易见的回应,但没有其他人提出过,所以这里是:您是否考虑过文档(或内容)管理软件?

【讨论】:

    【解决方案2】:

    基于 BPEL 的流程是一种选择。如果您设想利用未来的 BPEL 工具来完成这项工作,您就会走这条路。否则,BPEL 有点过于复杂(就像所有这些通用的“都可以插入”解决方案一样)。

    简单的一点是要意识到工作流实际上通常是关于队列而不是工作流。也就是说,它更多地是将某些东西放在某人的桌子上,而不是根据严格的模式来指导工作流程。在这种情况下,某些东西包含一个队列,这是一个定义的工作阶段,然后以灵活的方式链接到其他潜在的工作块。有一个通用过程,但该过程也有例外。规则引擎可以作为一般流程在队列之间移动事物(并根据需要启动外部流程),当定义的规则不削减时,用户可以选择将事物任意移动到“正确”队列中。

    【讨论】:

      【解决方案3】:

      您可以严格地将其作为一个有限状态机引擎来执行,您可以根据用户或文化等动态构建它。您需要将特定的自动机作为长期运行事务的状态持久化。然后当用户调用状态或采取另一个“动作”(基本上建模为状态转换)时,您允许转换有输出(Mealy 机器)或新状态(Moore 机器)。

      【讨论】:

        【解决方案4】:

        嗯,您已经提到了基于规则的处理。基于事件的处理模型有些相似,但在响应事件方面没有那么正式的约束。总的来说,我不认为一个人必须完全遵守特定的模型。

        (例如,基于事件的前端 -> 基于规则的编排 -> 特定(线性)工作流处理。)

        【讨论】:

          【解决方案5】:

          如果您从 30,000 英尺的高度观察,您有两种选择:

          • 一个控制进程轮询队列和数据存储检查什么在哪里,并根据一组规则移动东西。
          • 等待收到事件通知并根据一组规则处理它们的系统。

          在这两种情况下,“规则”都可以在工作流/编排、规则引擎或代码中定义。

          我们选择根据以下标准实施系统:

          • 相对简单的规则,直接在代码中实现
          • 工作流程中的复杂逻辑。这样我们就可以将其展示给客户,询问他们这是否是他们的意思,并知道这没关系,因为他们正在查看的是执行的内容。
          • 基于一组规则移动事物的编排发布/订阅

          我使用 MS 技术,因此对于您描述的系统类型,我会在 Sharepoint 中实现它,它有一个文档管理系统和用于文档管理的内置工作流。入门级 Sharepoint 许可证 Windows Sharepoint Services 包含在操作系统中。

          【讨论】:

            【解决方案6】:

            从 KISS 的角度来看,工作流只不过是队列,规则引擎也不过如此——​​我们有一个文档系统,我们有类似处理的工作流。我们考虑了 websphere 的工作流程以及来自 weblogic 的 WLI,但是一个简单的带有持久存储的 JMS(MDB 和唤醒消费者)对我们来说非常有效,没有任何问题。我认为你在这里采取了正确的方法 - 祝你好运!

            【讨论】:

              【解决方案7】:

              NetBpm(JBpm 的 .Net 端口)

              【讨论】:

              • 我不是要求替代工作流实现,而是完全替代工作流引擎
              【解决方案8】:

              您可以考虑使用 Apache Camel。 它是 EIP,支持 if,choice 等大多数工作流语言,但您必须为其编写代码。

              【讨论】:

                猜你喜欢
                • 2012-12-18
                • 2010-11-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2010-09-25
                • 2011-02-19
                • 2010-10-12
                • 1970-01-01
                相关资源
                最近更新 更多