2009-08-25 95 views
2

设置JBPM会话有两种选择。JBPM表应该放在单独的数据库中吗?

  1. 你可以把同一个Hibernate Session你的jBPM的映射,并作为一个结果,有他们在与应用程序表的数据库表。

  2. 你可以把在一个单独的Hibernate会话jBPM的映射,并让他们在一个单独的数据库。

我见过一篇推荐方法1的文章,我可以看到为什么,因为它允许您直接拥有对JBPM数据对象的外键引用。我所看到的唯一问题是,如果在JBPM进程运行时尝试保存jbpm对象,则会导致数据库死锁。

除此之外,哪种方法会更好,并且出于何种原因?

回答

3

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

如果你想要一个集中管理的工作流程组件,其中几种不同的应用与沟通,单个数据库是要走的路。

OTOH,如果工作流程是特定于某些应用程序,这是更好地保持分离的数据库。这样,您可以稍后在某些应用程序中升级jBPM,并将其保留在其他应用程序中。

但是,您也可以决定为每个应用程序都有一个单独的数据库,即使有很多。这样,运行时的性能,因为没有巨大的表来管理)

正如你所看到的,jBPM是如何将其嵌入到您的架构非常灵活撑大。因此,您需要为自己进行分析,并根据您的架构的当前和未来发展情况来决定最佳方法。

+0

我们去每个系统jBPM的,所以对我们来说,这将更有意义,都已经记下来,方便编码和优势一个数据库工具的休眠关系。 – Zoidberg 2009-09-01 19:50:57

1

在1个数据库既把你的应用程序和jBPM表允许你在一个事务中同时更新jBPM表和应用程序数据。例如,如果您想在jbpm中执行任务时更新应用程序数据的某些属性,这很有用。这有助于防止数据被破坏。否则,如果您提交您的jbpm交易,然后遇到提交您的应用程序数据交易的问题,您将遇到一个相当大的问题...

+0

TI是真的,我碰到过很多次。 – Zoidberg 2009-09-03 03:00:24

1

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

相关问题