salesforce 零基礎學習(四十一)Group

 salesforce中,有的時候咱們須要將一組用戶放進一個Group,用來實現如下主要功能:spa

1.經過sharing rule設置默認的共享訪問;debug

2.將記錄分享給其餘用戶;code

3.指定同步的聯繫人,這些聯繫人的onwer屬於其餘user;blog

4.分配Group中用戶到指定的動做,好比審批流程等。get

Group做爲系統表,其字段信息以下所示:同步

其中Type做爲PickList字段,他的取值能夠經過Schema方式取出。it

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;
    }
}

調用後顯示結果以下:io

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

 經過結果能夠看出Group能夠有不少種Type。其中,Public Group對應的Type爲Regular,Queue對應的Type爲Queue。取相應類型時的Group時只須要添加檢索條件便可。class

除了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以及做爲審批流程的審批者常常會用到,掌握相關基礎信息便可很好的操做,若是篇中有錯誤的地方歡迎批評指正,若是有問題歡迎留言。

相關文章
相關標籤/搜索