in core/src/main/java/com/alibaba/smart/framework/engine/service/command/impl/DefaultTaskCommandService.java [101:138]
public void transfer(String taskId, String fromUserId, String toUserId) {
ConfigurationOption configurationOption = processEngineConfiguration
.getOptionContainer().get(ConfigurationOption.TRANSFER_ENABLED_OPTION.getId());
if (!configurationOption.isEnabled()){
throw new ValidationException("should set TRANSFER_ENABLED_OPTION ");
}
List<TaskAssigneeInstance> taskAssigneeInstanceList = taskAssigneeStorage.findList(taskId,processEngineConfiguration );
if(CollectionUtil.isEmpty(taskAssigneeInstanceList)){
throw new ValidationException("taskAssigneeInstanceList can't be empty for taskId:"+taskId);
}
boolean found = false;
TaskAssigneeInstance matchedTaskAssigneeInstance = null;
for (TaskAssigneeInstance taskAssigneeInstance : taskAssigneeInstanceList) {
if (taskAssigneeInstance.getAssigneeId().equals(fromUserId)){
found =true;
matchedTaskAssigneeInstance = taskAssigneeInstance;
break;
}
}
if(!found){
throw new ValidationException("No taskAssigneeInstance found for fromUserId:"+fromUserId);
}
if( !AssigneeTypeConstant.USER.equals( matchedTaskAssigneeInstance.getAssigneeType())){
throw new ValidationException("Illegal AssigneeType :"+matchedTaskAssigneeInstance.getAssigneeType());
}
taskAssigneeStorage.update(matchedTaskAssigneeInstance.getInstanceId(),toUserId,processEngineConfiguration);
}