在高级批准中共享对记录的临时访问权限
通过设置触发器,与批准人共享对相关记录的临时访问权限。批准操作完成后,使用触发器撤销记录访问权限。
在您提交记录以待批准时,批准人必须有权访问记录的相关对象,才能对批准请求执行操作。如果对象的内部组织范围共享默认设置是专用,您可以使用触发器创建共享对象,以授予批准人访问权限。记录获得批准后,您可以使用触发器删除共享记录来撤销对记录的访问权限。
-
创建 Apex 触发器,以共享对记录相关对象的访问权限。在安全性下,选择批准人的简档。见定义 Apex 触发器。

-
创建 Apex 触发器,以在批准请求完成后删除共享记录并撤销记录访问权限。在安全性下,选择批准人的简档。
您可以自定义示例代码片段,以满足您的特定用例。
trigger AWIUpdate on ApprovalWorkItem(after update) { List<ApprovalWorkItem> awiList = new List<ApprovalWorkItem>(); // Get the related opportunities for the accounts in this trigger awiList = [SELECT Id, RelatedRecordId, AssignedToId FROM ApprovalWorkItem WHERE Id IN :Trigger.new]; for (ApprovalWorkItem awi : awiList) { // Use the related record id, to delete the share record created for the user Id relatedRecordId = awi.RelatedRecordId; Id assignedToId = awi.AssignedToId; SObjectType relatedRecordType = relatedRecordId.getSObjectType(); if (relatedRecordType.getDescribe().isCustom()) { Map<String, Schema.SObjectType> tokens = Schema.getGlobalDescribe(); String relatedRecordShareName = relatedRecordType.getDescribe().getName().removeEnd('__c') + '__Share'; if(tokens.containsKey(relatedRecordShareName)) { // Share object exists SObject[] customShare = Database.query('SELECT Id FROM ' + relatedRecordShareName + ' WHERE ' + ' RowCause = \'AdvancedApprovalTriggerShareReason__c\' ' + ' AND ParentId = :relatedRecordId' + ' AND UserOrGroupId = :assignedToId'); } else { // OWD is Public Read Write } } } }
本文章是否解决您的问题?
请与我们共享您的想法,以便我们进行改进!
