Loading
Tijdelijke toegang tot records delen in Geavanceerde goedkeuringen

Tijdelijke toegang tot records delen in Geavanceerde goedkeuringen

Deel tijdelijke toegang tot gerelateerde records met uw goedkeurende personen door triggers in te stellen. Nadat de goedkeuringsactie is voltooid, gebruikt u een trigger om de recordtoegang in te trekken.

Wanneer u een record indient voor goedkeuring, moet de goedkeurende persoon toegang hebben tot het gerelateerde object van de record om acties op het goedkeuringsverzoek uit te voeren. Als de interne standaardinstelling voor delen voor de hele organisatie van uw object Privé is, kunt u een trigger gebruiken om een object voor delen te maken dat toegang verleent aan de goedkeurende persoon. Nadat de record is goedgekeurd, kunt u de recordtoegang intrekken door middel van een trigger om de record voor delen te verwijderen.

  1. Maak een Apex trigger om toegang te delen tot het gerelateerde object van een record. Selecteer onder Beveiliging het profiel van uw goedkeurende persoon. Zie Apex triggers definiëren.
    Tip
    Tip

    Als u toegang tot een aangepast object deelt, kunt u een Apex reden voor delen maken en deze opnemen in de trigger. Een reden voor delen via Apex beperkt de recordtoegang tot uw specifieke gebruikscase.

  2. Maak een Apex trigger om de record voor delen te verwijderen en de recordtoegang in te trekken nadat het goedkeuringsverzoek is voltooid. Selecteer onder Beveiliging het profiel van uw goedkeurende persoon.

    U kunt de voorbeeldcodesnippet aanpassen aan uw specifieke gebruikscase.

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