#java #spring #bpmn #multi-module #camunda
#java #spring #bpmn #многомодульный #camunda
Вопрос:
Я пытаюсь настроить автоматическое развертывание ресурсов Camunda для многомодульного проекта. Я хочу заархивировать это для следующей структуры проекта:
---learnCamunda
| pom.xml
---application
| | pom.xml
| ---src
| ---main
| ---java
| | ---com
| | ---camunda
| | ---learnCamunda
| | | LearnCamundaApplication.java
| | ---configuration
| | CustomOracleDialect.java
| | FlywayConfiguration.java
| | H2ConsoleConfiguration.java
| ---resources
| | application.properties
| |
| ---processes
| loanRequest.bpmn
---contract-management
| pom.xml
---src
---main
---java
| ---com
| ---camunda
| ---learnCamunda
| ---dto
| ---dts
| ---entity
| ---enums
---resources
---processes
DUMMY_PROCESS.bpmn
где application
и contract management
являются модулями learnCamunda
проекта, я хочу, чтобы мой application.properties
предоставлял classpath для сканирования ресурсов Camunda, чтобы получить оба loanRequest.bpmn
и DUMMY_PROCESS.bpmn
. Возможно ли это через application.properties
в модуле приложения? (Модуль приложения зависит от модуля управления контрактами)
Если это возможно, то какое свойство camunda мне следует установить и для чего?
Я уже пробовал разные комбинации deployment-resource-pattern
, но ни одна из них не сработала.
РЕДАКТИРОВАТЬ: Одна вещь, которую я заметил, заключается в том, что PathMatchingResourcePatternResolver.findAllClassPathResources
загружает все ресурсы из target, моя скомпилированная модель находится в target.classes.processes
, а ресурс classpath из resolver — в target.classes
, поэтому кажется, что это делается не рекурсивно, но мне трудно подтвердить это
Ответ №1:
Вы правы, рассматривая deployment-resource-pattern
свойство как место для начала. По умолчанию он будет включать classpath*:**/*.bpmn
поэтому ваш файл должен быть загружен.
Это наводит на мысль, что проблема либо в том, что было изменено значение deployment-resource-pattern
, либо jar для управления контрактами отсутствует в classpath.
Я предлагаю вам попробовать отладку приложения, чтобы проверить значение camunda.deployment-resource-pattern
. Затем взгляните на процесс сборки и убедитесь, что ваше приложение зависит от управления контрактами, его версия одинакова, и родительский pom создает их оба.
Комментарии:
1. я проверил, что модульное приложение имеет управление контрактами в classpath, и приложение, и управление контрактами определены как модули в родительском pom, управление версиями совпадает, и parent действительно создает их оба. Я удалил свойство
deployment-resource-pattern
, чтобы использовать default, но это не помогло. я проверилDefaultDeploymentConfiguration
, и шаблоны ресурсов верны. Также у меня есть сомнения по поводу того, где должна быть зависимость от camunda. В настоящее время зависимость находится в управлении контрактами, это правильно?2. после долгого сеанса отладки выясняется, что вы были частично правы, проблема заключалась в путях к классам: управление контрактами модуля не было разрешено в пути к классам проекта по какой-то причине, я реорганизовал структуры pom, и теперь это работает как шарм