工作流引擎的用例

时间:2010-06-10 06:22:46

标签: java workflow

我们遇到一个问题,即必须更新某个特定实体的状态数据库表。目前,它的所有Java代码都有很多if条件和状态更新。我正在考虑使用工作流引擎,因为将来可能会有多个流。在这里使用工作流引擎是否有点过分......你在哪里画线?

4 个答案:

答案 0 :(得分:3)

这取决于您的用例的复杂性。

在一个简单的用例中,我们为Order生命周期中的每个阶段的多个使用者更新了一个数据库列。这是通过调用数据库的Web服务完成的。 简单的生命周期来自ACKNOWLEDGED>接受/拒绝> FULFILLED>关闭。所有这些都在同一列的同一个表中。这是在没有工作流的java类中执行的。

工作流引擎适用于更复杂的用例,涉及对多个数据提供者的操作,例如:数据库或内容管理或文档管理或搜索引擎,多个并行进程,基于上一步的成功/失败分叉,在某个步骤发送电子邮件,脱机错误警报。

您可以查看Apache ODE来实现此目的。

答案 1 :(得分:2)

  

我们遇到一个问题,即必须更新某个特定实体的状态数据库表。目前,它的所有Java代码都有很多if条件和状态更新。

听起来很准时,不需要在工作流程参与者之间协调行动。

也许规则引擎更适合这种情况。 Drools可能是一个很好的候选人。当X然后是Y。

答案 2 :(得分:1)

如果您使用的是Spring,这是一篇关于如何实现您的要求的好文章

http://www.javaworld.com/javaworld/jw-04-2005/jw-0411-spring.html

答案 3 :(得分:0)

我认为你应该考虑一个工作流引擎。应将工作流与应用程序逻辑分开。

原因:

  1. 可维护:更容易修改,添加新流程,甚至更容易被其他工作流引擎替换。
  2. 业务流程管理:工作流程主要是BPM的软件表示。因此它通常由工艺设计师(非技术人员)设计。因此,在应用程序内部进行编码并不是一个好主意。相反,应使用支持图形工作流程设计的BPM产品,如ALBPM或JPBM。
  3. 监控业务流程:它们通常由顶级经理监控,并用于制定战略决策。
  4. 更容易进行数据挖掘/报告/统计。
  5. ALBPM(现在是Oracle BPM):是适用于大型项目的Oracle商业工具。

    我的推荐是JBPM。来自JBOSS的开源工具。与需要单独的数据库和应用程序服务器的ALBPM不同,它可以与您的应用程序一起打包,并作为应用程序中的另一个模块运行。我认为适合你的项目。