Skip to content

Commit ed7364b

Browse files
BertMatthysfiliphr
authored andcommitted
Stop the creation of historic entity links when the history level of the scope or subscope is NONE (#4186)
1 parent 6dcc027 commit ed7364b

37 files changed

Lines changed: 1939 additions & 170 deletions

File tree

modules/flowable-cmmn-engine-configurator/src/main/java/org/flowable/cmmn/engine/configurator/impl/cmmn/DefaultCaseInstanceService.java

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.apache.commons.lang3.StringUtils;
1919
import org.flowable.cmmn.api.CallbackTypes;
2020
import org.flowable.cmmn.api.CmmnRuntimeService;
21+
import org.flowable.cmmn.api.repository.CaseDefinition;
2122
import org.flowable.cmmn.api.runtime.CaseInstance;
2223
import org.flowable.cmmn.api.runtime.CaseInstanceBuilder;
2324
import org.flowable.cmmn.api.runtime.CaseInstanceState;
@@ -51,21 +52,16 @@ public String generateNewCaseInstanceId() {
5152
}
5253

5354
@Override
54-
public String startCaseInstanceByKey(String caseDefinitionKey, String predefinedCaseInstanceId, String caseInstanceName, String businessKey,
55-
String executionId,
56-
String tenantId, boolean fallbackToDefaultTenant, String parentDeploymentId, Map<String, Object> inParametersMap) {
57-
55+
public String startCaseInstance(String caseDefinitionId, String predefinedCaseInstanceId, String caseInstanceName, String businessKey,
56+
String executionId, String tenantId, Map<String, Object> inParametersMap) {
57+
5858
CaseInstanceBuilder caseInstanceBuilder = cmmnEngineConfiguration.getCmmnRuntimeService().createCaseInstanceBuilder();
59-
caseInstanceBuilder.caseDefinitionKey(caseDefinitionKey);
59+
caseInstanceBuilder.caseDefinitionId(caseDefinitionId);
6060

61-
if (parentDeploymentId != null) {
62-
caseInstanceBuilder.caseDefinitionParentDeploymentId(parentDeploymentId);
63-
}
64-
6561
if (predefinedCaseInstanceId != null) {
6662
caseInstanceBuilder.predefinedCaseInstanceId(predefinedCaseInstanceId);
6763
}
68-
64+
6965
if (tenantId != null) {
7066
caseInstanceBuilder.tenantId(tenantId);
7167
caseInstanceBuilder.overrideCaseDefinitionTenantId(tenantId);
@@ -80,18 +76,14 @@ public String startCaseInstanceByKey(String caseDefinitionKey, String predefined
8076
caseInstanceBuilder.variable(target, inParametersMap.get(target));
8177
}
8278

83-
if (fallbackToDefaultTenant) {
84-
caseInstanceBuilder.fallbackToDefaultTenant();
85-
}
86-
8779
if (businessKey != null) {
8880
caseInstanceBuilder.businessKey(businessKey);
8981
}
9082

9183
if (caseInstanceName != null) {
9284
caseInstanceBuilder.name(caseInstanceName);
9385
}
94-
86+
9587
CaseInstance caseInstance = caseInstanceBuilder.start();
9688
return caseInstance.getId();
9789
}
@@ -142,6 +134,29 @@ public void deleteCaseInstancesForExecutionId(String executionId) {
142134
}
143135
}
144136

137+
@Override
138+
public String resolveCaseDefinitionId(String caseDefinitionKey, String tenantId,
139+
boolean fallbackToDefaultTenant, String parentDeploymentId) {
140+
CaseDefinition caseDefinition = cmmnEngineConfiguration.getCaseInstanceHelper()
141+
.resolveCaseDefinition(caseDefinitionKey, tenantId,
142+
fallbackToDefaultTenant || cmmnEngineConfiguration.isFallbackToDefaultTenant(), parentDeploymentId);
143+
return caseDefinition.getId();
144+
}
145+
146+
@Override
147+
public boolean isHistoryEnabledForCaseDefinitionId(String caseDefinitionId) {
148+
return cmmnEngineConfiguration.getCmmnHistoryConfigurationSettings().isHistoryEnabled(caseDefinitionId);
149+
}
150+
151+
@Override
152+
public boolean isHistoryEnabledForCaseInstance(String caseInstanceId) {
153+
CaseInstanceEntity caseInstance = cmmnEngineConfiguration.getCaseInstanceEntityManager().findById(caseInstanceId);
154+
if (caseInstance != null) {
155+
return cmmnEngineConfiguration.getCmmnHistoryConfigurationSettings().isHistoryEnabled(caseInstance.getCaseDefinitionId());
156+
}
157+
return cmmnEngineConfiguration.getCmmnHistoryConfigurationSettings().isHistoryEnabled();
158+
}
159+
145160
@Override
146161
public void deleteCaseInstanceWithoutAgenda(String caseInstanceId) {
147162
cmmnEngineConfiguration.getCommandExecutor().execute(commandContext -> {

modules/flowable-cmmn-engine-configurator/src/main/java/org/flowable/cmmn/engine/configurator/impl/process/DefaultProcessInstanceService.java

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.flowable.engine.impl.persistence.entity.BpmnEngineEntityConstants;
3030
import org.flowable.engine.impl.persistence.entity.ExecutionEntity;
3131
import org.flowable.engine.impl.util.CommandContextUtil;
32+
import org.flowable.engine.repository.ProcessDefinition;
3233
import org.flowable.engine.runtime.ProcessInstance;
3334
import org.flowable.engine.runtime.ProcessInstanceBuilder;
3435
import org.flowable.form.api.FormInfo;
@@ -56,30 +57,27 @@ public String generateNewProcessInstanceId() {
5657
}
5758

5859
@Override
59-
public String startProcessInstanceByKey(String processDefinitionKey, String predefinedProcessInstanceId, String stageInstanceId,
60-
String tenantId, Boolean fallbackToDefaultTenant, String parentDeploymentId, Map<String, Object> inParametersMap, String businessKey,
60+
public String startProcessInstance(String processDefinitionId, String predefinedProcessInstanceId, String stageInstanceId,
61+
String tenantId, Map<String, Object> inParametersMap, String businessKey,
6162
Map<String, Object> variableFormVariables, FormInfo variableFormInfo, String variableFormOutcome) {
62-
63-
return startProcessInstanceByKey(processDefinitionKey, predefinedProcessInstanceId, null, stageInstanceId, tenantId, fallbackToDefaultTenant,
64-
parentDeploymentId, inParametersMap, businessKey, variableFormVariables, variableFormInfo, variableFormOutcome);
63+
64+
return startProcessInstance(processDefinitionId, predefinedProcessInstanceId, null, stageInstanceId, tenantId,
65+
inParametersMap, businessKey, variableFormVariables, variableFormInfo, variableFormOutcome);
6566
}
6667

6768
@Override
68-
public String startProcessInstanceByKey(String processDefinitionKey, String predefinedProcessInstanceId, String planItemInstanceId, String stageInstanceId,
69-
String tenantId, Boolean fallbackToDefaultTenant, String parentDeploymentId, Map<String, Object> inParametersMap, String businessKey,
69+
public String startProcessInstance(String processDefinitionId, String predefinedProcessInstanceId, String planItemInstanceId, String stageInstanceId,
70+
String tenantId, Map<String, Object> inParametersMap, String businessKey,
7071
Map<String, Object> variableFormVariables, FormInfo variableFormInfo, String variableFormOutcome) {
71-
72+
7273
ProcessInstanceBuilder processInstanceBuilder = processEngineConfiguration.getRuntimeService().createProcessInstanceBuilder();
73-
processInstanceBuilder.processDefinitionKey(processDefinitionKey);
74+
processInstanceBuilder.processDefinitionId(processDefinitionId);
75+
7476
if (tenantId != null) {
7577
processInstanceBuilder.tenantId(tenantId);
7678
processInstanceBuilder.overrideProcessDefinitionTenantId(tenantId);
7779
}
7880

79-
if (parentDeploymentId != null) {
80-
processInstanceBuilder.processDefinitionParentDeploymentId(parentDeploymentId);
81-
}
82-
8381
processInstanceBuilder.predefineProcessInstanceId(predefinedProcessInstanceId);
8482

8583
if (planItemInstanceId != null) {
@@ -91,10 +89,6 @@ public String startProcessInstanceByKey(String processDefinitionKey, String pred
9189
processInstanceBuilder.variable(target, inParametersMap.get(target));
9290
}
9391

94-
if (fallbackToDefaultTenant != null && fallbackToDefaultTenant) {
95-
processInstanceBuilder.fallbackToDefaultTenant();
96-
}
97-
9892
if (businessKey != null) {
9993
processInstanceBuilder.businessKey(businessKey);
10094
}
@@ -146,6 +140,30 @@ public List<IOParameter> getOutputParametersOfCaseTask(String executionId) {
146140
return cmmnParameters;
147141
}
148142

143+
@Override
144+
public String resolveProcessDefinitionId(String processDefinitionKey, String tenantId,
145+
Boolean fallbackToDefaultTenant, String parentDeploymentId) {
146+
ProcessDefinition processDefinition = processEngineConfiguration.getProcessInstanceHelper()
147+
.resolveProcessDefinition(processDefinitionKey, tenantId,
148+
Boolean.TRUE.equals(fallbackToDefaultTenant) || processEngineConfiguration.isFallbackToDefaultTenant(),
149+
parentDeploymentId, processEngineConfiguration);
150+
return processDefinition.getId();
151+
}
152+
153+
@Override
154+
public boolean isHistoryEnabledForProcessDefinitionId(String processDefinitionId) {
155+
return processEngineConfiguration.getHistoryConfigurationSettings().isHistoryEnabled(processDefinitionId);
156+
}
157+
158+
@Override
159+
public boolean isHistoryEnabledForProcessInstance(String processInstanceId) {
160+
ExecutionEntity execution = processEngineConfiguration.getExecutionEntityManager().findById(processInstanceId);
161+
if (execution != null) {
162+
return processEngineConfiguration.getHistoryConfigurationSettings().isHistoryEnabled(execution.getProcessDefinitionId());
163+
}
164+
return processEngineConfiguration.getHistoryConfigurationSettings().isHistoryEnabled();
165+
}
166+
149167
@Override
150168
public void deleteProcessInstance(String processInstanceId) {
151169
processEngineConfiguration.getCommandExecutor().execute(commandContext -> {

0 commit comments

Comments
 (0)