Должны ли таблицы JBPM находиться в отдельной базе данных? - PullRequest
2 голосов
/ 25 августа 2009

Существует два варианта настройки сеанса JBPM.

  1. Вы можете поместить свои отображения JBPM в один и тот же сеанс Hibernate, и в результате их таблицы будут находиться в базе данных вместе с таблицами приложений.

  2. Вы можете поместить отображения JBPM в отдельный сеанс Hibernate и поместить их в отдельную базу данных.

Я видел одну статью, в которой рекомендуется метод 1, и я понимаю, почему, поскольку он позволяет напрямую ссылаться на внешние объекты на объекты данных JBPM. Единственная проблема, которую я видел, это всплывающее окно: если вы попытаетесь сохранить объект jbpm во время выполнения процесса JBPM, вы получите тупик в базе данных.

Кроме этого, какой метод будет лучше и по каким причинам?

Ответы [ 3 ]

3 голосов
/ 01 сентября 2009

Это зависит от архитектуры, которую вы хотите построить.

Если вам нужен один централизованно управляемый компонент рабочего процесса, с которым взаимодействуют несколько разных приложений, то лучше всего использовать одну базу данных.

Otoh, если рабочий процесс специфичен только для некоторых приложений, лучше хранить базы данных отдельно. Таким образом, вы можете обновить jBPM позже в некоторых приложениях и оставить его как есть в других.

Но вы также можете выбрать отдельную БД для каждого приложения, даже если их много. Таким образом, производительность во время выполнения остается на высоком уровне, поскольку нет огромной таблицы для управления)

Как видите, jBPM очень гибок в том, как встроить его в вашу архитектуру. Таким образом, вам нужно будет сделать анализ для себя и решить, какой подход лучше, учитывая текущие и будущие изменения вашей архитектуры.

1 голос
/ 02 ноября 2010

У нас был случай, когда мы решили сохранить базу данных jbpm отдельно, чтобы иметь возможность обновить версию или, возможно, использовать другого поставщика, когда это будет необходимо для разных клиентов. Как упоминалось выше, мы столкнулись с ситуациями, когда нам приходилось иметь дело с отдельными сеансами гибернации для одной операции на уровне приложения. Чтобы сохранить согласованность в этих условиях, мы решили использовать инструмент под названием Atomikos

1 голос
/ 03 сентября 2009

Размещение вашего приложения и таблиц jbpm в 1 базе данных позволяет обновлять как таблицы jbpm, так и данные вашего приложения за одну транзакцию. Это полезно, если, например, вы хотите обновить какой-либо атрибут данных вашего приложения при выполнении задачи в jbpm. Это помогает предотвратить повреждение ваших данных. В противном случае, если вы совершите транзакцию jbpm, а затем столкнетесь с проблемой фиксации транзакции данных вашего приложения, у вас будет довольно большая проблема ...

...