Definieren der Parameter zum Speichern

In diesem Kapitel erfahren Sie mehr zu den Parametern, die Sie zum Speichern von DMS-Objekten angeben können. Die Parameter gelten wahlweise für das Speichern mit oder ohne Benutzeraktion.

Festlegen eines JSON-Objektes zum Speichern

Das JSON-Objekt, das mit den HTTP-Anforderungen zum Speichern eines DMS-Objektes gesendet wird, enthält folgende Parameter:

Eigenschaft

Beschreibung

displayValue

Gibt den Anzeigenamen des Elements an, das gespeichert wird. Der Anzeigename wird im Ablagedialog für den Anwender sichtbar. Dieser Parameter ist optional.

filename

Gibt den Namen der zu speichernden Datei mit der Dateierweiterung an.

Wenn Sie diesen Parameter festlegen, dann müssen Sie die unter sourceCategory angegebene Kategorie in der Zuordnungsverarbeitung einer Dokumentart zuordnen. Geben Sie diese Eigenschaft nicht an, dann müssen Sie die unter sourceCategory angegebene Kategorie in der Zuordnungsverarbeitung einer Aktenart zuordnen.

  • Die Eigenschaft ist verpflichtend, wenn Sie ein Dokument neu speichern.

  • Die Eigenschaft ist optional, wenn Sie ein Dokument aktualisieren. Wenn der Parameter nicht gesetzt ist, dann wird der alte Dateiname übernommen.

  • Die Eigenschaft wird ignoriert, wenn Sie ein Dokument ohne contentLocationUri oder contentUri aktualisieren.

  • Die Eigenschaft darf nicht gesetzt sein, wenn Sie eine Akte neu erzeugen oder aktualisieren.

dmsObjectId

Gibt die ID des zu aktualisierenden DMS-Objektes an. Dieser Parameter wird nur beim Aktualisieren eines DMS-Objektes mit Benutzerinteraktion berücksichtigt.

alterationText

Gibt den Änderungsgrund für die Aktualisierung eines DMS-Objektes an. In d.3 admin legen Sie fest, ob das Angeben des Parameters verpflichtend ist. Dieser Parameter wird nur beim Aktualisieren eines DMS-Objektes berücksichtigt.

sourceCategory

Gibt an, welche Kategorie für die Zuordnungsverarbeitung beim Speichern verwendet werden soll. Geben Sie die ID der Quellkategorie an.

Das Angeben dieser Eigenschaft ist verpflichtend, außer unter folgenden Bedingungen:

  • Die Eigenschaft wird ignoriert, wenn der Parameter parentId festgelegt ist und eine zugehörige Standardkategorie in d.3 admin definiert wurde.

  • Die Eigenschaft wird ignoriert, wenn sie ein DMS-Objekt aktualisieren.

  • Die Eigenschaft ist optional, wenn das Speichern eines Elements mit Benutzeraktion erfolgt.

Wenn Sie mehrere DMS-Objekte mit Benutzerinteraktion speichern, dann wird nur die Quellkategorie des ersten Elements im Array storeObjects im Ablagedialog berücksichtigt. Diese Quellkategorie wird für alle weiteren Dateien, die Sie ablegen möchten, dem Anwender angezeigt.

sourceId

Legt fest, zu welcher Quelle die Zuordnung gehört, die zum Speichern verwendet werden soll. Die Quelle muss existieren und das Quellsystem muss bei d.ecs http gateway registriert sein, damit die Eigenschaften unter sourcePropertiesUri oder sourceProperties angewendet werden.

Weitere Informationen zum Bereitstellen einer Quelle finden Sie unter Definieren eines Quellsystems.

Wenn Sie kein eigenes Quellsystem haben, können Sie auch das Standardquellsystem des d.3-Repositorys verwenden. Informationen über das Standardquellsystem finden sie unter Abrufen des Standardquellsystems zu einem d.3-Repository.

sourcePropertiesUri

Gibt die URL an, unter der die DMSApp die Elementeigenschaften für die Zuordnungsverarbeitung und Duplikatsprüfung herunterladen soll. Vor dem Speichern des DMS-Objektes sendet die DMSApp eine HTTP GET-Anforderung an die URL, um die Quelleigenschaften für den Ablagevorgang zu ermitteln. Wenn es sich bei sourcePropertiesUri um eine relative URL handelt, werden die Benutzerinformationen des angemeldeten Benutzers in der HTTP-Anforderung ebenfalls übertragen (AuthSessionID). Dadurch haben Sie die Möglichkeit, z.B. eine Berechtigungsprüfung durchzuführen oder den aktuellen Benutzernamen zu berücksichtigen. Bei einer absoluten URL werden die Quelleigenschaften anonym angefordert (request). Unter "Festlegen der Quelleigenschaften" ist das bereitzustellende JSON-Objekt beschrieben.

