Skip to content

Commit 918253c

Browse files
authored
Add tests for IdentityLinkInterceptors and enhance SaveTaskCmds to ha… (#4119)
* Add tests for IdentityLinkInterceptors and enhance SaveTaskCmds to handle assignee and owner changes * Do not trigger IdentityLinkInterceptors when assignee or owner is removed
1 parent ad923ee commit 918253c

File tree

6 files changed

+807
-0
lines changed

6 files changed

+807
-0
lines changed

modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/cmd/SaveTaskCmd.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.flowable.cmmn.engine.CmmnEngineConfiguration;
1919
import org.flowable.cmmn.engine.impl.task.TaskHelper;
2020
import org.flowable.cmmn.engine.impl.util.CommandContextUtil;
21+
import org.flowable.cmmn.engine.interceptor.CmmnIdentityLinkInterceptor;
2122
import org.flowable.common.engine.api.FlowableIllegalArgumentException;
2223
import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType;
2324
import org.flowable.common.engine.impl.history.HistoryLevel;
@@ -76,6 +77,11 @@ public Void execute(CommandContext commandContext) {
7677

7778
if (!StringUtils.equals(originalAssignee, task.getAssignee())) {
7879

80+
CmmnIdentityLinkInterceptor identityLinkInterceptor = cmmnEngineConfiguration.getIdentityLinkInterceptor();
81+
if (identityLinkInterceptor != null && task.getAssignee() != null) {
82+
identityLinkInterceptor.handleAddAssigneeIdentityLinkToTask(task, task.getAssignee());
83+
}
84+
7985
cmmnEngineConfiguration.getListenerNotificationHelper().executeTaskListeners(task, TaskListener.EVENTNAME_ASSIGNMENT);
8086

8187
if (CommandContextUtil.getEventDispatcher() != null && CommandContextUtil.getEventDispatcher().isEnabled()) {
@@ -84,6 +90,15 @@ public Void execute(CommandContext commandContext) {
8490
}
8591

8692
}
93+
94+
String originalOwner = originalTaskEntity.getOwner();
95+
96+
if (!StringUtils.equals(originalOwner, task.getOwner()) && task.getOwner() != null) {
97+
CmmnIdentityLinkInterceptor identityLinkInterceptor = cmmnEngineConfiguration.getIdentityLinkInterceptor();
98+
if (identityLinkInterceptor != null) {
99+
identityLinkInterceptor.handleAddOwnerIdentityLinkToTask(task, task.getOwner());
100+
}
101+
}
87102
}
88103

89104
return null;

modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/task/TaskHelper.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,12 +166,18 @@ public static void changeTaskOwner(TaskEntity taskEntity, String owner, CmmnEngi
166166
}
167167

168168
protected static void addAssigneeIdentityLinks(TaskEntity taskEntity, CmmnEngineConfiguration cmmnEngineConfiguration) {
169+
if (taskEntity.getAssignee() == null) {
170+
return;
171+
}
169172
if (cmmnEngineConfiguration.getIdentityLinkInterceptor() != null) {
170173
cmmnEngineConfiguration.getIdentityLinkInterceptor().handleAddAssigneeIdentityLinkToTask(taskEntity, taskEntity.getAssignee());
171174
}
172175
}
173176

174177
protected static void addOwnerIdentityLink(TaskEntity taskEntity, CmmnEngineConfiguration cmmnEngineConfiguration) {
178+
if (taskEntity.getOwner() == null) {
179+
return;
180+
}
175181
if (cmmnEngineConfiguration.getIdentityLinkInterceptor() != null) {
176182
cmmnEngineConfiguration.getIdentityLinkInterceptor().handleAddOwnerIdentityLinkToTask(taskEntity, taskEntity.getOwner());
177183
}

0 commit comments

Comments
 (0)