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以及作為審批流程的審批者經常會用到,掌握相關基礎信息即可很好的操作,如果篇中有錯誤的地方歡迎批評指正,如果有問題歡迎留言。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM