Loading
Dela tillfällig åtkomst till poster i avancerade godkännanden

Dela tillfällig åtkomst till poster i avancerade godkännanden

Dela tillfällig åtkomst till relaterade poster med dina godkännare genom att konfigurera utlösare. När godkännandeåtgärden är klar, använd en utlösare för att dra tillbaka poståtkomsten.

När du skickar en post för godkännande måste godkännaren ha åtkomst till postens relaterade objekt för att utföra åtgärder för godkännandebegäran. Om ditt objekts interna organisationsomfattande delningsstandard är Privat kan du använda en utlösare för att skapa ett delningsobjekt som beviljar åtkomst till godkännaren. När posten har godkänts kan du dra tillbaka poståtkomsten genom att använda en utlösare för att ta bort delningsposten.

  1. Skapa en Apex för att dela åtkomst till en posts relaterade objekt. Under Säkerhet, välj profilen för din godkännare. Se Definiera Apex-utlösare.
    Tips
    Tips

    Om du delar åtkomst till ett eget objekt kan du skapa en Apex-delningsorsak och inkludera den i utlösaren. En Apex begränsar poståtkomsten till ditt specifika användningsfall.

  2. Skapa en Apex för att ta bort delningsposten och återkalla poståtkomsten efter att godkännandebegäran har slutförts. Under Säkerhet, välj profilen för din godkännare.

    Du kan anpassa exempelkodstycket så att det passar ditt specifika användningsfall.

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