Verwalten und Verarbeiten von DMS-Dokumenten
In diesem Kapitel erfährst du, wie du effizient und einfach in Apex mit DMS-Dokumenten arbeitest und DMS-Dokumente verwalten und verarbeiten kannst.
Inhalt
Authentifizieren in d.velop documents
In diesem Kapitel erfährst du, wie und aus welchen Gründen du die Klasse DocumentManager in d.velop documents authentifizierst.
Inhalt
Hintergrund
Um die Methoden der Klasse DocumentManager in deinem eigenen Code zu verwenden, ist eine vorherige Authentifizierung nicht zwingend erforderlich. Dennoch empfehlen wir dir, eine Instanz einmalig mithilfe der verschiedenen Authentifizierungsmethoden mit einer gültigen Benutzersitzung zu versehen.
Auf diese Weise stellst du sicher, dass eine gültige Sitzung existiert und alle ausgehenden HTTP-Anfragen an d.velop documents im Kontext des jeweiligen Benutzers ausgeführt werden.
Zudem vermeidest du dadurch, dass eine im Salesforce Platform-Cache zwischengespeicherte Benutzersitzung noch einmal in der Identityprovider-App validiert werden muss. In diesem Falle müsstest du die Benutzersitzung unter Umständen neu anfordern, was in Salesforce potenziell zu einem Mixed DML Operation-Fehler führen kann.
Authentifizieren der Klasse
Im folgenden Beispiel erfährst du, wie du die Klasse DocumentManager schnell und einfach authentifizieren kannst.
// Create the document manager dvelop_docs_dev.DocumentManager documentManager = new dvelop_docs_dev.DocumentManager(); // Pick one of the authentication methods and authenticate documentManager.authenticateInCurrentUserContext(); // Perform an operation // ...
Siehe auch
Aktualisieren eines DMS-Dokuments
In diesem Kapitel erfährst du, wie du Eigenschaften und Kategorien eines DMS-Dokuments aktualisierst.
Inhalt
Aktualisieren eines Dokuments
Um ein DMS-Dokument zu aktualisieren, verwende die Methode updateDocument(documentId, updatedCategory, updatedAttributes) der Klasse DocumentManager.
Im folgenden Beispiel erfährst du, wie du die Methode anwendest.
// Create a new manager instance dvelop_docs_dev.DocumentManager documentManager = new dvelop_docs_dev.DocumentManager(); // Authenticate against connected DMS documentManager.authenticateInCurrentUserContext(); // Define the updated details List<dvelop_docs_dev.DocumentAttribute> updatedAttributes = new List<dvelop_docs_dev.DocumentAttribute>{ new dvelop_docs_dev.DocumentAttribute('objecttitle', 'Ja'), new dvelop_docs_dev.DocumentAttribute('multivalue_property__c', new List<String>{ 'A', 'B' }) }; // Perform the action - Update the document documentManager.updateDocument('XH00014213', 'correspondence__c', updatedAttributes);
Fehlerbehebung
Beim Aktualisieren eines Dokuments erhältst du unter Umständen folgende Fehlermeldung: "A mapping is not possible because several values were transferred to the same destination".
Im Folgenden erfährst du möglichen Fehlerursachen und Lösungen:
Ein einzelnes Attribut ist mehrfach in der Liste der Attribute vorhanden
Stelle sicher, dass die übermittelte Liste jedes Attribut maximal einmal enthält. Identische Attribute kannst du entfernen, indem du die Liste in ein Set umwandelst. Anschließend kannst du das Set wieder zurück in eine Liste konvertieren.
Mehrere Quelleigenschaften sind demselben d.3-Zielfeld zugeordnet
Prüfe die Zuordnungen und entferne eventuell vorhandene doppelte Zuordnungen.
Siehe auch
Abrufen eines DMS-Dokuments
In diesem Kapitel erfährst du, wie du Eigenschaften und Kategorien eines DMS-Dokuments aus dem verbundenen DMS ermittelst.
Inhalt
Abrufen eines Dokuments
Um ein einzelnes Dokument aus dem DMS abzurufen, verwende die Methode getDocument(documentId) der Klasse DocumentManager.
Im folgenden Beispiel erfährst du, wie du die Methode anwendest.
// Create a new manager instance dvelop_docs_dev.DocumentManager documentManager = new dvelop_docs_dev.DocumentManager(); // Authenticate against connected DMS documentManager.authenticateInCurrentUserContext(); // Perform the action - Get the document and work with ouput dvelop_docs_dev.Document dmsDocument = documentManager.getDocument('XH00014213'); System.debug(dmsDocument);
Siehe auch
Erstellen einer Akte
In diesem Kapitel erfährst du, wie du eine Akte erstellst.
Inhalt
Erstellen einer Akte
Um eine Akte im DMS zu erstellen, verwende die Methode createFolder(category, attributes) der Klasse DocumentManager.
Im folgenden Beispiel erfährst du, wie du die Methode anwendest.
// Create a new manager instance dvelop_docs_dev.DocumentManager documentManager = new dvelop_docs_dev.DocumentManager(); // Authenticate against connected DMS documentManager.authenticateInCurrentUserContext(); // Define the details List<dvelop_docs_dev.DocumentAttribute> attributes = new List<dvelop_docs_dev.DocumentAttribute>{ new dvelop_docs_dev.DocumentAttribute('objecttitle', 'Account4711'), new dvelop_docs_dev.DocumentAttribute('objectkey', '001AW00000B53c5YAB'), new dvelop_docs_dev.DocumentAttribute('account', 'Account4711'), new dvelop_docs_dev.DocumentAttribute('accountnumber', '001AW00000B53c5YAB'), new dvelop_docs_dev.DocumentAttribute('foldertype', 'Account') }; // Perform the action - Create the folder documentManager.createFolder('akte_safo__c', attributes);
Siehe auch
Herunterladen von DMS-Dokumenten
In diesem Kapitel erfährst du, wie du Dokumente aus dem DMS herunterladen und an einen Datensatz anhängst.
Inhalt
Technische Limitierungen
Wie bei allen Apex-Transaktionen musst du auch beim Herunterladen von Dokumenten die Salesforce Governor Limits beachten. Folgende technische Limitierungen gelten hinsichtlich der Größe von HTTP-Antworten:
In einer synchronen Transaktion können nur Dokumente mit einer maximalen Dateigröße von 6 MB heruntergeladen werden.
In einer asynchronen Transaktion können nur Dokumente mit einer maximalen Dateigröße von 12 MB heruntergeladen werden.
Herunterladen eines Dokuments
Um ein einzelnes Dokument aus dem DMS herunterzuladen, verwende die Methoden downloadDocument(documentId) und downloadDocumentToRecord(recordId, documentId) der Klasse DocumentManager.
In den folgenden Beispielen erfährst du, wie du die beiden Methoden anwendest.
Herunterladen eines Dokuments – Weiterverarbeiten des Dokuments
// Create a new manager instance dvelop_docs_dev.DocumentManager documentManager = new dvelop_docs_dev.DocumentManager(); // Authenticate against connected DMS documentManager.authenticateInCurrentUserContext(); // Perform the action - Download the document and work with ouput dvelop_docs_dev.DocumentDownloadResult downloadResult = documentManager.downloadDocument('XH00014213'); System.debug(downloadResult.getFilename()); System.debug(downloadResult.getBody());
Herunterladen eines Dokuments – Speichern des Dokuments am Datensatz
// Create a new manager instance dvelop_docs_dev.DocumentManager documentManager = new dvelop_docs_dev.DocumentManager(); // Authenticate against connected DMS documentManager.authenticateInCurrentUserContext(); // Perform the action - Download the document and attach it to a record Id createdContentDocumentId = documentManager.downloadDocumentToRecord('001Aa0000059kyPIAQ', 'XH00014213'); System.debug(createdContentDocumentId);
Herunterladen mehrerer Dokumente
Um mehrere Dokumente mit einer Aktion aus dem DMS herunterzuladen, verwende die Methode downloadDocuments(documentIds,finisher, proceedOnFailure) der Klasse DocumentManager.
Da die Methode mehrere potenziell große Dateien für die DMS-Dokumente herunterlädt, werden die Downloads in einem asynchronen Prozess in einer Queue ausgeführt. Damit du auf den Abschluss der Queue reagieren kannst und Zugriff auf die heruntergeladenen Dokumente erhältst, musst du einen Queueable-Job vom Typ dvelop_docs_dev.AsyncProcessFinisher beim Aufruf der Methode übermitteln. Dieser Job wird nach Abschluss des letzten Downloads an die Queue angehängt. Die Ausgabe (die heruntergeladenen Dokumente) wird als Liste aus dvelop_docs_dev.DocumentDownloadResults übertragen.
Im folgenden Beispiel erfährst du, wie du einen Finish-Job definierst, um mehrere Dokumente asynchron herunterzuladen:
Herunterladen mehrerer Dokumente – Definieren des Finish-Jobs
public class DownloadProcessFinishJob extends dvelop_docs_dev.AsyncProcessFinisher { private static final String DEFAULT_PARAM_NAME = 'downloadResults'; public DownloadProcessFinishJob() { // Call of parent constructor with an identifier for the default parameter name super(DEFAULT_PARAM_NAME); } public override void execute(Map<String, Object> processOutput) { // Read the default parameter and cast to correct type Object defaultParamOutput = processOutput.get(DEFAULT_PARAM_NAME); List<dvelop_docs_dev.DocumentDownloadResult> downloadResults = (List<dvelop_docs_dev.DocumentDownloadResult>) defaultParamOutput; // Process the results for (dvelop_docs_dev.DocumentDownloadResult result : downloadResults) { System.debug(result.getFilename()); System.debug(result.getBody()); } } }
Herunterladen mehrerer Dokumente – Start des Prozesses
// Create a new manager instance dvelop_docs_dev.DocumentManager documentManager = new dvelop_docs_dev.DocumentManager(); // Authenticate against connected DMS documentManager.authenticateInCurrentUserContext(); // Defining download params List<String> documentIds = new List<String>{ 'XH00014226', 'XH00014222', 'XH00014225' }; DownloadProcessFinishJob finishJob = new DownloadProcessFinishJob(); // Perform the action - Download the documents in a queue documentManager.downloadDocuments(documentIds, finishJob, false);
Siehe auch
Löschen von DMS-Dokumenten
Dieses Kapitel zeigt dir, wie du Dokumente und Akten aus dem DMS löschst.
Inhalt
Löschen eines DMS-Objekts
Um ein Dokument bzw. Objekt aus dem DMS zu löschen, verwende die Methode deleteDocument(documentId, ?reason) der Klasse DocumentManager.
Im folgenden Beispiel erfährst du, wie du die Methode anwendest.
// Create a new manager instance dvelop_docs_dev.DocumentManager documentManager = new dvelop_docs_dev.DocumentManager(); // Authenticate against connected DMS documentManager.authenticateInCurrentUserContext(); // Perform the action - Delete the document documentManager.deleteDocument('XH00014213', 'My custom reason');
Siehe auch
Suchen nach DMS-Dokumenten
In diesem Kapitel erfährst du, wie du Dokumente an einem bestimmten Salesforce-Datensatz oder Salesforce-Objekt im DMS suchst und findest.
Inhalt
Suchen nach DMS-Dokumenten
In diesem Beispiel siehst du, wie du mithilfe der Methode search(options) der Klasse DocumentManager eine einfache Suche nach Dokumenten an einem bestimmten Datensatz durchführst.
Die Suchkriterien, mit denen die Dokumente eingeschränkt werden, werden standardmäßig aus den in der d.velop documents-Konfiguration vorgenommenen Einstellungen ermittelt.
Anmerkung
Die Methode search(options) benötigt eine Instanz der Klasse DocumentSearchOptions als Eingabe.
Wie du Suchparameter vereinfacht erstellst, erfährst du unter Verwenden der Klasse “DocumentSearchOptions.Builder”.
Suchen nach DMS-Dokumenten – einfache Suche
// Create a new manager instance dvelop_docs_dev.DocumentManager documentManager = new dvelop_docs_dev.DocumentManager(); // Authenticate against connected DMS documentManager.authenticateInCurrentUserContext(); // Define the search options dvelop_docs_dev.DocumentSearchOptions searchOptions = new dvelop_docs_dev.DocumentSearchOptions(); searchOptions.useRecordContext('00011100001tBgaxAAC'); // Perform the action - Search for documents using the defined options List<dvelop_docs_dev.Document> documents = documentManager.search(searchOptions);
Suchen nach DMS-Dokumenten – Ermitteln aller Dokumente an einem Salesforce-Datensatz
dvelop_docs_dev.DocumentManager documentManager = new dvelop_docs_dev.DocumentManager(); documentManager.authenticateInCurrentUserContext(); dvelop_docs_dev.DocumentSearchOptions searchOptions = new dvelop_docs_dev.DocumentSearchOptions(); searchOptions.useRecordContext('00011100001tBgaxAAC'); List<dvelop_docs_dev.Document> documents = documentManager.search(searchOptions);
Suchen nach DMS-Dokumenten – Ermitteln aller Dokumente an einem Salesforce-Objekt
dvelop_docs_dev.DocumentManager documentManager = new dvelop_docs_dev.DocumentManager(); documentManager.authenticateInCurrentUserContext(); dvelop_docs_dev.DocumentSearchOptions searchOptions = new dvelop_docs_dev.DocumentSearchOptions(); searchOptions.useObjectContext('Account'); List<dvelop_docs_dev.Document> documents = documentManager.search(searchOptions);
Suchen nach DMS-Dokumenten – Ermitteln aller Dokumente an einem Salesforce-Objekt mit überschriebenen Suchkriterien
dvelop_docs_dev.DocumentManager documentManager = new dvelop_docs_dev.DocumentManager(); documentManager.authenticateInCurrentUserContext(); dvelop_docs_dev.DocumentSearchOptions searchOptions = new dvelop_docs_dev.DocumentSearchOptions(); searchOptions.useObjectContext('Account'); searchOptions.addSearchAttribute('objectkey', '0100X00QGA'); searchOptions.addSearchAttribute('string1', 'Max Mustermann'); List<dvelop_docs_dev.Document> documents = documentManager.search(searchOptions);
Suchen von Dokumenten anhand von IDs
Du kannst mehrere Dokumente auch anhand der jeweiligen IDs ermitteln. Verwende dafür die Methode searchDocumentsWithIds(searchAttributeKey, documentIds) der Klasse DocumentManager.
dvelop_docs_dev.DocumentManager docManager = new dvelop_docs_dev.DocumentManager(); docManager.authenticateInCurrentUserContext(); List<String> documentIds = new List<String>{ 'C200000024', 'C200000023' }; List<dvelop_docs_dev.Document> documents = docManager.searchDocumentsWithIds('externaldocumentnumber', documentIds);
Siehe auch
Teilen von DMS-Dokumenten
In diesem Kapitel erfährst du, wie du DMS-Dokumente mit weiteren Personen teilst.
Inhalt
Erstellen von Links zum Teilen von Dokumenten
Um Links zum Teilen von Dokumenten zu erstellen, verwende die Methode shareDocuments(downloadUrls) der Klasse DocumentManager.
Im folgenden Beispiel erfährst du, wie du die Methode anwendest.
// Create a new manager instance dvelop_docs_dev.DocumentManager documentManager = new dvelop_docs_dev.DocumentManager(); // Authenticate against connected DMS documentManager.authenticateInCurrentUserContext(); // Get a document dvelop_docs_dev.Document dmsDocument = documentManager.getDocument('FP00000010'); // Define the urls Set<String> downloadUrls = new Set<String>{ dmsDocument.downloadUrl }; // Perform the action - Create the temporary links Map<String, String> linksByDownloadUrl = documentManager.shareDocuments(downloadUrls); System.debug(linksByDownloadUrl.get(dmsDocument.downloadUrl));
Siehe auch
Versenden von E-Mails mit Anhängen
In diesem Kapitel erfährst du, wie du E-Mails mit Salesforce- und DMS-Dokumenten als Anhang versendest.
Inhalt
Technische Limitierungen
Wie bei allen Apex-Transaktionen musst du auch beim Versenden von E-Mails mit Dokumenten die Salesforce Governor Limits beachten. Durch die maximale Heap Size (Größe des dynamischen Datenspeichers) für E-Mail-Services ergeben sich folgende technische Limitierungen:
Die Anhänge der E-Mail dürfen zusammen maximal 36 MB groß sein.
Da DMS-Dokumente vor dem Versenden temporär aus dem DMS heruntergeladen werden müssen, gelten zusätzlich die im Kapitel Herunterladen von DMS-Dokumenten beschriebenen technischen Limitierungen.
Versenden einer E-Mail
Um Dokumente aus Salesforce und dem DMS via E-Mail zu versenden, verwende die Methode sendEmail(options) der Klasse DocumentManager.
Im folgenden Beispiel erfährst du, wie du die Methode anwendest.
// Create a new manager instance dvelop_docs_dev.DocumentManager documentManager = new dvelop_docs_dev.DocumentManager(); // Authenticate against connected DMS documentManager.authenticateInCurrentUserContext(); // Define the email options dvelop_docs_dev.DocumentEmailOptions emailOptions = new dvelop_docs_dev.DocumentEmailOptions(); emailOptions.setSubject('Important Message'); emailOptions.setBody('Have a look at this.'); emailOptions.addRecipient('astro@salesforce.com'); emailOptions.addContentDocumentId('069AP0000006hQbYAI'); emailOptions.addDmsDocumentId('XH00014846'); // Perform the action - Send an email with documents from Salesforce and the DMS documentManager.sendEmail(emailOptions);