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

Nov 17 2020

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

Ответы

3 rob2universe Nov 18 2020 at 03:05

Для микросервиса 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. Сложность, доступные знания на рынке, срок поддержки, ..)