2010-06-10 46 views
2

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

+0

一个很好的文章有,每个国家应该能够过渡到每一个其他国家的要求。因此,现在对于每个新的状态,我必须添加用于转换到每个现有状态的操作,并且每个现有状态都必须有动作才能移动到新状态。 WorkFlow解决方案是否以非重复方式处理这些问题? – 2010-06-10 08:33:47

+0

一个可能的无限循环? – shinynewbike 2010-06-10 12:49:05

+0

@ktaylorjohn - Ofcourse有一个阶段是退出。 – 2010-06-10 21:30:49

回答

3

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

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

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

你可以看看Apache ODE来实现这个。

0

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

原因:

  1. 可维护:易于修改,增加新的流动和更容易被另一个工作流引擎来代替。
  2. 业务流程管理:工作流程主要是BPM的软件表示。所以它通常由流程设计者(非技术人员)设计。因此,在应用程序内编写代码并不是一个好主意。相反,应使用支持图形工作流设计的BPM产品,如ALBPM或JPBM。
  3. 监控业务流量:他们经常受到顶级经理的监控,并用于制定战略决策。
  4. 数据挖掘/报告/统计更容易。

ALBPM(现在是Oracle BPM):是Oracle的商业工具,适用于大型项目。我的推荐是JBPM。 JBOSS的开源工具。与需要单独的数据库和应用程序服务器的ALBPM不同,它可以与应用程序一起打包,并作为应用程序中的另一个模块运行。我觉得适合你的项目。

2

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

听起来像某些准时,不需要在工作流程参与者之间编排操作。

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

+0

谢谢你。你可能知道Spring集成的Drools上的任何优秀资源? – 2010-06-10 10:50:27

+0

在这里找到 - >与泉水流口水。谢谢 ! https://springmodules.dev.java.net/docs/reference/0.7/html/jsr94.html – 2010-06-10 11:13:36