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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏全栈数据化营销

用python采集猫眼电影排行榜信息

随着大数据和人工智能多次被大佬提及之后,并且被定义为未来的大趋势后,天然适合于大数据和人工智能的编程语言python也异常火热,市面上出现了不少的高价格、大规模...

2627
来自专栏SAP最佳业务实践

SAP最佳业务实践:SD–外贸出口处理(118)-2付款保证

一、VX11N付款保证 在此活动中,你创建一份从客户开户行获得的信用证。 后勤 ®销售和分销 ®外贸/关税®付款保证 ®凭证的付款®财务凭证 ®创建 1. 在...

34511
来自专栏程序员的SOD蜜

闲话权限系统的设计

一、权限的本质 权限管理,首先要理清权限的本质:权限就是对受保护资源的有限许可访问。 理解了权限的本质,就好谈权限的管理了。 权限就是对受保护资源的有限许可访问...

2798
来自专栏Python与爬虫

请正确使用http状态码,谢谢!

最近,由于某些特别原因。打开一些网址一直显示404, 想请问下,xx站的程序员,能不能按照http协议来返回呢? 什么是HTTP状态码451? 根据定义,HTT...

3017
来自专栏宋凯伦的技术小栈

【从业余项目中学习1】C# 实现XML存储用户名密码(MD5加密)

  最近在写一个C#的项目,用户需求是实现Winform的多文档界面与Matlab算法程序之间的交互。做了一段时间发现,这既能利用业余时间,实战中也可学习一些技...

21010
来自专栏Greenplum

Greenplum常用导数据方法及性能测试

# 生成隐藏字符 soh=`echo 1 | awk '{printf("%c", $1)}'` replaceWord=$1

1914
来自专栏州的先生

Python爬虫实战入门六:提高爬虫效率—并发爬取智联招聘

1272
来自专栏智能计算时代

Hyperledger - 超级账本项目:简介,安装,案例

Hyperledger 项目是开源界面向开放、标准区块链技术的首个重要探索,在 Linux 基金会的支持下,吸引了众多科技和金融巨头的参与。 本章将介绍 hyp...

8525
来自专栏木宛城主

SharePoint 2013 实现多级审批工作流

上一篇介绍了安装和配置SharePoint 2013 Workflow,这一篇将用SharePoint 2013 Designer Workflow来实现一个...

1919
来自专栏更流畅、简洁的软件开发方式

关于Int自增字段和GUID字段的性能测试。只有测试,没有分析,呵呵

      最近有两篇关于GUID和Int自增的文章,我是一直使用Int自增的,不习惯使用GUID,感觉GUID很麻烦,用着不方便,性能也比不上Int自增。但是...

20410

扫码关注云+社区