You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 11:43:31