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

时间:2013-10-31 08:29:22

标签: activiti

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

2 个答案:

答案 0 :(得分:1)

Javadocs of Activiti.

中提到了这些方法之间的差异

void claim(String taskId, String userId):

  

与setAssignee(String,String)的区别在于,如果任务>完成检查。已经有一个用户分配给它。无论用户是否为身份组件所知,都不会进行检查。

答案 1 :(得分:0)

Answering my own question

看一下索赔的方法源代码,下面是摘录:

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

从上面可以明显看出,这是声明的额外做法:

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