我運行以下批次和我提出的一個循環內的查詢,這裏是查詢:Salesforce的批量省長限制
lgm=[select Group.Name, group.type,group.id, group.ownerID from GroupMember where UserOrGroupId =: u.id];
批料循環到在組織的每個用戶,並得到其權限集以及他分配的公共組和隊列以及該用戶的姓名和ID,然後將這些信息填充到名爲ConsolidatedUser的自定義對象中。我還沒有運行大批量的批處理的記錄,看看是否達到州長限制,並希望你的意見,因爲按照現在的批次正常工作, 我可以問你批處理每個事務有多少個soql查詢,以確保我不會遇到任何衝突。 這裏是我的代碼,並感謝您的幫助。
global class TDTRMIS_GetUserDetails implements Database.Batchable<sObject>, Database.Stateful {
global string UserPermissionSets='';
global string UserGroups='';
global string UserQueues='';
global integer i;
global Database.QueryLocator start(Database.BatchableContext bc) {
return Database.getQueryLocator(
'SELECT Id, name, (select PermissionSet.Name, AssigneeId FROM PermissionSetAssignments) from user'
);
}
global void execute(Database.BatchableContext bc, List<User> scope){
// process each batch of records
// process each batch of records
List<ConsolidatedUser__c> lcu = new List<ConsolidatedUser__c>();
list<GroupMember> lgm= new list<GroupMember>();
for (User u : scope)
{
ConsolidatedUser__c cu= new ConsolidatedUser__c();
lgm=[select Group.Name, group.type,group.id, group.ownerID from GroupMember where UserOrGroupId =: u.id];
for(PermissionSetAssignment ps : u.PermissionSetAssignments)
{
UserPermissionSets=UserPermissionSets+ps.PermissionSet.name+'|';
}
for(GroupMember gm : lgm)
{
if(gm.group.type=='Regular')
{
UserGroups=UserGroups+gm.group.Name+'|';
}
else if(gm.group.type=='Queue')
{
UserQueues=UserQueues+gm.group.Name+'|';
}
}
cu.PermSet__c=UserPermissionSets ;
cu.PublicGroupList__c=UserGroups;
cu.QueueGroupList__c= UserQueues;
cu.User_Lookup__c=u.id;
cu.name=u.name;
lcu.add(cu);
}
try{
upsert lcu;
}
catch(exception e)
{
system.debug(e);
}
}
global void finish(Database.BatchableContext bc){
//to be added later
}
}
您是否找到答案? –