Apex 中操作用户和组

用户和组概述

Salesforce中对于用户的定义主要体现于两个对象:用户(User)和组(Group)。组的成员可以是用户也可以是另一个组。

Salesforce中的组可以有多种表示方法,比如队列(Queue)等,它们在数据库中都是以组(Group)的形式储存。

Salesforce中的多种组件包含关于用户和组的查找类型(Lookup)字段。由于这些字段只存储了一个ID值,所以这些ID既可能是用户的ID,也可能是组的ID。

Apex代码示例

public class UserGroupExample {
    // 判断一个ID的值是否是用户
    public static Boolean isUserId(Id id) {
        return id.getSObjectType().getDescribe() == SObjectType.User;
    }

    // 判断一个ID的值是否是组
    public static Boolean isGroupId(Id id) {
        return id.getSObjectType().getDescribe() == SObjectType.Group;
    }

    // 从一个组中获取所有用户成员的ID
    //   由于组的成员可能是另一个组,所以必须用循环递归来得到所有的用户成员
    public static Set<Id> getAllUserIdFromGroup(Id groupId) {
        App.verifyNotNull('groupId', groupId);

        Set<Id> userIds = new Set<Id>();
        
        List<GroupMember> groupMembers = [SELECT UserOrGroupId FROM GroupMember WHERE GroupId = :groupId];
        
        for(GroupMember gm : groupMembers) {
            if(UserGroupExample.isUserId(gm.UserOrGroupId)) {
                userIds.add(gm.UserOrGroupId);
            } else if(UserGroupExample.isGroupId(gm.UserOrGroupId)){
                userIds.addAll(getAllUserIdFromGroup(gm.UserOrGroupId));
            }
        }

        return userIds;
    }
}

转载于:https://www.cnblogs.com/chengcheng0148/p/apex_user_group_management.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值