activiti setAssignee 和声明 API 之间有什么区别?



我想知道这两个API之间有什么区别。看起来 setAssignee 是细粒度的,而声明是粗粒度的。这是唯一的区别吗?

这些方法之间的区别在Activiti的Javadocs中提到。

void claim(String taskId, String userId):

与setAssignee(String,String)的区别在于,如果任务>已经分配了用户,则在此处进行检查。不检查标识组件是否知道用户。

回答我自己的问题。

查看了声明的方法源代码,以下是摘录:

if (!task.getAssignee().equals(userId))
{
    throw new ActivitiTaskAlreadyClaimedException(task.getId(), task.getAssignee());
}
else
{
    task.setAssignee(userId);
}      
commandContext.getHistoryManager().recordTaskClaim(taskId);

从上面很明显,这是对索赔的额外帮助:

  1. 如果任务已分配,则引发异常
  2. 记录已声明任务的历史记录

最新更新