如何通过Java API获取OIM 12C中登录用户的认证及相关统计
修正获取用户分配证书数量的函数
原代码中使用USER_LOGIN作为搜索条件会匹配所有关联该用户的证书,而非仅分配给该用户的证书。需改用证书的受让人属性构建搜索条件:
public long certificateCount(OIMClient oimclient, String currentUserLogin) throws CertificationServiceException { CertificationService cs = oimclient.getService(CertificationService.class); // 基于证书受让人登录名构建搜索条件 SearchCriteria criteriaAssignee = new SearchCriteria( CertificationConstants.AttributeName.ASSIGNEE_USER_LOGIN.getId(), currentUserLogin, SearchCriteria.Operator.EQUAL ); return cs.countCertifications(criteriaAssignee); }
- 替换硬编码的
"eiifnw"为当前登录用户的登录名,可通过oimclient.getLoggedInUser().getUserLogin()获取 CertificationConstants.AttributeName.ASSIGNEE_USER_LOGIN是OIM标记证书受让人的专属属性,确保仅统计分配给目标用户的证书
获取用户的每个证书详细信息
使用searchCertifications方法查询证书列表,遍历即可获取单证书详情:
public List<Certification> getUserCertifications(OIMClient oimclient, String currentUserLogin) throws CertificationServiceException { CertificationService cs = oimclient.getService(CertificationService.class); SearchCriteria criteriaAssignee = new SearchCriteria( CertificationConstants.AttributeName.ASSIGNEE_USER_LOGIN.getId(), currentUserLogin, SearchCriteria.Operator.EQUAL ); // 示例获取所有匹配结果,可添加分页参数优化查询 return cs.searchCertifications(criteriaAssignee, null, null, null); } // 遍历证书打印详情的示例 public void printCertificationDetails(List<Certification> certifications) { for (Certification cert : certifications) { System.out.println("证书ID: " + cert.getCertificationId()); System.out.println("证书名称: " + cert.getCertificationName()); System.out.println("状态: " + cert.getStatus()); System.out.println("创建时间: " + cert.getCreatedDate()); // 可根据Certification类API获取更多属性 } }
获取用户已配置的证书任务数量
每个证书关联多个待处理任务,遍历证书列表并累加任务数即可:
public long getUserCertificationTaskCount(OIMClient oimclient, String currentUserLogin) throws CertificationServiceException { CertificationService cs = oimclient.getService(CertificationService.class); List<Certification> certifications = getUserCertifications(oimclient, currentUserLogin); long totalTasks = 0; for (Certification cert : certifications) { // 获取当前证书下的所有任务 List<CertificationTask> tasks = cs.getCertificationTasks(cert.getCertificationId(), null); totalTasks += tasks.size(); } return totalTasks; }
获取用户待审批的请求数量
使用RequestService,基于请求受让人及待审批状态构建搜索条件统计数量:
public long getPendingApprovalCount(OIMClient oimclient, String currentUserLogin) throws RequestServiceException { RequestService requestService = oimclient.getService(RequestService.class); // 组合条件:请求受让人是当前用户,且状态为待审批 SearchCriteria criteriaAssignee = new SearchCriteria( RequestConstants.AttributeName.REQUEST_ASSIGNEE.getId(), currentUserLogin, SearchCriteria.Operator.EQUAL ); SearchCriteria criteriaStatus = new SearchCriteria( RequestConstants.AttributeName.REQUEST_STATUS.getId(), RequestConstants.RequestStatus.PENDING_APPROVAL.getValue(), SearchCriteria.Operator.EQUAL ); SearchCriteria combinedCriteria = new SearchCriteria(criteriaAssignee, criteriaStatus, SearchCriteria.Operator.AND); return requestService.countRequests(combinedCriteria); }
内容的提问来源于stack exchange,提问作者gavi
相关产品推荐
相关产品推荐