Alternativ zu dieser Eigenschaft können Sie die Eigenschaft sourceProperties verwenden.

sourceProperties

Gibt ein JSON-Array mit Quelleigenschaften an, die für die Zuordnungsverarbeitung und Duplikatsprüfung verwendet werden. Unter "Festlegen der Quelleigenschaften" ist das bereitzustellende JSON-Objekt beschrieben.

Alternativ zu dieser Eigenschaft können Sie die Eigenschaft sourcePropertiesUri verwenden.

contentLocationUri

Gibt die URL zur temporär hochgeladenen Datei an. Weitere Informationen finden Sie unter Bereitstellung über temporäres Hochladen.

Alternativ können Sie die Eigenschaft contentUri verwenden.

Legen Sie diesen Parameter fest, dann müssen Sie die unter sourceCategory angegebene Kategorie in der Zuordnungsverarbeitung einer Dokumentart zuordnen. Geben Sie weder die contentLocationUri- noch die contentUri-Eigenschaft an, dann müssen Sie die unter sourceCategory angegebene Kategorie in der Zuordnungsverarbeitung einer Aktenart zuordnen.

Diese Eigenschaft ist optional, wenn Sie ein DMS-Objekt aktualisieren oder eine Akte erstellen möchten.

contentUri

Gibt die relative URL an, unter der die DMSApp die abzulegende Datei herunterlädt. Weitere Informationen finden Sie unter Bereitstellung über temporäres Hochladen.

Alternativ können Sie die Eigenschaft contentLocationUri verwenden.

Legen Sie diesen Parameter fest, dann müssen Sie die unter sourceCategory angegebene Kategorie in der Zuordnungsverarbeitung einer Dokumentart zuordnen. Geben Sie weder die contentLocationUri- noch die contentUri-Eigenschaft an, dann müssen Sie die unter sourceCategory angegebene Kategorie in der Zuordnungsverarbeitung einer Aktenart zuordnen.

Diese Eigenschaft ist optional, wenn Sie ein DMS-Objekt aktualisieren oder eine Akte erstellen möchten.

parentId

Gibt die DMS-Objekt-ID der Akte an, mit der das abzulegende Element verknüpft werden soll. Ist der Ablagevorgang erfolgreich, wird das abgelegte Element mit der entsprechenden Akte verknüpft. Wurde das abzulegende Element als Duplikat erkannt, wird das bereits vorhandene Element mit der Akte verknüpft.

Wenn Sie eine Akte mit einer anderen Akte verknüpfen möchten, wird jedoch keine Duplikatsprüfung vorgenommen.

Diese Eigenschaft wird ignoriert, wenn Sie ein DMS-Objekt aktualisieren.

successCallbackUri

Gibt die URL an, die über HTTP POST aufgerufen wird, wenn der Ablagevorgang erfolgreich durchgeführt wurde. Die URL muss relativ sein. Weitere Informationen finden Sie unter Feedback mithilfe von "SuccessCallback" und "Userdata".

Diese Eigenschaft ist optional. Sie können die Eigenschaft nur beim Speichern mit Benutzerinteraktion verwenden.

Festlegen der Quelleigenschaften

Sie können die Quelleigenschaften direkt mithilfe des Parameters sourceProperties definieren oder mit der URL in sourcePropertiesUri bereitstellen.

Das JSON-Objekt ist wie folgt beschrieben:

Eigenschaft

Beschreibung

properties

Gibt ein Array der Quelleigenschaften an, die für die Zuordnungsverarbeitung bereitgestellt werden. Es werden nur diejenigen Eigenschaften beim Speichern berücksichtigt, die vom Administrator in der Zuordnung konfiguriert wurden.

uniqueTag

Gibt einen eindeutigen Hashcode an, der von der Quelle für das abzulegende Element festgelegt und von d.3 server zur Duplikatserkennung verwendet wird. Das Festlegen dieser Eigenschaft ist optional.

userdata

