Skip to content

Commit 1d4a975

Browse files
changed recordIdentityLinkCreated to also include the process/case instance (#4117)
1 parent 93c1f75 commit 1d4a975

10 files changed

Lines changed: 60 additions & 6 deletions

File tree

modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/history/CmmnHistoryManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.util.Date;
1717

1818
import org.flowable.cmmn.api.repository.CaseDefinition;
19+
import org.flowable.cmmn.api.runtime.CaseInstance;
1920
import org.flowable.cmmn.engine.impl.persistence.entity.CaseInstanceEntity;
2021
import org.flowable.cmmn.engine.impl.persistence.entity.MilestoneInstanceEntity;
2122
import org.flowable.cmmn.engine.impl.persistence.entity.PlanItemInstanceEntity;
@@ -51,6 +52,8 @@ public interface CmmnHistoryManager {
5152

5253
void recordIdentityLinkCreated(IdentityLinkEntity identityLink);
5354

55+
void recordIdentityLinkCreated(CaseInstanceEntity caseInstance, IdentityLinkEntity identityLink);
56+
5457
void recordIdentityLinkDeleted(IdentityLinkEntity identityLink);
5558

5659
void recordEntityLinkCreated(EntityLinkEntity entityLink);

modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/history/CompositeCmmnHistoryManager.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.Date;
1818

1919
import org.flowable.cmmn.api.repository.CaseDefinition;
20+
import org.flowable.cmmn.api.runtime.CaseInstance;
2021
import org.flowable.cmmn.engine.impl.persistence.entity.CaseInstanceEntity;
2122
import org.flowable.cmmn.engine.impl.persistence.entity.MilestoneInstanceEntity;
2223
import org.flowable.cmmn.engine.impl.persistence.entity.PlanItemInstanceEntity;
@@ -109,6 +110,13 @@ public void recordIdentityLinkCreated(IdentityLinkEntity identityLink) {
109110
}
110111
}
111112

113+
@Override
114+
public void recordIdentityLinkCreated(CaseInstanceEntity caseInstance, IdentityLinkEntity identityLink) {
115+
for (CmmnHistoryManager historyManager : historyManagers) {
116+
historyManager.recordIdentityLinkCreated(caseInstance, identityLink);
117+
}
118+
}
119+
112120
@Override
113121
public void recordIdentityLinkDeleted(IdentityLinkEntity identityLink) {
114122
for (CmmnHistoryManager historyManager : historyManagers) {

modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/history/DefaultCmmnHistoryManager.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.flowable.cmmn.api.history.HistoricMilestoneInstance;
2222
import org.flowable.cmmn.api.history.HistoricPlanItemInstance;
2323
import org.flowable.cmmn.api.repository.CaseDefinition;
24+
import org.flowable.cmmn.api.runtime.CaseInstance;
2425
import org.flowable.cmmn.engine.CmmnEngineConfiguration;
2526
import org.flowable.cmmn.engine.impl.persistence.entity.CaseInstanceEntity;
2627
import org.flowable.cmmn.engine.impl.persistence.entity.HistoricCaseInstanceEntity;
@@ -177,6 +178,11 @@ public void recordBulkDeleteHistoricCaseInstances(Collection<String> caseInstanc
177178

178179
@Override
179180
public void recordIdentityLinkCreated(IdentityLinkEntity identityLink) {
181+
this.recordIdentityLinkCreated(null, identityLink);
182+
}
183+
184+
@Override
185+
public void recordIdentityLinkCreated(CaseInstanceEntity caseInstance, IdentityLinkEntity identityLink) {
180186
if (getHistoryConfigurationSettings().isHistoryEnabledForIdentityLink(identityLink)
181187
&& (identityLink.getScopeId() != null || identityLink.getTaskId() != null)) {
182188
HistoricIdentityLinkService historicIdentityLinkService = cmmnEngineConfiguration.getIdentityLinkServiceConfiguration().getHistoricIdentityLinkService();

modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/util/IdentityLinkUtil.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.flowable.cmmn.api.runtime.CaseInstance;
1818
import org.flowable.cmmn.api.runtime.PlanItemInstance;
1919
import org.flowable.cmmn.engine.CmmnEngineConfiguration;
20+
import org.flowable.cmmn.engine.impl.persistence.entity.CaseInstanceEntity;
2021
import org.flowable.common.engine.api.scope.ScopeTypes;
2122
import org.flowable.common.engine.impl.identity.Authentication;
2223
import org.flowable.identitylink.service.impl.persistence.entity.IdentityLinkEntity;
@@ -33,14 +34,13 @@
3334
*/
3435
public class IdentityLinkUtil {
3536

36-
public static IdentityLinkEntity createCaseInstanceIdentityLink(CaseInstance caseInstance, String userId, String groupId, String type,
37+
public static IdentityLinkEntity createCaseInstanceIdentityLink(CaseInstanceEntity caseInstanceEntity, String userId, String groupId, String type,
3738
CmmnEngineConfiguration cmmnEngineConfiguration) {
3839

3940
IdentityLinkEntity identityLinkEntity = cmmnEngineConfiguration.getIdentityLinkServiceConfiguration()
40-
.getIdentityLinkService().createScopeIdentityLink(null, caseInstance.getId(), ScopeTypes.CMMN, userId, groupId, type);
41-
42-
CommandContextUtil.getCmmnHistoryManager().recordIdentityLinkCreated(identityLinkEntity);
43-
41+
.getIdentityLinkService().createScopeIdentityLink(null, caseInstanceEntity.getId(), ScopeTypes.CMMN, userId, groupId, type);
42+
43+
CommandContextUtil.getCmmnHistoryManager().recordIdentityLinkCreated(caseInstanceEntity, identityLinkEntity);
4444
return identityLinkEntity;
4545
}
4646

modules/flowable-cmmn-engine/src/test/java/org/flowable/cmmn/test/history/CompositeCmmnHistoryManagerTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,16 @@ void recordIdentityLinkCreated() {
118118
verify(historyManager2).recordIdentityLinkCreated(same(identityLink));
119119
}
120120

121+
@Test
122+
void recordIdentityLinkCreatedWithCaseInstance() {
123+
CaseInstanceEntity caseInstance = new CaseInstanceEntityImpl();
124+
IdentityLinkEntity identityLink = new IdentityLinkEntityImpl();
125+
compositeHistoryManager.recordIdentityLinkCreated(caseInstance, identityLink);
126+
127+
verify(historyManager1).recordIdentityLinkCreated(same(caseInstance), same(identityLink));
128+
verify(historyManager2).recordIdentityLinkCreated(same(caseInstance), same(identityLink));
129+
}
130+
121131
@Test
122132
void recordIdentityLinkDeleted() {
123133
IdentityLinkEntity identityLink = new IdentityLinkEntityImpl();

modules/flowable-engine/src/main/java/org/flowable/engine/impl/history/CompositeHistoryManager.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,13 @@ public void recordIdentityLinkCreated(IdentityLinkEntity identityLink) {
288288
}
289289
}
290290

291+
@Override
292+
public void recordIdentityLinkCreated(ExecutionEntity processInstance, IdentityLinkEntity identityLink) {
293+
for (HistoryManager historyManager : historyManagers) {
294+
historyManager.recordIdentityLinkCreated(processInstance,identityLink);
295+
}
296+
}
297+
291298
@Override
292299
public void recordIdentityLinkDeleted(IdentityLinkEntity identityLink) {
293300
for (HistoryManager historyManager : historyManagers) {

modules/flowable-engine/src/main/java/org/flowable/engine/impl/history/DefaultHistoryManager.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,11 @@ public void recordFormPropertiesSubmitted(ExecutionEntity processInstance, Map<S
389389
// Identity link related history
390390
@Override
391391
public void recordIdentityLinkCreated(IdentityLinkEntity identityLink) {
392+
recordIdentityLinkCreated(null, identityLink);
393+
}
394+
395+
@Override
396+
public void recordIdentityLinkCreated(ExecutionEntity processInstance, IdentityLinkEntity identityLink) {
392397
// It makes no sense storing historic counterpart for an identity link that is related
393398
// to a process definition only as this is never kept in history
394399
if (getHistoryConfigurationSettings().isHistoryEnabledForIdentityLink(identityLink)

modules/flowable-engine/src/main/java/org/flowable/engine/impl/history/HistoryManager.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,11 @@ void recordHistoricDetailVariableCreate(VariableInstanceEntity variable, Executi
198198
*/
199199
void recordIdentityLinkCreated(IdentityLinkEntity identityLink);
200200

201+
/**
202+
* Record the creation of a new {@link IdentityLink} for the processInstance, if audit history is enabled.
203+
*/
204+
void recordIdentityLinkCreated(ExecutionEntity processInstance, IdentityLinkEntity identityLinkEntity);
205+
201206
/**
202207
* Record the deletion of a {@link IdentityLink}, if audit history is enabled
203208
*/

modules/flowable-engine/src/main/java/org/flowable/engine/impl/util/IdentityLinkUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public static IdentityLinkEntity createProcessInstanceIdentityLink(ExecutionEnti
3737
IdentityLinkEntity identityLinkEntity = processEngineConfiguration.getIdentityLinkServiceConfiguration().getIdentityLinkService(
3838
).createProcessInstanceIdentityLink(processInstanceExecution.getId(), userId, groupId, type);
3939

40-
CommandContextUtil.getHistoryManager().recordIdentityLinkCreated(identityLinkEntity);
40+
CommandContextUtil.getHistoryManager().recordIdentityLinkCreated(processInstanceExecution, identityLinkEntity);
4141
processInstanceExecution.getIdentityLinks().add(identityLinkEntity);
4242

4343
return identityLinkEntity;

modules/flowable-engine/src/test/java/org/flowable/engine/test/history/CompositeHistoryManagerTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,16 @@ void recordIdentityLinkCreated() {
388388
verify(historyManager2).recordIdentityLinkCreated(same(identityLink));
389389
}
390390

391+
@Test
392+
void recordIdentityLinkCreatedWithProcessInstance() {
393+
ExecutionEntity processInstance = new ExecutionEntityImpl();
394+
IdentityLinkEntity identityLink = new IdentityLinkEntityImpl();
395+
compositeHistoryManager.recordIdentityLinkCreated(processInstance, identityLink);
396+
397+
verify(historyManager1).recordIdentityLinkCreated(same(processInstance), same(identityLink));
398+
verify(historyManager2).recordIdentityLinkCreated(same(processInstance), same(identityLink));
399+
}
400+
391401
@Test
392402
void recordIdentityLinkDeleted() {
393403
IdentityLinkEntity identityLink = new IdentityLinkEntityImpl();

0 commit comments

Comments
 (0)