前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >salesforce 零基础学习(四十一)Group

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

作者头像
Zero-Zhang
发布2018-01-05 11:23:09
5590
发布2018-01-05 11:23:09
举报

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

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

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

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

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

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

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

代码语言:javascript
复制
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;
    }
}

调用后显示结果如下:

代码语言:javascript
复制
[
"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

代码语言:javascript
复制
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审批的处理

代码语言:javascript
复制
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以及作为审批流程的审批者经常会用到,掌握相关基础信息即可很好的操作,如果篇中有错误的地方欢迎批评指正,如果有问题欢迎留言。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-08-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档