Loading
Freigeben des temporären Zugriffs auf Datensätze in Advanced Approvals

Freigeben des temporären Zugriffs auf Datensätze in Advanced Approvals

Geben Sie den temporären Zugriff auf verwandte Datensätze für Ihre Genehmiger frei, indem Sie Auslöser einrichten. Verwenden Sie nach Abschluss der Genehmigungsaktion einen Auslöser, um den Datensatzzugriff zurückzuziehen.

Wenn Sie einen Datensatz zur Genehmigung senden, muss der Genehmiger über Zugriff auf das zugehörige Objekt des Datensatzes verfügen, um Aktionen für die Genehmigungsanfrage ausführen zu können. Wenn die interne organisationsweite Freigabestandardeinstellung Ihres Objekts "Privat" lautet, können Sie einen Auslöser verwenden, um ein Freigabeobjekt zu erstellen, das dem Genehmiger Zugriff erteilt. Nachdem der Datensatz genehmigt wurde, können Sie den Datensatzzugriff widerrufen, indem Sie den Freigabedatensatz mithilfe eines Auslösers löschen.

  1. Erstellen Sie einen Apex-Auslöser, um den Zugriff auf das verwandte Objekt eines Datensatzes freizugeben. Wählen Sie unter "Sicherheit" das Profil Ihres Genehmigers aus. Siehe Definieren von Apex Auslösern.
    Tipp
    Tipp

    Wenn Sie den Freigabezugriff auf ein benutzerdefiniertes Objekt freigeben, können Sie einen Apex Freigabegrund erstellen und ihn in den Auslöser einfügen. Ein Apex Freigabegrund schränkt den Datensatzzugriff auf Ihren speziellen Anwendungsfall ein.

  2. Erstellen Sie einen Apex-Auslöser, um den Freigabedatensatz zu löschen und den Datensatzzugriff nach Abschluss der Genehmigungsanfrage zu widerrufen. Wählen Sie unter "Sicherheit" das Profil Ihres Genehmigers aus.

    Sie können den Beispielcodeauszug an Ihren spezifischen Anwendungsfall anpassen.

    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
    }
    }
    }
    }
    
 
Laden
Salesforce Help | Article