Gibt ein Array von Optionen an, die zusätzlich im Ablagedialog angezeigt werden sollen. Das Angeben dieser Eigenschaft ist optional. Sie können die Eigenschaft nur beim Speichern mit Benutzerinteraktion verwenden.

Weitere Informationen finden Sie unter Feedback mithilfe von "SuccessCallback" und "Userdata".

checkHash

Gibt den Hash der zu speichernden Datei an. Der Hash der zu speichernden Datei hilft Ihnen sicherzustellen, dass Sie das Speichern einer Datei in einem d.3-Repository überprüfen können. Sobald die Hashes nicht übereinstimmen, wird das Speichern des Dokuments mit einer Fehlermeldung abgebrochen.

Während des Speicherns wird serverseitig ein Hash von der zu speichernden Datei gebildet und mit dem Hash, den Sie generieren, verglichen und überprüft. Der Parameter muss dabei dem folgenden Aufbau entsprechen:

HASHALGORITHM:base64encode(hashfunction(PAYLOAD))

Beispiel für eine Datei mit dem Inhalt "Example":

SHA512:xrCRnH/mKK6QVpksSpF+XcA1qWFdSX9usr0UBj6q0+ZQjvyGgv7IKCPKPz3jEYaKcpkJRhZkKfAbOPnzPZymEA==

Folgende Hashalgorithmen werden unterstützt:

  • RIPEMD256

  • SHA256

  • SHA384

  • SHA512

  • MD5

Dieser Parameter ist optional.

Führen Sie die Base64-Encodierung immer auf Byte-Ebene aus. Die Encodierung einer textuellen Repräsentation führt zu invaliden Hashwerten.

Beispiele für das Erzeugen eines checkHash-Wertes unter Verwendung der Klassen aus System.Security.Cryptography in C#:

private string CreateM5Hash(string filename)
{
   using (var md5 = MD5.Create())
   {
       using (var stream = File.OpenRead(filename))
       {
             var retVal = md5.ComputeHash(stream);
                         //Bytes in retVal für eine Datei mit dem Inhalt "Example": 
                 //45 155 209 108 21 173 26 160 179 111 217 119 62 110 20 172

             return $"MD5:{Convert.ToBase64String(retVal)}"; 
                 //Hash base64-encodiert:   
                         //MD5:ClJzBZf7T/oB/BF9nnHjqQ==        
                }
   }
}

private string CreateSHA256Hash(string filename)
{
    using (var sha256 = SHA256.Create())
    {
        using (var stream = File.OpenRead(filename))
        {
            var retVal = sha256.ComputeHash(stream);
                    //Bytes in retVal für eine Datei mit dem Inhalt "Example":  
                        //53 239 154 101 221 213 246 176 70 65 37 206 150 167 54 152 
                        //63 65 154 140 96 227 200 169 71 112 149 213 153 156 17 27

            return $"SHA256:{Convert.ToBase64String(retVal)}";
                    //Hash base64-encodiert: 
                        //SHA256:0Cn4fj2A+P2bG+Z8dCa0zB/0e0qdCoRhyCalnYxets0= 
        }
    }
}

private string CreateSHA512Hash(string filename)
{
    using (var sha512 = SHA512.Create())
    {
        using (var stream = File.OpenRead(filename))
        {
            var retVal = sha512.ComputeHash(stream);
                        //Bytes in retVal für eine Datei mit dem Inhalt "Example":   
                        //72 237 177 122 242 252 39 57 63 98 44 167 119 228 162 20 106 
                        //147 201 76 246 223 209 126 97 224 198 30 40 137 121 216 147 
                        //21 15 16 1 103 84 101 60 241 95 82 14 126 211 137 170 235 180 
                        //206 18 112 247 228 229 185 208 62 192 244 131 41

            return $"SHA512:{Convert.ToBase64String(retVal)}";
                //Hash base64-encodiert:  
                        //SHA512:xrCRnH/mKK6QVpksSpF+XcA1qWFdSX9usr0UBj6q0+ZQjvyGgv7IKCPKPz3jEYaKcpkJRhZkKfAbOPnzPZymEA== 
        }
    }
}

Struktur eines Objekts im Array "properties"

Eigenschaft

Beschreibung

key

Gibt die ID der Quelleigenschaft an. Es werden nur diejenigen Eigenschaften berücksichtigt, die von Ihnen angegeben und die vom Administrator in der Zuordnung konfiguriert wurden.

