Встраивание Camunda в существующее приложение Java

Я вытащил последний образ Camunda и запустил Camunda в собственном докер-контейнере. У меня есть dmn, загруженный в Camunda Cockpit, и я могу выполнять вызовы Rest, чтобы получить данные из таблицы решений, которую я загрузил в Camunda Cockpit. Однако я не хочу полагаться на то, что Камунда будет бегать самостоятельно. У меня есть огромное приложение (микросервис, работающий в собственном докер-контейнере), и я хочу встроить Camunda в свой микросервис (который использует Osgi, Java, Docker, Maven и т. Д.). Может ли кто-нибудь помочь мне с этим?


person Tiya    schedule 17.11.2020    source источник
comment
Вам нужна BPMN или просто таблицы решений DMN?   -  person JetBrains    schedule 19.11.2020


Ответы (1)


Для микросервиса Spring Boot вы можете добавить необходимые файлы запуска и конфигурации в свое развертывание, и все будет в порядке. См., Например, https://start.camunda.com/, чтобы получить все необходимое. Затем вы можете получить доступ к Camunda через Java API или REST (если был включен стартер).

Если вы не работаете в среде Spring Boot, то способ начальной загрузки Camunda может отличаться. На простом Java, без использования контейнера, это было бы примерно так:

    ProcessEngine processEngine = ProcessEngineConfiguration
        .createStandaloneProcessEngineConfiguration()
        .setJdbcUrl("jdbc:h2:./camunda-db/process-engine;DB_CLOSE_DELAY=1000")
        .setDatabaseSchemaUpdate("true")
        .setJobExecutorActivate(true)
        .buildProcessEngine();
    
    processEngine.getRepositoryService()
        .createDeployment()
        .addClasspathResource("myProcess.bpmn")
        .deploy();
        
    ProcessInstance pi = processEngine.getRuntimeService()
        .startProcessInstanceByKey("myProcess");

В стандартной среде Spring вы бы загрузили движок, загрузив контекст:

    ClassPathXmlApplicationContext applicationContext = 
        new ClassPathXmlApplicationContext("/spring-context.xml");
    ProcessEngine processEngine = (ProcessEngine) applicationContext.getBean("processEngine");
        
    processEngine.getRepositoryService()
        .createDeployment()
        .addClasspathResource("myProcess.bpmn")
        .deploy();

См. Также: https://docs.camunda.org/manual/latest/user-guide/process-engine/process-engine-bootstrapping/

https://docs.camunda.org/get-started/quick-start/install/

Обновление на основе комментария:

Поддержка Camunda OSGI описана здесь: https://github.com/camunda/camunda-bpm-platform-osgi

Вам нужно будет обновить проект до более новой версии, что, вероятно, не потребует больших усилий, поскольку версия осталась совместимой.

(Я бы также посоветовал вам вместо этого подумать о переносе микросервиса на Spring Boot. Сложность, доступные знания на рынке, срок поддержки и т. Д.)

person rob2universe    schedule 18.11.2020
comment
Спасибо за ваш ответ. Micr-service не использует Spring-boot, но использует Osgi, Java, Docker, Maven и т. Д. - person Tiya; 18.11.2020
comment
расширенный ответ. - person rob2universe; 19.11.2020