Загрузка определений процессов из нескольких модулей в camunda

#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, и теперь это работает как шарм