• salesforce 零基础学习(四十一)Group


     salesforce中,有的时候我们需要将一组用户放进一个Group,用来实现以下主要功能:

    1.通过sharing rule设置默认的共享访问;

    2.将记录分享给其他用户;

    3.指定同步的联系人,这些联系人的onwer属于其他user;

    4.分配Group中用户到指定的动作,比如审批流程等。

    Group作为系统表,其字段信息如下所示:

    其中Type作为PickList字段,他的取值可以通过Schema方式取出。

    public with sharing class GroupPickList {
        public static List<String> getGroupPickList() {
            Schema.DescribeFieldResult groupTypeResult = Group.Type.getDescribe();
            List<Schema.PicklistEntry> groupTypePickListValues = groupTypeResult.getPicklistValues();
            List<String> groupTypeValues = new List<String>();
            for(Schema.PicklistEntry groupTypePickListValueItem : groupTypePickListValues) {
                groupTypeValues.add(groupTypePickListValueItem.getValue());
            }
            return groupTypeValues;
        }
    }

    调用后显示结果如下:

    [
    "AllCustomerPortal",
    "CollaborationGroup",
    "Manager",
    "ManagerAndSubordinatesInternal",
    "Organization",
    "PRMOrganization",
    "Queue",
    "Regular",
    "Role",
    "RoleAndSubordinates",
    "RoleAndSubordinatesInternal",
    "SharingRuleGroup",
    "Territory",
    "TerritoryAndSubordinates"
    ]

     通过结果可以看出Group可以有很多种Type。其中,Public Group对应的Type为Regular,Queue对应的Type为Queue。取相应类型时的Group时只需要添加检索条件即可。

    除了Group表外还需要介绍另外一个系统表--GroupMember。此表用来存储某个Group对应的成员或者子Group的信息,主要字段有:GroupId, Id,UserOrGroupId。

    应用:

    1.查询Name 为ceo group的Public Group中包含的User或者Group

    SELECT GroupId, Id, SystemModstamp, UserOrGroupId FROM GroupMember where GroupId in (select Id from Group where Name = 'ceo group' and Type = 'regular')

    2.当Group作为审批流程的一部分,查询当前是否到Public Group审批的处理

    List<Group> groupList = [select Id from Group where Name = 'ceo group'];
    if(groupList != null && groupList.size() > 0) {
        Id groupId = groupList.get(0).Id;
        List<ProcessInstance> pis = [SELECT TargetObjectId 
                                     FROM ProcessInstance 
                                     WHERE isDeleted = false  AND id in ( SELECT processInstanceId 
                                                                          FROM ProcessInstanceworkitem 
                                                                          WHERE isdeleted = false AND ActorId = :groupId )];
        if(pis.size() > 0) {
            system.debug('当前Group用户审批');
        }
    }

    总结:Group在record sharing以及作为审批流程的审批者经常会用到,掌握相关基础信息即可很好的操作,如果篇中有错误的地方欢迎批评指正,如果有问题欢迎留言。

  • 相关阅读:
    什么是RUP
    oracle 导入导出
    jsp 标签
    java json 交互
    Spring MVC 学习过程遇到的问题
    Spring 与其他ORM 框架结合 作数据持久层解析 (转)
    Spring mvc 中快速获取request、reponse、session
    Spring 数据绑定
    spring mvc 请求对应控制器的解析策略配置
    spring 的几种注解
  • 原文地址:https://www.cnblogs.com/zero-zyq/p/5723939.html
Copyright © 2020-2023  润新知