Loading
Condivisione dell'accesso temporaneo ai record nelle approvazioni avanzate

Condivisione dell'accesso temporaneo ai record nelle approvazioni avanzate

Condividere l'accesso temporaneo ai record correlati con i responsabili approvazioni impostando trigger. Al termine dell'azione di approvazione, utilizzare un trigger per ritirare l'accesso ai record.

Quando si invia un record per l'approvazione, il responsabile approvazioni deve avere accesso all'oggetto correlato del record per eseguire azioni sulla richiesta di approvazione. Se l'impostazione predefinita di condivisione interna dell'organizzazione dell'oggetto è Privato, è possibile utilizzare un trigger per creare un oggetto di condivisione che conceda l'accesso al responsabile approvazioni. Dopo l'approvazione del record, è possibile revocare l'accesso al record utilizzando un trigger per eliminare il record condivisione.

  1. Creare un trigger Apex per condividere l'accesso all'oggetto correlato di un record. In Sicurezza, selezionare il profilo del responsabile approvazioni. Vedere Definizione dei trigger Apex.
    Suggerimento
    Suggerimento

    Se si condivide l'accesso a un oggetto personalizzato, è possibile creare un motivo di condivisione Apex e includerlo nel trigger. Un motivo di condivisione Apex limita l'accesso ai record al caso d'uso specifico.

  2. Creare un trigger Apex per eliminare il record condivisione e revocare l'accesso al record al termine della richiesta di approvazione. In Sicurezza, selezionare il profilo del responsabile approvazioni.

    È possibile personalizzare lo snippet di codice di esempio in base al proprio caso d'uso specifico.

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