需要在任务监听器中清理(修改)candidateGroups
和candidateUsers
:
@Override
public void notify(DelegateTask delegateTask) {
DelegateExecution execution = delegateTask.getExecution();
Set<IdentityLink> candidates = delegateTask.getCandidates();
for (IdentityLink candidate : candidates) {
// ???
delegateTask.deleteCandidateGroup(candidate.getGroupId());
delegateTask.deleteCandidateUser(candidate.getUserId());
}
}
问题是该怎么称呼?删除组和用户有2种不同的方法。方法candidate.getType()
可以帮助识别用户或群组,但org.activiti.engine.task.IdentityLinkType
还有其他值:
public class IdentityLinkType {
public static final String ASSIGNEE = "assignee";
public static final String CANDIDATE = "candidate";
public static final String OWNER = "owner";
public static final String STARTER = "starter";
public static final String PARTICIPANT = "participant";
}
答案 0 :(得分:0)
我不确定我是否理解你想要实现的目标,因为候选人都将被有效地清理干净#34;一旦任务完成。历史上唯一保留的是任务所有者和受让人。候选人未收集历史记录。
也就是说,身份链接类型允许用户以不同的方式参与流程(即所有者可以委托,受让人负责执行任务,候选人是潜在的受让人,但必须完成任务等等)。 / p>
您的代码&#34;清理&#34;候选人很好,但是一旦任务被宣告并完成,这可能是多余的。