Menü der Dokumentation

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);
Siehe auch