Freigeben des temporären Zugriffs auf Datensätze in Advanced Approvals
Geben Sie den temporären Zugriff auf verwandte Datensätze für Ihre Genehmiger frei, indem Sie Auslöser einrichten. Verwenden Sie nach Abschluss der Genehmigungsaktion einen Auslöser, um den Datensatzzugriff zurückzuziehen.
Wenn Sie einen Datensatz zur Genehmigung senden, muss der Genehmiger über Zugriff auf das zugehörige Objekt des Datensatzes verfügen, um Aktionen für die Genehmigungsanfrage ausführen zu können. Wenn die interne organisationsweite Freigabestandardeinstellung Ihres Objekts "Privat" lautet, können Sie einen Auslöser verwenden, um ein Freigabeobjekt zu erstellen, das dem Genehmiger Zugriff erteilt. Nachdem der Datensatz genehmigt wurde, können Sie den Datensatzzugriff widerrufen, indem Sie den Freigabedatensatz mithilfe eines Auslösers löschen.
Erstellen Sie einen Apex-Auslöser, um den Zugriff auf das verwandte Objekt eines Datensatzes freizugeben. Wählen Sie unter "Sicherheit" das Profil Ihres Genehmigers aus. Siehe Definieren von Apex Auslösern.
Tipp
Wenn Sie den Freigabezugriff auf ein benutzerdefiniertes Objekt freigeben, können Sie einen Apex Freigabegrund erstellen und ihn in den Auslöser einfügen. Ein Apex Freigabegrund schränkt den Datensatzzugriff auf Ihren speziellen Anwendungsfall ein.
Erstellen Sie einen Apex-Auslöser, um den Freigabedatensatz zu löschen und den Datensatzzugriff nach Abschluss der Genehmigungsanfrage zu widerrufen. Wählen Sie unter "Sicherheit" das Profil Ihres Genehmigers aus.
Sie können den Beispielcodeauszug an Ihren spezifischen Anwendungsfall anpassen.
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
}
}
}
}
Konnten Sie Ihr Problem mithilfe dieses Artikels lösen?
Geben Sie uns Feedback, damit wir uns verbessern können.
Laden
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.