JBPM表应该在单独的数据库中吗?

时间:2009-08-25 14:52:15

标签: jbpm

设置JBPM会话时有两个选项。

  1. 您可以将JBPM映射放在同一个Hibernate会话中,因此,将数据库中的表与应用程序表放在一起。

  2. 您可以将JBPM映射放在单独的Hibernate会话中,并将它们放在一个单独的数据库中。

  3. 我看过一篇推荐方法1的文章,我可以看到原因,因为它允许您直接对JBPM数据对象进行外键引用。我看到弹出的唯一问题是如果你在JBPM进程运行时尝试保存jbpm对象,你就会在数据库上出现死锁。

    除此之外,哪种方法会更好,以及出于什么原因?

3 个答案:

答案 0 :(得分:3)

这取决于您要构建的体系结构。

如果您需要一个集中管理的工作流组件,而多个不同的应用程序与之通信,则可以使用单个数据库。

Otoh,如果工作流仅针对某些应用程序,则最好将数据库分开。这样,您可以稍后在某些应用程序中升级jBPM,并将其保留在其他应用程序中。

但是你也可以决定为每个应用程序设置一个单独的数据库,即使有很多。这样,运行时性能保持很好,因为没有可供管理的大表)

如您所见,jBPM在如何将其嵌入您的架构方面非常灵活。因此,您需要自己进行分析并确定最佳方法,并考虑您的架构当前和未来的演变。

答案 1 :(得分:1)

将应用程序和jbpm表放在1个数据库中,可以在单个事务中更新jbpm表和应用程序数据。例如,当您在jbpm中执行任务时,您希望更新应用程序数据的某些属性时,这非常有用。这有助于防止数据损坏。否则,如果您提交了jbpm事务,然后遇到了提交应用程序数据事务的问题,那么您有一个非常大的问题......

答案 2 :(得分:1)

我们有一个案例,我们决定将jbpm数据库分开,以便能够升级版本,或者在不同客户需要时使用其他供应商。如上所述,我们遇到了必须在应用程序级别处理单个操作的单独hibernate会话的情况。为了保持这些条件的一致性,我们决定使用名为Atomikos

的工具