Beim Aktualisieren eines DMS-Objektes werden nur die von Ihnen angegebenen Eigenschaften aktualisiert. Alle weiteren Werte der Eigenschaften des bereits vorhandenen DMS-Objektes bleiben bestehen.

Wenn Sie das Erstellungsdatum (property_creation_date) des DMS-Objektes festlegen möchten, dann wird das Festlegen der Eigenschaft nur beim Speichern eines neuen DMS-Objektes ohne Benutzerinteraktion berücksichtigt. Weitere Informationen finden Sie unter  Speichern eines neuen DMS-Objektes ohne Benutzerinteraktion.

values

Gibt ein Array mit den zugehörigen Werten der Elementeigenschaft an. Auch wenn Sie nur einen Wert übergeben möchten, müssen Sie diesen Wert als JSON-Array übergeben.

Sie können den d.3-Dokumentstatus für ein DMS-Objekt beim Speichern eines neuen DMS-Objektes festlegen. Mögliche Werte sind Processing, Verification und Release.

Beim Aktualisieren eines DMS-Objektes werden Zuordnungen zu d.3-Dokumentstatus, d.3-Variantennummer, d.3-Dokument-ID und d.3-Dokumentnummer ignoriert.

Eigenschaften mit der Kennzeichnung "nur lesend" werden beim Speichern nicht berücksichtigt.

Beim Aktualisieren ohne Benutzerinteraktion muss der authentifizierte Benutzer der Bearbeiter des DMS-Objektes sein, wenn das bestehende DMS-Objekt den d.3-Dokumentstatus Processing hat.

Geben Sie numerische Werte ohne Tausendertrennzeichen an. Als Dezimaltrennzeichen gilt der Punkt (.). Beispiel: Für den Wert 1.000,20 EUR geben Sie 1000.20 an.

Geben Sie Datumswerte im Format YYYY-MM-DD an. Beispiel: Für den 05.12.2014 (DD.MM.YYYY) geben Sie 2014-12-05 an.

Geben Sie Datumszeitwerte im Format YYYY-MM-DDTHH:mm:ss+01:00. Beispiel: 2015-02-18T23:59:59+01:00 für den 18.02.2015 um 23:59 Uhr und 59 Sekunden in der Zeitzone UTC+1 für Winterzeit in Deutschland.

Beispiel 1: Bereitstellen der Datei und der Eigenschaften durch eine URL 

Ein einfaches JSON-Objekt könnte wie folgt aussehen:

{
    "filename": "myfile.txt",
        "alterationText": "updated file",
    "sourceCategory": "mycategory1_ID",
    "sourceId": "/myapp/sources/mysource",  
    "contentUri": "/myapp/sources/mysource/myfile.txt",
    "sourcePropertiesUri": "/myapp/sources/mysource/myfile.haljson"    
}

Beispiel 2: Direktes Angeben der Eigenschaften, inklusive der Parameter "userdata" und "successCallbackUri"

Das folgende JSON-Objekt enthält userdata und die Eigenschaften (properties). Zugleich wird uniqueTag für die Duplikatsprüfung festgelegt. Die ID der Akte wird in dem Parameter parentId festgelegt, um das neu zu erstellende DMS-Objekt zu verlinken:

{
    "displayValue": "Please verify the XYZ invoice",
    "filename": "myfile.txt",
        "alterationText": "updated file",
    "sourceCategory": "mycategory1_ID",
    "sourceId": "/myapp/sources/mysource",
    "parentId": "P123456789",
    "contentLocationUri": "/dms/r/dee1f3d3-eae8-5d9d-84d8-2d758c5ddc27/blob/chunk/2018-01-01_temp_master_file_user1_44f7-95a6-58b8400ecf43",
    "successCallbackUri": "/myapp/sources/mysource/myfile/success",
    "sourceProperties": {
        "properties": [{
                "key": "myprop1_ID",
                "values": ["Please verify the XYZ invoice"]
            },
            {
                "key": "myprop2_ID",
                "values": ["Name1@contoso.com","Name2@samplecompany.de"]
            }
        ],
                "userdata": [{
                    "key": "postProcessingOption",
                        "display": "My post processing options",
                "values": [
                        {"value":"1", "display": "Action 1", "default":"false"},
                        {"value":"2", "display": "Default action 2", "default":"true"},
                        {"value":"3", "display": "Action 3", "default":"false"}
                ]
                }
        ],
                "uniqueTag": "123456789",
                "checkHash": "MD5:ClJzBZf7T/oB/BF9nnHjqQ=="
    }
}