我们遇到一个问题,即必须更新某个特定实体的状态数据库表。目前,它的所有Java代码都有很多if条件和状态更新。我正在考虑使用工作流引擎,因为将来可能会有多个流。在这里使用工作流引擎是否有点过分......你在哪里画线?
答案 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)
我认为你应该考虑一个工作流引擎。应将工作流与应用程序逻辑分开。
原因:
ALBPM(现在是Oracle BPM):是适用于大型项目的Oracle商业工具。
我的推荐是JBPM。来自JBOSS的开源工具。与需要单独的数据库和应用程序服务器的ALBPM不同,它可以与您的应用程序一起打包,并作为应用程序中的另一个模块运行。我认为适合你的项目。