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.
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
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.
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
}
}
}
}
Cet article a-t-il résolu votre problème ?
Dites-nous ce que nous pouvons améliorer !
Chargement
Salesforce Help | Article
Cookie Consent Manager
Cookie Consent Manager
General Information
Required Cookies
Functional Cookies
Advertising Cookies
General Information
We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required Cookies
Always Active
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional Cookies
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising Cookies
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.