Hi everyone,
we are using the camunda-spring-boot-starter to deploy a process application containing multiple process definitions. This leads to the following behaviour: Everytime we deploy a changed process every process gets a new version (i remember reading an article about the decision behind that once but i cant’t find it anymore). Since this leads to operations hell when using the cockpit we want to avoid that every process gets a new version but just the changed process.
What we tried is setting <property name="isScanForProcessDefinitions">false</property>
in the processes.xml and just referencing the processes we want to deploy with the current release via <resource></resource>
.
But when we do that the process application only gets registered with the deployment for the given resources/definitions.
This again leads to problems when we need to access the application info for a given definition (registered with an old deployment). E.g. for retrieving the context path:
String deploymentId = processEngine.getRepositoryService().getProcessDefinition(processDefinitionId).getDeploymentId();
String processApplicationName = processEngine.getManagementService().getProcessApplicationForDeployment(deploymentId);
ProcessApplicationService processApplicationService = BpmPlatform.getProcessApplicationService();
ProcessApplicationInfo processApplicationInfo = processApplicationService.getProcessApplicationInfo(processApplicationName);
if(processApplicationInfo == null){
return "";
}
return processApplicationInfo.getProperties().get(ProcessApplicationInfo.PROP_SERVLET_CONTEXT_PATH);
So what I am trying to ask is this:
- What is the “right” way to avoid versioning all process defintions if only one has changed ? Do we need to define a ProcessApplication class for every process ? (I guess this means we either can’t use the SpringBootProcessApplication any more or have to deploy an jar for any process)
- Retrieving the contextPath is the only spot where we rely on the ProcessApplication-Deployment-Registration. So is it even a problem when this doesn’t exist ? While playing around with deployments i also figured out that the spring autodeploy feature doesn’t register the application with the deployment. Does that lead to any other problems ?
One last note: We already have an automated version migration on @PostDeploy in place but i don’t want to use it to overcome this issue. Doing this as a default for every process to avoid running instances in multiple versions will make it an unconcius step and thus very likely lead to errors.
Thanks in advance for help,
Jan