|
37 | 37 | import org.flowable.cmmn.model.Stage; |
38 | 38 | import org.flowable.common.engine.api.FlowableException; |
39 | 39 | import org.flowable.common.engine.api.delegate.Expression; |
| 40 | +import org.flowable.common.engine.api.scope.ScopeTypes; |
40 | 41 | import org.flowable.common.engine.impl.identity.Authentication; |
41 | 42 | import org.flowable.entitylink.api.history.HistoricEntityLinkService; |
42 | 43 | import org.flowable.entitylink.service.impl.persistence.entity.EntityLinkEntity; |
|
51 | 52 | import org.flowable.task.service.impl.HistoricTaskInstanceQueryImpl; |
52 | 53 | import org.flowable.task.service.impl.persistence.entity.HistoricTaskInstanceEntity; |
53 | 54 | import org.flowable.task.service.impl.persistence.entity.TaskEntity; |
| 55 | +import org.flowable.variable.service.impl.persistence.entity.HistoricVariableInstanceEntity; |
| 56 | +import org.flowable.variable.service.impl.persistence.entity.HistoricVariableInstanceEntityManager; |
54 | 57 | import org.flowable.variable.service.impl.persistence.entity.VariableInstanceEntity; |
55 | 58 |
|
56 | 59 | /** |
@@ -191,9 +194,44 @@ public void recordMilestoneReached(MilestoneInstanceEntity milestoneInstance) { |
191 | 194 | @Override |
192 | 195 | public void recordHistoricCaseInstanceDeleted(String caseInstanceId, String tenantId) { |
193 | 196 | if (getHistoryConfigurationSettings().isHistoryEnabled()) { |
194 | | - CmmnHistoryHelper.deleteHistoricCaseInstance(cmmnEngineConfiguration, caseInstanceId); |
| 197 | + HistoricCaseInstanceEntityManager historicCaseInstanceEntityManager = cmmnEngineConfiguration.getHistoricCaseInstanceEntityManager(); |
| 198 | + HistoricCaseInstanceEntity historicCaseInstance = historicCaseInstanceEntityManager.findById(caseInstanceId); |
| 199 | + |
| 200 | + HistoricMilestoneInstanceEntityManager historicMilestoneInstanceEntityManager = cmmnEngineConfiguration.getHistoricMilestoneInstanceEntityManager(); |
| 201 | + historicMilestoneInstanceEntityManager.findHistoricMilestoneInstancesByQueryCriteria( |
| 202 | + new HistoricMilestoneInstanceQueryImpl().milestoneInstanceCaseInstanceId(historicCaseInstance.getId())) |
| 203 | + .forEach(m -> historicMilestoneInstanceEntityManager.delete(m.getId())); |
| 204 | + |
| 205 | + HistoricPlanItemInstanceEntityManager historicPlanItemInstanceEntityManager = cmmnEngineConfiguration.getHistoricPlanItemInstanceEntityManager(); |
| 206 | + historicPlanItemInstanceEntityManager.findByCriteria( |
| 207 | + new HistoricPlanItemInstanceQueryImpl().planItemInstanceCaseInstanceId(historicCaseInstance.getId())) |
| 208 | + .forEach(p -> historicPlanItemInstanceEntityManager.delete(p.getId())); |
| 209 | + |
| 210 | + HistoricIdentityLinkService historicIdentityLinkService = cmmnEngineConfiguration.getIdentityLinkServiceConfiguration().getHistoricIdentityLinkService(); |
| 211 | + historicIdentityLinkService.deleteHistoricIdentityLinksByScopeIdAndScopeType(historicCaseInstance.getId(), ScopeTypes.CMMN); |
| 212 | + historicIdentityLinkService.deleteHistoricIdentityLinksByScopeIdAndScopeType(historicCaseInstance.getId(), ScopeTypes.PLAN_ITEM); |
| 213 | + |
| 214 | + if (cmmnEngineConfiguration.isEnableEntityLinks()) { |
| 215 | + cmmnEngineConfiguration.getEntityLinkServiceConfiguration().getHistoricEntityLinkService() |
| 216 | + .deleteHistoricEntityLinksByScopeIdAndScopeType(historicCaseInstance.getId(), ScopeTypes.CMMN); |
| 217 | + } |
| 218 | + |
| 219 | + HistoricVariableInstanceEntityManager historicVariableInstanceEntityManager = cmmnEngineConfiguration.getVariableServiceConfiguration().getHistoricVariableInstanceEntityManager(); |
| 220 | + List<HistoricVariableInstanceEntity> historicVariableInstanceEntities = historicVariableInstanceEntityManager |
| 221 | + .findHistoricalVariableInstancesByScopeIdAndScopeType(caseInstanceId, ScopeTypes.CMMN); |
| 222 | + for (HistoricVariableInstanceEntity historicVariableInstanceEntity : historicVariableInstanceEntities) { |
| 223 | + historicVariableInstanceEntityManager.delete(historicVariableInstanceEntity); |
| 224 | + } |
| 225 | + |
| 226 | + TaskHelper.deleteHistoricTaskInstancesByCaseInstanceId(caseInstanceId, cmmnEngineConfiguration); |
| 227 | + |
| 228 | + historicCaseInstanceEntityManager.delete(historicCaseInstance); |
| 229 | + |
| 230 | + // Also delete any sub cases that may be active |
| 231 | + historicCaseInstanceEntityManager.createHistoricCaseInstanceQuery().caseInstanceParentId(caseInstanceId).list() |
| 232 | + .forEach(c -> recordHistoricCaseInstanceDeleted(c.getId(), c.getTenantId())); |
195 | 233 | } |
196 | | - } |
| 234 | + } |
197 | 235 |
|
198 | 236 | @Override |
199 | 237 | public void recordBulkDeleteHistoricCaseInstances(Collection<String> caseInstanceIds) { |
|
0 commit comments