diff --git a/gui-backend/src/main/java/eu/melodic/upperware/guibackend/service/environment/EnvironmentService.java b/gui-backend/src/main/java/eu/melodic/upperware/guibackend/service/environment/EnvironmentService.java index 65b7f43a345f20f00e7b12c035a40307a265dc9a..6d7d68e7f069253b49289648689bd9cc1faa81d5 100644 --- a/gui-backend/src/main/java/eu/melodic/upperware/guibackend/service/environment/EnvironmentService.java +++ b/gui-backend/src/main/java/eu/melodic/upperware/guibackend/service/environment/EnvironmentService.java @@ -1,11 +1,13 @@ package eu.melodic.upperware.guibackend.service.environment; +import eu.melodic.cache.impl.MemcacheServiceImpl; import eu.melodic.upperware.guibackend.communication.camunda.CamundaClientApi; import eu.melodic.upperware.guibackend.communication.camunda.response.CamundaProcesInstanceResponse; import eu.melodic.upperware.guibackend.communication.proactive.ProactiveClientServiceRestart; import eu.melodic.upperware.guibackend.communication.proactive.ProactiveClientServiceRestartImpl; import eu.melodic.upperware.guibackend.controller.process.response.ProcessInstanceResponse; import eu.melodic.upperware.guibackend.service.deployment.DeploymentService; +import eu.melodic.upperware.guibackend.service.process.ProcessService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -22,6 +24,7 @@ import java.util.List; public class EnvironmentService { private DeploymentService deploymentService; + private ProcessService processService; private CamundaClientApi camundaClientApi; private ProactiveClientServiceRestart proactiveClientServiceRestart; private MemcacheServiceImpl memcachedService; @@ -35,6 +38,7 @@ public class EnvironmentService { for(String xmiModel : allXmiModels) { deploymentService.deleteXmiModel(xmiModel); } + processService.removeCpModels(); runRestartScript(); proactiveClientServiceRestart.removeAllJobs(); proactiveClientServiceRestart.removeAllNodeSources(); diff --git a/gui-backend/src/main/java/eu/melodic/upperware/guibackend/service/process/ProcessService.java b/gui-backend/src/main/java/eu/melodic/upperware/guibackend/service/process/ProcessService.java index f1b12926d1362a31d7f5a64a5c187c93022dba82..9dc71a08fcbb6731e600c3b52b89b3e43b250808 100644 --- a/gui-backend/src/main/java/eu/melodic/upperware/guibackend/service/process/ProcessService.java +++ b/gui-backend/src/main/java/eu/melodic/upperware/guibackend/service/process/ProcessService.java @@ -4,6 +4,7 @@ import eu.melodic.models.services.adapter.DifferenceRequestImpl; import eu.melodic.models.services.adapter.DifferenceResponse; import eu.melodic.upperware.guibackend.communication.adapter.AdapterApi; import eu.melodic.upperware.guibackend.communication.camunda.CamundaApi; +import eu.melodic.upperware.guibackend.communication.camunda.response.CamundaProcesInstanceResponse; import eu.melodic.upperware.guibackend.communication.camunda.response.CamundaVariableName; import eu.melodic.upperware.guibackend.communication.camunda.response.CamundaVariableResponseItem; import eu.melodic.upperware.guibackend.controller.common.ProcessState; @@ -50,6 +51,22 @@ public class ProcessService { } } + public void removeCpModels() { + List processInstances = camundaApi.getProcessInstances(); + List processIds = processInstances.stream() + .map(CamundaProcesInstanceResponse::getId) + .collect(Collectors.toList()); + log.info("Found processes with ids: {}", processIds); + for (String processId : processIds) { + Map processVariables = camundaApi.getProcessVariables(processId); + if (processVariables.containsKey(CamundaVariableName.CP_CDO_PATH.label)) { + String cpCdoPath = processVariables.get(CamundaVariableName.CP_CDO_PATH.label).getValue(); + log.info("Deleting CpModel with path: CpCdoPath: {} of process {}", cpCdoPath, processId); + cdoService.deleteXmi(cpCdoPath); + } + } + } + public CpSolutionResponse getCpSolutionForProcess(String processId) { Map processVariables = camundaApi.getProcessVariables(processId); if (processVariables.containsKey(CamundaVariableName.CP_CDO_PATH.label)) {