获取当前用户角色下的所有角色

时间:2012-06-02 09:40:14

标签: salesforce apex-code visualforce

我正在尝试获取当前登录用户角色下的所有角色。 我们不知道层次结构中的级别,它会根据登录用户而改变。

关于如何以通用方式实现此目的的任何指示

  currentUserRoleId= userInfo.getUserRoleId();

我希望看到currentUserRoleId下的所有角色以及每个级别下的角色。

由于

1 个答案:

答案 0 :(得分:3)

不幸的是,似乎没有预先建立的方法来做到这一点。但是,您应该能够编写代码以递归方式执行此操作:

public static set<Id> getSubordinateRoles(Id roleId) {
    map<Id, set<Id>> parentAndChildren = new map<Id, set<Id>>();
    set<Id> children;
    for(UserRole ur : [select Id, ParentRoleId from UserRole]) {
        children = parentAndChildren.containsKey(ur.ParentRoleId) ? parentAndChildren.get(ur.ParentRoleId) : new set<Id>();
        children.add(ur.Id);
        parentAndChildren.put(ur.ParentRoleId, children);
    }
    return getSubordinateRoles(role, parentAndChildren);
}

public static set<Id> getSubordinateRoles(Id roleId, map<Id, set<Id>> parentAndChildren) {
    set<Id> subordinateRoles = new set<Id>();
    set<Id> remainingSubordinateRoles = new set<Id>();
    if(parentAndChildren.containsKey(roleId)) {
        subordinateRoles.addAll(parentAndChildren.get(roleId));
        for(Id subRoleId : subordinateRoles) {
            remainingSubordinateRoles.addAll(getSubordinateRoles(subRoleId, parentAndChildren));
        }
    }
    subordinateRoles.addAll(remainingSubordinateRoles);
    return subordinateRoles;
}

我没有测试过这个,所以如果它不起作用,请告诉我。