Assuming the Spring Boot app is connected to a database which has all the Camunda related tables created like dbo.ACT_HI_PROCINST, dbo.ACT_HI_TASKINST, dbo.ACT_RU_TASK, dbo.ACT_RU_EXECUTION, etc. There is a UI screen (Angular/React frontend) which accepts BPMN & DMN files to be deployed in Camunda database (could be any Relational Database). This (.bpmn/.dmn) should get deployed as the latest version of their file name.
Camunda Version: 7.13.0
User can select a file by browsing the file system from UI screen (assuming UI file browsing and selecting a valid .bpmn or .dmn is done). User has to send this selected file as part of request in REST call to Spring Boot app, and deploy the .bpmn/.dmn file in database.
A .bpmn or .dmn could be deployed in many ways:
application.yaml: Provide Camunda DB datasource configurations like url, username and password along with Camunda admin user credential like -
pom.xml: camunda-bpm-spring-boot-starter camunda-bpm-spring-boot-starter-webapp camunda-bpm-spring-boot-starter-rest
Auto-deployment: @EnableProcessApplication: Spring Boot App startup auto-deploy from /src/main/resources/bpmn/*
Manual deployment: By sending .bpmn/.dmn file from fronend UI via REST call to Spring Boot controller and using Camunda's RepositoryService.createDeployment(). After deployment is successful, new deployment ID can be found in database using SQL:
Main Class:
REST Controller endpoint: A Camunda BPMN or DMN file to be deployed in database will be consumed by the rest endpoint as MediaType.MULTIPART_FORM_DATA_VALUE.
Service Interface:
Service Implementation Class: RepositoryService - Service providing access to the repository of process definitions and deployments.