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