0
我想获取当前登录用户角色下的所有角色。 我们不知道层次结构中的层次,它会根据登录用户而变化。获取当前用户角色下的所有角色
对我们如何才能做到这一点上我想看到所有currentUserRoleId下的角色,而每个级别下的角色,一个通用的方法
currentUserRoleId= userInfo.getUserRoleId();
任何指针。
谢谢
我想获取当前登录用户角色下的所有角色。 我们不知道层次结构中的层次,它会根据登录用户而变化。获取当前用户角色下的所有角色
对我们如何才能做到这一点上我想看到所有currentUserRoleId下的角色,而每个级别下的角色,一个通用的方法
currentUserRoleId= userInfo.getUserRoleId();
任何指针。
谢谢
不幸的是,似乎没有预先建立的方式来做到这一点。但是,你应该能够编写代码来做到这一点递归像这样:
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;
}
我没有测试过这一点,所以让我知道,如果它不能正常工作。
感谢@TriangleMan,在你的代码中,你提到的角色应该是RoleId不是吗?我收到一个变量未找到错误。 – Prady
@Prady你是对的。我纠正了这个例子。 –
谢谢@Triangle Man ..它像魅力一样工作。还有一件事返回subordinateRoles.addAll(remainingSubordinateRoles);抛出一个错误,说它应该只返回一个集合。我在一行中添加了addAll语句并返回了subordinateRoles。那之后工作正常。 –
Prady