Camunda를 기존 Java 애플리케이션에 포함

Nov 17 2020

Camunda 최신 이미지를 가져와 자체 도커 컨테이너에서 Camunda를 실행했습니다. Camunda Cockpit에 dmn을 업로드했으며 Camunda Cockpit에 업로드 한 의사 결정 테이블에서 데이터를 가져 오기 위해 Rest 호출을 할 수 있습니다. 그러나 저는 Camunda가 독립적으로 실행되는 것에 의존하고 싶지 않습니다. 기존의 거대한 애플리케이션 (자체 Docker 컨테이너에서 실행되는 마이크로 서비스)이 있고 Camunda를 내 마이크로 서비스 (Osgi, Java, Docker, Maven 등을 사용)에 포함하고 싶습니다. 누군가가 이것으로 나를 안내해 줄 수 있습니까?

답변

3 rob2universe Nov 18 2020 at 03:05

Spring Boot 마이크로 서비스의 경우 필요한 시작 및 구성 파일을 배포에 추가 할 수 있으며 사용하면 좋습니다. 예를 참조하십시오https://start.camunda.com/필요한 모든 것을 얻을 수 있습니다. 그런 다음 Java API 또는 REST (스타터가 포함 된 경우)를 통해 Camunda에 액세스 할 수 있습니다.

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로 마이그레이션하는 것을 고려하는 것이 좋습니다. 복잡성, 시장에서 사용 가능한 지식, 수명 지원, ..)