Должны ли таблицы JBPM находиться в отдельной базе данных?

StackOverflow https://stackoverflow.com/questions/1328817

  •  19-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top