zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    
  • 相关阅读:
    [转载]Linux下mail使用技巧
    VTK Online教程大全
    拓扑结构与TopoDS
    三维视图变换与相机模型
    说说DoDataExchange(CDataExchange* pDX)
    Lua Lib在VC下的编译
    建立最简单的OpenCASCADE程序
    构建通用类型 继承 VS 聚合
    【软件】新瓶装老酒 MyCapture
    用std::find查找文件流中的内容
  • 原文地址:https://www.cnblogs.com/chengcheng0148/p/apex_user_group_management.html
Copyright © 2011-2022 走看看