Loading
Partage d'un accès temporaire aux enregistrements dans Advanced Approvals

Partage d'un accès temporaire aux enregistrements dans Advanced Approvals

Partagez l'accès temporaire aux enregistrements associés avec vos approbateurs en configurant des déclencheurs. Une fois l'action d'approbation terminée, utilisez un déclencheur pour retirer l'accès aux enregistrements.

Lorsque vous soumettez un enregistrement pour approbation, l'approbateur doit avoir accès à l'objet associé de l'enregistrement pour exécuter des actions sur la demande d'approbation. Si le paramètre de partage interne par défaut de votre organisation est Privé, vous pouvez utiliser un déclencheur pour créer un objet de partage qui accorde l'accès à l'approbateur. Une fois l'enregistrement approuvé, vous pouvez retirer l'accès à l'enregistrement en utilisant un déclencheur pour supprimer l'enregistrement de partage.

  1. Créez un déclencheur Apex pour partager l'accès à l'objet associé d'un enregistrement. Sous Sécurité, sélectionnez le profil de votre approbateur. Voir Définition des déclencheurs Apex.
    Conseil
    Conseil

    Si vous partagez l'accès à un objet personnalisé, vous pouvez créer un motif Apex et l'inclure dans le déclencheur. Un motif de partage Apex limite l'accès à l'enregistrement à votre cas d'utilisation spécifique.

  2. Créez un déclencheur Apex pour supprimer l'enregistrement de partage et révoquer l'accès à l'enregistrement une fois la demande d'approbation terminée. Sous Sécurité, sélectionnez le profil de votre approbateur.

    Vous pouvez personnaliser l'exemple d'extrait de code pour l'adapter à votre cas d'utilisation spécifique.

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