in extension/storage/storage-mongodb/src/main/java/com/alibaba/smart/framework/engine/persister/mongo/service/MongoTaskAssigneeInstanceStorage.java [106:144]
private Query buildCommonQuery(PendingTaskQueryParam pendingTaskQueryParam) {
Query query = new Query();
if(null != pendingTaskQueryParam.getProcessDefinitionType()){
query.addCriteria(Criteria.where(MongoConstant.PROCESS_DEFINITION_TYPE).is(pendingTaskQueryParam.getProcessDefinitionType()));
}
if(null != pendingTaskQueryParam.getProcessInstanceIdList()){
query.addCriteria(Criteria.where(PROCESS_INSTANCE_ID).in(pendingTaskQueryParam.getProcessInstanceIdList()));
}
if(null != pendingTaskQueryParam.getAssigneeUserId()){
Criteria userPendingCriteria = Criteria.where("assigneeId").is(
pendingTaskQueryParam.getAssigneeUserId()).and("assigneeType").is("user");
Criteria groupPendingCriteria = null;
if(CollectionUtil.isNotEmpty(pendingTaskQueryParam.getAssigneeGroupIdList())){
groupPendingCriteria = Criteria.where("assigneeId").in(pendingTaskQueryParam.getAssigneeGroupIdList()).and("assigneeType").is("groupPendingCriteria");
}
if(groupPendingCriteria == null ){
// only user
query.addCriteria(userPendingCriteria);
}else{
// user and group, need or condition
Criteria cr = new Criteria();
cr.orOperator(userPendingCriteria,groupPendingCriteria);
query.addCriteria(cr);
}
}
return query;
}