Loading
共用進階批准中記錄的暫存取權

共用進階批准中記錄的暫存取權

透過設定觸發,與您的批准者共用相關記錄的暫時存取權。批准動作完成後,請使用觸發來撤銷記錄存取權。

當您提交記錄以待批准時,批准者必須擁有記錄相關物件的存取權,才能對批准要求執行動作。如果物件的內部組織範圍共用預設值為「專用」,您可以使用觸發來建立共用物件,以將存取權授與批准者。批准記錄後,您可以使用觸發來刪除共用記錄,以撤銷記錄存取權。

  1. 建立 Apex 觸發以共用記錄相關物件的存取權。在「安全性」下,選取您批准者的設定檔。請參閱定義 Apex 觸發。
    小秘訣
    小秘訣

    如果您要共用自訂物件的存取權,您可以建立 Apex共用原因並將其包含在觸發中。Apex共用原因會將記錄存取權限制為您的特定使用個案。

  2. 建立 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
    }
    }
    }
    }
    
 
正在載入
Salesforce Help | Article