DocumentService (/documents)/

DocumentService (/documents)/

Neben den Methoden zur Suche und Anzeige von Indexdaten bietet der DocumentService noch Funktionen zur Auszeichnung von Dokumentenfavoriten an. Diese Funktionen werden über eine spezielle konfigurierbare Mappe des Benutzers abgebildet, in der die als Favoriten markierten enaio®-Objekte verwaltet werden.

/osrest/api/documents

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: JSON

Die Methode liefert eine gekürzte Version der für den Benutzer gültigen Objektdefinition zurück.

/osrest/api/documents/cabinets

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: JSON

Die Methode liefert eine Liste aller interner Namen für den Benutzer sichtbaren Schränke zurück.

/osrest/api/documents/cabinets/[Schrank]

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: JSON

Die Methode liefert alle Ordner aus dem Schrank mit dem gegebenen Namen.

Optionale Parameter sind:

  • metadata (String): Dateiname eines alternativen Metadatenmappings

  • pagesize (Integer): maximale Anzahl der Treffer

  • offset (Integer): Trefferoffset für das Blättern durch die Treffer

  • page (Integer): angeforderte Seite für das Blättern durch die Treffer

/osrest/api/documents/storedqueries

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: JSON

Die Methode liefert eine Liste der gespeicherten Anfragen zurück. Das Feld isIncomplete zeigt bei einer Anfrage an, dass nicht alle ursprünglichen variablen Felder in der Abfrage enthalten sind. Dies passiert dann, wenn ein variables Feld der Anfrage im Nachgang aus der Objektdefinition entfernt wurde ohne den Server neuzustarten.

Optionale Parameter sind:

  • showglobal (String): Ist der Parameter auf 'false' gesetzt, werden globale gespeicherte Anfragen ausgeblendet.

  • foldering (Boolean): Ist der Parameter gesetzt und 'true', werden die Anfragen gemäß des enaio® clients in Ordner strukturiert. Die Rückgabestruktur gleicht dann einem Baum und ist keine plane Liste mehr.

  • refresh (Boolean): Ist der Parameter gesetzt und 'true', wird das Cache ignoriert und die Anfragen neu vom Server abgefragt.

/osrest/api/documents/storedqueries/[id]

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: JSON

Die Methode liefert das Ergebnis der gespeicherten Anfrage mit der übergegebenen ID zurück. Für DATE-, TIME- und DATETIME-Felder kann auch <Datum, <=Datum, >Datum, >=Datum/Datum und Zeit/Zeit angegeben werden.
Eine Intervallsuche für Datum, Zeit und Datum/Zeit ist erst ab enaio® 8.1 möglich.

Optionale Parameter sind:

  • metadata (String): Dateiname eines alternativen Metadatenmappings

  • pagesize (Integer): maximale Anzahl der Treffer für den Aufruf

  • offset (Integer): Trefferoffset für das Blättern durch die Treffer

  • page (Integer): angeforderte Seite für das Blättern durch die Treffer

  • autostar (String): Autosternverhalten. Werte gleichen der Server-API-Werte: ("0" = Kein Autostern, "1" = *Anfrageparameter, "2" = Anfrageparameter*, "3" = *Anfrageparameter*). Wird kein Wert angegeben, wird der Wert aus der Clientkonfiguration des Benutzers übernommen.

  • verbose (Boolean): Es wird ein erweitertes generische Metadatenmodell ausgegeben

  • Anfrageparameter als HTTP-Queryparameter [objekt].[feld] (z. B. Email.Absender=Peter)

.../osrest/api/documents/storedqueries/1234?Person.Vorname=Gustav&Person.Nachname=Gans&metadata=MeinMapping

/osrest/api/documents/storedqueries/[id]

  • Unterstützte Anfragemethoden: POST

  • Unterstützte Eingabeformate: JSON

  • Unterstützte Ergebnisformate: JSON

Die Methode liefert das Ergebnis der gespeicherten Anfrage mit der übergebenen ID zurück. Statt der storedqueries/[id] GET-Methode werden hier direkt die VariablenNamen mit den gewünschten Suchwerten als JSON übergeben. Ansonsten sind die Methoden von ihrer Funktionsart her gleich. Für DATE-, TIME- und DATETIME-Felder kann auch <Datum, <=Datum, >Datum, >=Datum/Datum und Zeit/Zeit angegeben werden. Eine Intervallsuche für Datum, Zeit und Datum/Zeit ist erst ab Enaio 8.1 möglich.

Optionale Parameter sind:

  • metadata (String): Dateiname eines alternativen Metadatenmappings

  • pagesize (Integer): maximale Anzahl der Treffer für den Aufruf

  • offset (Integer): Trefferoffset für das Blättern durch die Treffer

  • page (Integer): angeforderte Seite für das Blättern durch die Treffer

  • autostar (String): Autosternverhalten. Werte gleichen der Server-API-Werte: ("0" = Kein Autostern, "1" = *Anfrageparameter, "2" = Anfrageparameter*, "3" = *Anfrageparameter*). Wird kein Wert angegeben, wird der Wert aus der Clientkonfiguration des Benutzers übernommen.

  • verbose (Boolean): Es wird ein erweitertes generische Metadatenmodell ausgegeben

POST JSON Beispiel

{ fields: { "var1": "Kunde*", "var2": "10.12.2015 } }

/osrest/api/documents/storedqueries/add

  • Unterstützte Anfragemethoden: POST

  • Unterstützte Eingabeformate: JSON

  • Unterstützte Ergebnisformate: JSON

Pflichtparameter sind:

  • name (String): Name der Suchanfrage

Die Methode liefert die ID der gespeicherten Suchanfrage zurück. Im POST-Body muss eine Suchanfrage gemäß des /osrest/api/documents/search Aufrufes mitgegeben werden. Hier existiert jedoch aktuell die Einschränkung, dass bei den Listen-Basisparametern nur der erste Wert übernommen wird. Es kann also beispielsweise keine Veroderung von ArchiveState vorgenommen werden. Zudem gelten dieselben Einschränkungen, wie für den Serverjob "DMS.AddStoredQuery".

/osrest/api/documents/tray

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: JSON

Die Methode liefert die Objekte aus der Benutzerablage zurück.

Optionale Parameter sind:

  • metadata (String): Dateiname eines alternativen Metadatenmappings

/osrest/api/documents/[id]

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: JSON

Die Methode liefert die Indexdaten des Objektes mit der gegebenen ID.

Optionale Parameter sind:

  • objecttypeid (Integer): ObjektTyp ID des gesuchten Objekts. Der Parameter ist optional, aber aus Performanzgründen wird empfohlen den Parameter zu setzen, wenn er bekannt ist.

  • metadata (String): Dateiname eines alternativen Metadatenmappings

  • insertInfo (boolean): Ausgabe aller hinzufügbaren Objekttypen

  • insertInfo_verbose (boolean): ausführlichere Ausgabe aller hinzufügbaren Objekttypen

  • locale  (DE, EN, SP, FR, IT, NL, SV, HU, PL): Mittels einer dieser Abkürzungen in Großbuchstaben wird die Ausgabesprache festgelegt.

  • lockinfo (boolean): Informationen zum Benutzer sowie Datum und Uhrzeit, an dem das Objekt gesperrt wurde. Alternative Werte sind UNLOCKED, SELF oder EXTERN.

  • timestamps (boolean): Bei true werden die Datum-, Zeit- und Datum/Zeit-Basisparameter in Form eines Java-Zeitstempels zurückgegeben.

  • refresh (boolean): ignoriert die zwischengespeicherten Daten und ruft die angefragten Daten neu ab

  • fillLeadingZeros (boolean): Es werden führende Nullen gemäß der enaio Editoreinstellungen bei Werten mit ausgegeben.

  • verbose (boolean): Ausgabe aller Felddaten Deprecated! Bitte documents/search/{Id} verwenden.

Hinweis für insertInfo-Parameter: Im Normalfall werden nur Pflichtfelder eines Objekttyps ausgegeben. Für weitere Felder muss in der Schemadatei ein insertFields-Tag hinzugefügt werden (siehe Beispiel).

Optionale Felder in insertInfo

<cabinet name="Kunde"> <object name="Dokument"> <property name="title" field="Typ"/> <property name="info" field="Beschreibung"/> <insertFields active="true"> <!-- true ist default --> <property field="Beschreibung"/> <!-- Beschreibung ist kein Pflichtfeld --> </insertFields> </object> <cabinet/>

/osrest/api/documents/parent/[id]

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: JSON

Die Methode liefert in einer Baumstruktur bestimmte Elternobjekte zu einem Objekt mit der gegebenen ID. Hat ein Objekt mehrere Standorte wird auch nur einer zurückgeliefert. Um Daten zu einem bestimmten Standort zu erhalten, muss eine parentId mitgegeben werden.

Optionale Parameter sind:

  • objecttypeid (Integer): ObjektTypID des gewünschten Objekts. Der Parameter ist optional, aber aus Performanzgründen wird empfohlen den Parameter zu setzen, wenn er bekannt ist.

  • parentid (Integer): ID eines bestimmten Elternobjekts

  • parenttypeid (Integer): ObjektTypId des Elternobjekts. Der Parameter ist optional, aber aus Performanzgründen wird empfohlen den Parameter zu setzen, wenn er bekannt ist.

  • metadata (String): Dateiname eines alternativen Metadatenmappings

Die Ausgabe entspricht der Form des /osrest/api/documents/parents/[id]-Aufrufs.

/osrest/api/documents/parents/[id]

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: JSON

Die Methode liefert eine sortierte, lineare Liste der Elternobjekte zu einem Objekt mit der gegebenen ID. Neben der linear, sortierten Liste, kann auch die Baumstruktur eines Standorts angezeigt werden, was insbesondere für die Darstellung mehrerer Standorte wichtig ist.

Optionale Parameter sind:

  • objecttypeid (Integer): ObjektTypID des gewünschten Objekts. Der Parameter ist optional, aber aus Performanzgründen wird empfohlen den Parameter zu setzen, wenn er bekannt ist.

  • metadata (String): Dateiname eines alternativen Metadatenmappings

  • verbose (Boolean): Es wird ein erweitertes generische Metadatenmodell ausgegeben

  • tree (Boolean): Wenn true, wird die Standort-Hierarchie aller Standorte eines Objekts als Baum dargestellt. Dieser Parameter sollte immer mitgegeben und "true" gesetzt werden, andernfalls kann es bei Objekten mit mehreren Standorten zu Problemen kommen. Die "einfache" lineare Ausgabe wird aus Kompatibilitätsgründen weiterhin verwendet.

Beispiel der Ausgabe (Objekt-ID war hier 14007051):

{ "pagesize": 500, "totalHits": 3, "more": false, "documents": [ { "id": "4475", "type": "FOLDER", "fields": { "title": "Stoz Pumpenfabrik GmbH", "info": "Anwender 0234-OS" }, "fav": false, "typeless": false }, { "id": "14003866", "type": "REGISTER", "fields": { "title": "Altbestand", "info": "Einführung enaio, 50 user, Jukebox" }, "fav": false, "typeless": false }, { "id": "14007051", "type": "DOCUMENT", "fields": { "title": "Angebot: STP-AN-1/13", "info": "Einführung ECM...." }, "fav": false, "typeless": false } ] }

/osrest/api/documents/objectHierarchy/[id]

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: JSON

Die Methode liefert die Verzeichnisbaumstruktur eines Ordners oder Registers bis zu einer variablen Tiefe. Der Hashwert "hash" auf der obersten Ebene ist ein kumulativer Hashwert, der den gesamten zurückgegebenen Baum beinhaltet. Er kann optional bei späteren Anfragen als Parameter übergeben werden. Wird er mit übergeben und ist er identisch zu dem aktuellen Hashwert, so wird kein Baum vom Server zurückgeliefert. Er ist ja identisch zum bestehenden. Die Hashwerte auf den einzelnen Ebenen des Baumes beziehen sich ausschließlich auf die Ebene selber. Der jeweilige Hashwert bezieht keine Unterordner/Unterregister mit ein. Über diese Hashwerte kann schnell überprüft werden, ob für die Ebene die gecachten Daten verwendet werden können oder ob die Ebene (falls mehr Informationen notwendig sind) über documents/explore neu bezogen werden muss.

Optionale Parameter sind:

  • depth (int): Tiefe der Verzeichnisbaumstruktur

  • hash (String): Hashwert, der mit neuem kumulativ errechnetem Hashwert abgeglichen wird. Bei Gleichheit wird kein Baum zurückgegeben.

  • childschema (String): DOC|REG|ALL- DOC alle Dokumente-, REG alle Register werden automatisch hinzugefügt, ALL Alle Register und Dokumente werden automatisch hinzugefügt

Beispiel der Ausgabe (id=4779;depth=10):

http://localhost:8080/osrest/api/documents/objectHierarchy/4779?depth=10

{ "pagesize": -1, "totalHits": 1, "more": false, "documents": [ { "id": "4779", "type": "FOLDER", "fields": { "title": "null", "info": "0" }, "fav": false, "typeless": false, "hasPages": false, "lastmodified": "1295711263", "children": { "hash": "-1010811263", "documents": [ { "id": "14043114", "type": "REGISTER", "fields": {}, "fav": false, "typeless": false, "hasPages": false, "lastmodified": "1263306900", "children": { "hash": "-363596267", "documents": [ { "id": "4780", "type": "DOCUMENT", "fields": {}, "fav": false, "typeless": false, "hasPages": false, "lastmodified": "1231420126" }, { "id": "5770", "type": "DOCUMENT", "fields": {}, "fav": false, "typeless": false, "hasPages": false, "lastmodified": "1231420126" } ] } } ] } } ], "hash": "840007432" }

 /osrest/api/documents/childrenHierarchy/[id]

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: JSON

  • Ab enaio 9.00

Die Methode liefert die vollständige Baumstruktur aller Kinder eines Ordners oder Registers.

Beispiel der Ausgabe:

http://localhost:8080/osrest/api/documents/childrenHierarchy/23617

[{ id: "24271", objectTypeId: "6488087", lastmodified: "1499433939000", children: [{ id: "24438", objectTypeId: "6488087", lastmodified: "1520591596000", children: [{ id: "58999", objectTypeId: "6488087", lastmodified: "1520521139000", children: [{ id: "59000", objectTypeId: "196620", lastmodified: "1520521158000", children: [] }] }, { id: "59153", objectTypeId: "6488087", lastmodified: "1520591800000", children: [] }, { id: "59154", objectTypeId: "6488087", lastmodified: "1520591876000", children: [] }] } }]

/osrest/api/documents/variants/[id]

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: JSON

Die Methode liefert alle Varianten zu dem Objekt mit der gegebenen ID zurück. Hat das Objekt keine Varianten wird das Objekt als Variante zurückgeliefert.

Optionale Parameter:

  • objectTypeId (Integer): ObjectTypeId des Dokuments. Der Parameter ist optional, aber aus Performanzgründen wird empfohlen den Parameter zu setzen, wenn er bekannt ist.

  • verbose (boolean): Reichert die einzelnen Varianten mit einer 'ecmObject' Property an, die ausführlichere Informationen zu den einzelnen Dokumenten bietet (sowie Indexdaten, etc.).

  • refresh (boolean): Übergeht die zwischengespeicherten Daten und ruft die angeforderten Daten neu ab.

{ "id": 14007049, "originId": 0, "version": "Original", "active": false, "children": [ { "id": 14007051, "originId": 14007049, "version": "1.0.0", "active": true, "children": [ { "id": 14041838, "originId": 14007051, "version": "1.1.0", "active": false, "children": [] } ] }, { "id": 14119107, "originId": 14007051, "version": "2.0.0", "active": false, "children": [] } ] }

/osrest/api/documents/variants/setactive/[id]

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: HTTP/204 (No Content)

Die Methode setzt die Variante mit der übergebenen Varianten-ID als aktive Variante.

Path Parameter:

  • id (int): ID der Variante, die aktiviert werden soll

Optionale Query Parameter:

  • activevariant (Integer): ID der Variante, die gerade aktiv ist. Der Parameter ist optional, aber aus Performanzgründen wird dringend empfohlen den Parameter zu setzen, wenn er bekannt ist.

  • objecttypeid (Integer): ObjectTypeId des Dokuments. Der Parameter ist optional, aber aus Performanzgründen wird empfohlen den Parameter zu setzen, wenn er bekannt ist.

/osrest/api/documents/variants/create/[originid]

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: JSON

Die Methode erstellt eine neue Untervariante zu der Variante mit der übergebenen ID. Ist der Job erfolgreich, wird die neu erstellte Variante zurückgeliefert.

Path Parameter:

  • originid (int): ID der Variante aus der das neue Dokument erstellt werden soll

Pflicht Parameter:

  • type (String): Gibt an auf welcher Ebene die neue Variante angelegt werden soll (als neue Hauptvariante, Nebenvariante oder Untervariante). Mögliche Werte sind: "main", "parallel", "sub".

Optionale Parameter:

  • objecttypeid (Integer): ObjectTypeId des Dokuments. Der Parameter ist optional, aber aus Performanzgründen wird empfohlen den Parameter zu setzen, wenn er bekannt ist.

  • verbose (boolean): Reichert die zurückgelieferte Variante mit einer 'ecmObject' Property an, die ausführlichere Informationen zu den einzelnen Dokumenten bietet (sowie Indexdaten, etc.).

/osrest/api/documents/explore/[id]

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ergebnisformate: JSON

Die Methode liefert den Inhalt des Ordners oder Registers mit der gegebenen ID.

Optionale Parameter sind:

  • metadata (String): Dateiname eines alternativen Metadatenmappings

  • pagesize (Integer): maximale Anzahl der Treffer

  • offset (Integer): Trefferoffset für das Blättern durch die Treffer

  • insertInfo (Boolean): Ausgabe aller hinzufügbaren Objekttypen (vgl. Hinweis für insertInfo-Parameter)

  • page (Integer): angeforderte Seite für das Blättern durch die Treffer

/osrest/api/documents/explore

  • Unterstützte Anfragemethoden: POST

  • Unterstützte Eingabeformate: JSON

  • Unterstützte Ergebnisformate: JSON

Optionale Parameter sind: 

  • pagesize (Integer): maximale Treffer pro Seite

  • offset (Integer): Trefferoffset für das Blättern durch die Treffer

  • page (Integer): angeforderte Seite für das Blättern durch die Treffer

  • registertreeids (Boolean): Im Ergebnis findet sich eine Sektion des gesamten Registerbaumes vom Ordner, in welchem sich das angefragte Register befindet (Ab 9.00)

Eine Anfrage für einen explore Aufruf muss immer die "osid" des zu öffnenden Eltern-Objektes beinhalten. Da auch das Eltern-Objekt ausgegeben wird, kann mit dem fieldschema_mode Wert die auszuliefernden Felder jenes Objekts festgelegt werden. Explore kennt dabei folgende Parameter, die im JSON auf der oberster Ebene angegeben werden müssen:

Parameter

Typ

Beschreibung

Default

Parameter

Typ

Beschreibung

Default

osid

String

ID des Eltern-Objekts ist ein Pflichtfeld, muss also gesetzt werden.

-

fieldschema_mode

[MIN, DEF, ALL]

Legt fest in welchem Modus die Felder des angefragten Objektes zurückgegeben werden. MIN= nur Basisparameter | DEF= die im fieldschema-Objekt definierten Felder | ALL= alle Felder

MIN

childschema_mode

[DOC, REG, ALL, DEF]

Legt fest in welchem Modus die Kind-Objekte zurückgegeben werden.

  • DOC = Nur Dokumenttypen

  • REG = nur Registertypen

  • ALL = Alle möglichen Objekttypen

  • DEF = nur die in "children" definierten Objekttypen

ALL

childfieldsschema_mode

[MIN, DEF, ALL]

Legt fest in welchem Modus die Felder der Kind-Objekte zurückgegeben werden. MIN= nur Basisparameter der Kinder | DEF= die in "children" definierten Felder | ALL= alle Felder der Kinder

MIN

children

List[child]

Definiert die Kindtypen, die ausgegeben werden sollen. Muss in Kombination mit "childschema_mode": DEF verwendet werden.

null

explore_depth

Integer

Legt die Tiefe des explore Aufrufs fest. ACHTUNG! kann zu sehr großen Trefferlisten führen schon bei einer Tiefe von 1.

1

registertreeids

Boolean

In der Antwort des Calls findet sich im JSON ein Abschnitt "folderRegisterTree". In diesem ist die gesamte Hierarchie des Ordners (wenn ein Register angefragt wurde der Ordner in welchem sich das Register befindet) mit seinen Unterregistern. Dabei werden nur die Ids ausgegeben. Sind Indexdaten zusätzlich gewünscht, so müssen die anhand der Ids in einem weiteren Aufruf angefragt werden.

false

Kind-Typen, die in "children" definiert werden, kennen folgende Parameter:

Parameter

Typ

Beschreibung

Parameter

Typ

Beschreibung

objectTypeId

String

Typ ID des Kind-Typs.

internalName

String

interner Name des Kind-Typs.

displayName

String

sprechender Name des Kind-Typs.

dbname

String

Datenbank Name des Kind-Typs.

osguid

String

OS GUID des Kind-Typs.

fieldsschema

List[field]

Definiert die Felder, die von dem jeweiligen Objekt-Typen zurückgeben werden.

Feld-Typen, die in "fieldsschema" definiert werden, kennen folgende Parameter:

Parameter

Typ

Beschreibung

Parameter

Typ

Beschreibung

internalName

String

interner Name des Feld-Typs.

displayName

String

sprechender Name des Feld-Typs.

dbname

String

Datenbank Name des Feld-Typs.

osguid

String

OS GUID des Feld-Typs.

Ein explore-Aufruf kann nach folgendem Beispiel konfiguriert werden: 

Beispiel explore Request

{ "osid": "7882", "fieldsschema_mode": "MIN", "childschema_mode": "DEF", "childfieldsschema_mode": "DEF", "children": [ { "objectTypeId": "6488100", "fields": [ { "internalName": "Patientenstatus" }, { "internalName": "File" } ] }, { "objectTypeId": "262208", "fields": [ { "internalName": "feld16" }, { "internalName": "feld12" } ] }, { "objectTypeId": "393224", "fields": [ { "internalName": "Von_" }, { "internalName": "An_" }, { "internalName": "Betreff_" } ] } ] }

/osrest/api/documents/insertables/[locationId]

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ausgabeformate: JSON

Die Methode ermittelt die Anzahl der zum Zeitpunkt des Aufrufes gerade einfügbaren Objekte an diesem Standort. Die Ermittlung wird vom Server durchgeführt und basiert auf den Objektrelationen. Diese Objektrelationen werden mithilfe des Editors definiert und legen fest wie viele Objekte eines bestimmten Objekttyps in einem Ordner oder Register angelegt werden dürfen.

Beispiel für die Ausgabe

"objectInserts": { "262165": -1, "393221": -1, "6488083": 0, "6488084": 3, "6488085": -1, "6488086": -1 }

Die Ausgabe ist eine Liste von Objekttyp-IDs zusammen mit einer Anzahl. Die Anzahl kann -1 für unbegrenzt, 0 für keine und > 0 sein.

/osrest/api/documents/settype/[objectId]

  • Unterstützte Anfragemethoden: POST

  • Unterstützte Eingabeformate: JSON

  • Unterstützte Ausgabeformate: HTTP/204 No Content

Der Request muss den Contenttyp multipart/form-data haben (RFC 1867).

Die Methode typisiert ein typenloses Dokument. Ordner und Register können nicht typenlos sein. Da sich typenlose Dokumente entweder in der Benutzer- oder der Workflowablage befinden können, muss diese Information beim Aufruf mitgegeben werden. Typenlose Dokumente in der Akte eines Vorgangsschritt befinden sich damit auch in der Workflowablage. Für die Indexdaten des gewünschten Objekttyps können die Werte zur Verschlagwortung mit übergeben werden.

Parameter sind:

  • objectId (Integer): Die ID des zu typisierenden Dokumentes.

  • inwftray (boolean): Typisiert das Dokument in der Workflow Ablage.

  • inusertray (boolean): Typisiert das Dokument in der Nutzer Ablage.

Es muss einer der Parameter inwftray oder inusertray als true übergeben werden.

Objekt

{ "osid": "23360", "objectTypeId": "262176", "mainTypeId": "4", "fields": { "Ordner": { "value": "Kunde", "internalName": "Ordner" }, "Datum": { "value": "1495490400000", "internalName": "Datum" } }, "result_config": { "fieldsschema": [] } }

/osrest/api/documents/insert/[locationId]

  • Unterstützte Anfragemethoden: POST

  • Unterstützte Eingabeformate: JSON

  • Unterstützte Ausgabeformate: TEXT

Der Request muss den Contenttyp multipart/form-data haben (RFC 1867).

Die Methode erstellt ein Objekt in einem Ordner oder Register mit der gegebenen Standort-ID (Location-ID). Beim Anlegen von Ordnern oder Dokumenten in der Ablage kann der Parameter für die Location ID weggelassen oder eine Null gesendet werden. Das JSON-Schema basiert auf dem vom 'insertInfo'-Parameter zurückgegebenem Schema. Als Rückgabewert wird lediglich die neue OSID zurückgegeben und kein JSON.

Zur Identifikation des Typs des neu anzulegenden Objektes werden die Parameter cabinet für den Schrank und name für den internen- oder Anzeige-Namen oder alternativ die objectTypeId mitgegeben. Die mainTypeId zur Bestimmung des Haupttyps (siehe Server-API-Dokumentation)  ist optional.

Felder werden mit ihrem Anzeigenamen gekennzeichnet. Ihnen kann aber auch der interne Name als Attribut mitgegeben werden, dann wird der Anzeigename (display name) ignoriert.

Auch Varianten können angelegt werden. Dafür wird die ID des Dokuments, von dem die Variante erstellt werden soll, als Location-ID gesetzt. 

Für Radiobuttons muss dem Feld das 'type'-Attribut mitgegeben werden ("type": "RADIO").
Für Tabellen muss dem Feld das 'type'-Attribut mitgegeben werden ("type": "GRID").

Varianten: Wenn im Request keine Indexdaten übergeben werden, dann werden die Indexdaten vom Eltern-Dokument übernommen.

Optionaler Path-Parameter:

  • locationId (int): Objekt ID des gewünschten Standorts (Schrank oder Register ID).

Optionale Parameter sind:

  • objecttypeid (Integer): ObjektTypID des gewünschten Standorts. Der Parameter ist optional, aber aus Performanzgründen wird empfohlen den Parameter zu setzen, wenn er bekannt ist.

  • setvariantactive (boolean): Setzt die neue Variante als aktive Variante, z.B. http://demo.optimal-systems.org/osrest/api/documents/insert/14133432?setvariantactive=true.

  • archivable (boolean): Setzt das Dokument auf archivierbar ("Zur Archivierung freigeben").

  • islink (boolean): Erstellt einen weiteren Standort für das Dokument. Es muss eine osid neben der objecttypeid angegeben werden, wodurch das Quellobject definiert wird.

  • isgreenarrowreference (boolean): Erstellt einen grünen Pfeilverweis in dem Standort. Mitgesendeter Content wird ignoriert. Nur die Indexdaten werden gespeichert. Es muss eine osid neben der objecttypeid angegeben werden, wodurch das Quellobject definiert wird.. (Ab Version 1.5.103 verfügbar)

  • inwftray (boolean): Erstellt das Dokument in der Workflow Ablage.

  • inusertray (boolean): Erstellt das Dokument in der Nutzer Ablage.

Objekt

{ "cabinet": "Kunde", "name": "Projekt", "objectTypeId": "83", "fields": { "Projekttyp": { "internalName": "i_Projekttyp", "value": "PUA - Allgemein" }, "Art": { "value": "Technik" }, "3": { "internalName": "i_sichtbarfuer", "value": "DEMO(g)" } } }

Tabellen werden wie folgt befüllt. Bitte beachten, zwar nur die Spalten dem Request mitgegeben werden muss, die auch editiert werden, aber es müssen alle Zeilen mitgeliefert werden, da enaio-Seitig eine Ersetzung der Tabellenwerte erfolgt.

{ "fields": { ..., "ERH_INV_POS": { "type": "GRID", "columns": [ { "internalName": "ERH_INV_POS_QSID" }, { "internalName": "ERH_INV_POS_P1" }, { "internalName": "ERH_INV_POS_P3" } ], "rows": [ ["Row 1 - 1", "Row 1 - 2", "Row 1 - 3"], ["Row 2 - 1", "Row 2 - 2", "Row 2 - 3"], ["Row 3 - 1", "Row 3 - 2", "Row 3 - 3"], ["Row 4 - 1", "Row 4 - 2", "Row 4 - 3"] ] } } }

/osrest/api/documents/update/[id]

  • Unterstützte Anfragemethoden: POST

  • Unterstützte Eingabeformate: JSON

  • Unterstützte Ausgabeformate: JSON

Die Methode ändert das Objekt mit der gegebenen ID. Verwendung ähnelt der der documents/insert-Methode, wobei die ObjektTypeId optional mitgegeben werden kann, um den Aufruf zu beschleunigen. Außerdem können nur explizit angegebene Felder in enaio® geändert werden. Der Aufruf muss den Contenttyp multipart/form-data haben (RFC 1867).

Optionale Parameter sind:

  • replacefiles (Boolean): Ersetzt die Datei eines Dokuments, wenn Parameter 'true'.

  • archivable (boolean): Setzt das Dokument auf archivierbar.

Objekt

{ "cabinet": "Kunde", "name": "Projekt", "objectTypeId": "83", "fields": { "Projekttyp": { "internalName": "i_Projekttyp", "value": "PUA - Allgemein" }, "Art": { "value": "Technik" }, "3": { "internalName": "i_sichtbarfuer", "value": "DEMO(g)" } } }

/osrest/api/documents/archive/[id]

  • Unterstützte Anfragemethoden: GET

  • Unterstützte Ausgabeformate: HTTP/204 (No Content)

Die Methode ändert den Archivierstatus des Objekts mit der gegebenen ID. Die ObjektType Id kann optional mitgegeben werden, um den Aufruf zu beschleunigen.

Parameter sind:

  • id (int): Objekt ID des DMS Dokuments

  • archive (boolean): Gibt an, ob das Dokument archiviert werden soll oder ob die Archivierung aufgehoben werden soll.

Optionale Parameter sind:

  • objecttypeid (Boolean): ObjektTyp ID des gesuchten Objekts. Der Parameter ist optional, aber aus Performanzgründen wird empfohlen den Parameter zu setzen, wenn er bekannt ist.

/osrest/api/documents/archive

  • Unterstützte Anfragemethoden: POST

  • Unterstützte Eingabeformate: JSON

  • Unterstützte Ausgabeformate: JSON

Die Methode ändert den Archivierstatus der Objekte mit den gegebenen IDs. Die ObjektType Id eines Objekts kann optional mitgegeben werden, um den Aufruf zu beschleunigen.

Parameter sind:

  • archive (boolean): Gibt an, ob das Dokument archiviert werden soll oder ob die Archivierung aufgehoben werden soll.

POST Beispiel

[{ "id": "46551", "objectTypeId": "196636" },{ "id": "39616", "objectTypeId": "196636" }]

/osrest/api/documents/search

  • Unterstützte Anfragemethoden: POST

  • Unterstützte Eingabeformate: JSON

  • Unterstützte Ausgabeformate: JSON

Die Methode ermöglicht die Suche nach einem Objekt anhand von Feldwerten und/oder Basisparametern. Die Suche kann eingeschränkt werden (kombinierte Suche), indem Sie weitere Objekttypen angeben. Objekttypen werden mithilfe des internen Namens, dem Schranknamen, der OSID oder der Objekttyp-ID angegeben. Felder werden als Feld-Objekte in "fields" angegeben. Ihnen kann das Attribut "internalName" mitgegeben werden, ansonsten wird der Objektbezeichner als einfacher Name angenommen.

Optionale Parameter sind:

  • pagesize (Integer): Größe der Ergebnismenge. Damit kann ein Paging erreicht werden.

  • offset (Integer): Detaillierter Offset unabhängig von der pagesize.

  • page (Integer): Bei Paging die anzuzeigende Seite. Überschreibt den Parameter offset. Offset berechnet sich hierbei aus page * pagesize.

  • maxhits (Integer): Maximal zu ladende Treffer. Das können mehr Treffer sein, als bei pagesize angegeben worden sind. Damit kann das Caching reguliert werden, sodass Nachfolgeseiten schneller ausgeliefert werden.

  • rights (Boolean): In der Trefferliste sollen für jedes Objekt auch die Objektrechte ausgegeben werden.

  • fillLeadingZeros (boolean): Es werden führende Nullen gemäß der enaio Editoreinstellungen bei Werten mit ausgegeben.

  • fieldsschema (string): Legt fest, in welchem Modus die Felder des Objektes zurückgegeben werden. Mögliche Werte: MIN, ALL und DEF

Achtung

Die Trefferliste beinhaltet standardmäßig alle Index- und Metadaten und sorgt somit für große Datenübertragungen. 

Hinweis

Statt des internen Namens können auch einfache Namen verwendet werden. Dann muss jedoch auch der Schrankname angegeben werden, da der einfache Name nicht systemweit eindeutig ist.

{ "query": { "objectTypeId": "262220", "fields": { "Vertragsbasis": { "value": "1" }, "Archivbeleg erzeugen": { "value": "1" } }, "baseparams": { "Creator": { "value": "DEMO" }, "Created": { "value": "1028114820000" }, "Modifier": { "value": "DEMO", "negate": "true" } }   }, "additionalQueries": [ { "objectTypeId": "54", "fields": { "Projekttyp": { "value": "PUA - Allgemein", "internalName": "i_Projekttyp" }, "ProjektNr.": { "value": "123", "internalName": "i_ProjektNr." }, "Projektbezeichnung": { "value": "Testwert", "internalName": "i_Projektbezeichnung" }, "sichtbarfür": { "value": "DEMO(g)", "internalName": "i_sichtbarfuer" } }, "baseparams": { "Creator": { "value": "DEMO" }, "Created": { "value": "1028114820000" }, "Modifier": { "value": "DEMO", "negate": "true" } }   } ] }

Standardmäßig werden alle Bedingungen mittels UND verknüpft. Wie nachfolgend im Beispiel dargestellt wird, können diese auch mittels ODER verknüpft werden. Die einzelnen ConditionGroups werden miteinander ODER verknüpft. Die Felder innerhalb einer ConditionGroup UND verknüpft. Konkret auf das hier drunter folgende Beispiel bedeutet die Einschränkung: ((feld17 == "MEDICOLOR" && feld1 == "Diagnostik") || (feld1 == "Notfall")).

{ "query":{ "objectTypeId":"262208", "conditionGroups": [{ "fields": { "feld17":{ "value": "MEDICOLOR" }, "feld1":{ "value": "Diagnostik" }, } },{ "fields": { "feld1":{ "value": "Notfall" } } }] } }

Weiterhin können die normalen Bedingungsfelder sowie die Felder in den ConditionGroups negiert werden. Soll nach Objekten gesucht werden, die bestimmte Felder gefüllt haben (also nicht leer), so muss das value weggelassen und der Negate-Operand wie im nachfolgenden Beispiel kombiniert werden. Eine Angabe von value: "" oder value: null ist nicht notwendig und führt zu einer anderen Interpretation. Somit ist eine Suche nach allen Werten außer dem angegebenen Wert möglich, was in Kombination mittels UND und ODER sowie den Operatoren für arithmetische Vergleiche (siehe weiter unten), alle Bedingungen ermöglichen sollte.

{ "query":{ "objectTypeId":"262208", "fields": { "feld12":{ "negate": true } }, "conditionGroups": [{ "fields": { "feld17":{ "value": "MEDICOLOR", "negate": true } } },{ "fields": { "feld1":{ "value": "Notfall" } } }] } }

 
Suche in Tabellencontrols:

{ "query":{ "objectTypeId":"262208", "fields": { "iTable":{ "type": "GRID", "internalName": "iTable", "columns": [{ "internalName": "Liste Kurzwerte", "type": "decimal" }], "rows": [ ["19.00"] ] } } } }

Für die Einschränkung auf Objekte, die bestimmte Werte innerhalb einer Spalte eines Tabellencontrols haben, muss der type GRID angegeben werden und dann die columns (Spalten), die in das Suchkriterium einfließen sollen. Der Schlüssel rows ist hier eine Array. Pro unter columns angegebene Spalte muss innerhalb der Array eine Unterarray mit genau einem Wert übergeben werden. Die Suche nach mehreren Werten durch Angabe von mehreren Werten innerhalb der Unterarray ist aktuell nicht möglich.

Suche in mehrsprachigen Katalogen:

{ "query": { "fields": { "MehrsprachigeListe": { "internalName": "MehrsprachigeListe", "value": "Kunde", "queryCatalogueLocale": "de_DE" } }, "baseparams": {}, "result_config": { "outputCatalogueLocale": "en_US" }, "objectTypeId": "131081" } }

Ab Version 1.5.144 des enaio® appconnector kann in mehrsprachigen Katalogen gesucht werden. Mehrsprachige Kataloge bestehen aus Einträgen mit einem sprachunabhängigen und einem lokalisierten Wert für jede unterstützte Sprache. Für die Suche gibt es verschiedene Szenarien:

  1. Keine Angabe einer locale.
    Der Suchbegriff wird in den sprachunabhängigen Resourcen nachgeschlagen und dieser Wert auch zurückgegeben.

  2. Angabe der queryCatalogueLocale aber keine Angabe der outputCatalogueLocale.
    Der Suchbegriff wird in der angegebenen Sprache nachgeschlagen und der dazugehörige Wert aus den sprachunabhängigen Resourcen zurückgegeben.

  3. Angabe von queryCatalogLocale und outputCatalogueLocale.
    Der Suchbegriff wird in der angegebenen Sprache nachgeschlagen und der dazugehörige Wert aus den lokalisierten Sprachresourcen zurückgegeben.

  4. Keine Angabe der queryCatalogueLocale aber outputCatalogueLocale.
    Der Suchbegriff wird in den sprachunabhängigen Resourcen nachgeschlagen und der dazugehörige Wert aus den lokalisierten Sprachresourcen zurückgegeben.

Kombinierte Anfragen

Ab Version 1.5.96 wurden die Kombinierte Anfragen, welche sie über die Array "additionalQueries" mit senden können, von reiner Unterstützung der Haupt-Anfrage durch weitere einschränkende Bedingungen auf dem Rich-Client entsprechende Kombinierte Anfragen angepasst. Allgemein können Anfragen auf drei Ebenen agieren: Ordner, Register oder Dokument. Für die additionalQueries gelten folgende Regeln:

  • Ist die Haupt-Anfrage auf derselben Ebene (Ordner, Register oder Dokument) wie die aktuelle AdditionalQuery (Merker: Es können mehrere AdditionalQueries eingefügt werden), so agiert die AdditionalQuery eigenständig von der Haupt-Anfrage und kann auch eine Result_Config enthalten. Es wird dann nach Objekten der Haupt-Anfrage oder Objekten der AdditionQuery gesucht.

  • Ist die Haupt-Anfrage auf einer anderen Ebene als die aktuelle AdditionalQuery (z.B. die Haupt-Anfrage bezieht sich auf einen Dokumenttyp und die aktuelle AdditionalQuery auf einen Registertyp desselben Schrankes oder den Schrank selber) so werden von der AdditionalQuery nur die Bedingungen beachtet. Die Bedingungen werden sowohl der Haupt-Anfrage als auch allen AdditionalQueries derselben Ebene wie die Haupt-Anfrage hinzugefügt.

Durch die Ebenenbetrachtung können kombinierte Anfragen formuliert werden, die mehrere Dokumenttypen eines Schrankes unter Bedingung von Register- oder Ordnereinschränkungen beinhalten oder Registertypen eines Schrankes unter Bedingung von Dokument- und/oder Ordnereinschränkungen. Für die Formulierung muss bloß bekannt sein, auf welcher der drei Ebenen die Haupt-Anfrage agiert.

Result_Config:

Die Ergebnisliste kann mit dem "result_config" Parameter konfiguriert werden. Folgende Werte sind möglich: Integer

Parameter

Typ

Beschreibung

Default

Parameter

Typ

Beschreibung

Default

pagesize

Integer

Anzahl von Treffern - siehe gleichnamiger URI-Parameter. Dieser Parameter wird gegenüber dem aus der URI priorisiert.

null

offset

Integer

Paging offset - siehe gleichnamiger URI-Parameter. Dieser Parameter wird gegenüber dem aus der URI priorisiert.

0

maxhits

Integer

maximale Anzahl von Treffern - siehe gleichnamiger URI-Parameter. Dieser Parameter wird gegenüber dem aus der URI priorisiert.

500

deny_empty

Boolean

Wenn true werden Feldwerte die null sind in der Ergebnisliste NICHT angezeigt.

false

normalize_values

Boolean

Wenn true werden Date, Time und DateTime Felder in timestamps (mit Millisekunden) umgewandelt, sonst wird das jeweilige Server-Format ausgegeben.

false

fieldsschema

Object

Legt die Reihenfolge der Treffer und welche Felder zurückgegeben werden sollen fest.

null

distinct

Boolean

Das Ergebnis beinhaltet nur das erste fieldschema-Objekt und von diesem auch nur alle unterschiedlichen Werte. Die unterschiedlichen Werte werden zudem eingegrenzt unter Einbeziehung der angegeben fields als condition.

false

fieldsschema_mode

[MIN, DEF, ALL]

Legt fest in welchem Modus die Felder des angefragten Objektes zurückgegeben werden. MIN= nur Basisparameter | DEF= die im fieldschema-Objekt definierten Felder | ALL= alle Felder

ALL

childschema_mode

[REG, DOC, DEF, ALL]

Legt fest in welchem Modus die Kindobjekte des angefragt Objektes zurückgegeben werden:

  • REG = nur Registertypen und die in "children"-Objekt konfigurierte Objekttypen

  • DOC = nur Dokumenttypen und die in "children"-Objekt konfigurierte Objekttypen

  • DEF = nur die im "children"-Objekt definierten Objekttypen

  • ALL = alle Kinder

ALL

childfieldsschema_mode

[MIN, DEF, ALL]

Legt fest in welchem Modus die Felder der Kindobjekte zurückgegeben werden. MIN= nur Basisparameter der Kinder | DEF= die im children-Objekt definierten Felder eines Objekttypen | ALL= alle Felder der Kinder

MIN

export_depth

Integer

Legt die Anzahl von anzufragenden Ebenen unterhalb des Hauptobjektes fest. ACHTUNG! Ergebnismenge kann sehr groß werden.

0

systemFields

Integer

Wird die Konfiguration mit 0 übergeben, so werden die Systemfelder, die den Objektstatus darstellen, im Ergebnis nicht mit ausgeliefert.

1

registerContext

Integer

Wird die Konfiguration mit 0 übermittelt, so werden bei Angabe einer Registerklausel in der Anfrage keine Dokumente im übergeordneten Ordner mit ausgeliefert. Der Standardwert ist 1. Hierbei werden die übergeordneten Ordnerdokumente ebenfalls mit in der Trefferliste ausgegeben. Ab Version 1.5.81.

1

disableSearchGroups

Integer

Wird die Konfiguration mit 1 übermittelt, so werden Suchgruppen ignoriert. Ab Version 1.5.81.

0

followDocLink

Integer

Wird die Konfiguration mit 1 übermittelt, so werden grüne Pfeilverweise automatisch aufgelöst. Die Einstellung wird nur dann beachtet, wenn ebenfalls fileProperties mit 1 übermittelt wird. Ab Version 1.5.81.

0

garbageMode

Integer

Wird die Konfiguration mit 1 übermittelt, so werden ausschließlich Objekte aus dem Papierkorb zurück geliefert. Ab Version 1.5.81.

0

fileProperties

Integer

Wird die Konfiguration mit 1 übermittelt, so werden Dateigröße in Bytes, Dateiendung und Mime Type der Dokumentendateien der Objekte ermittelt und zurückgegeben. Ab Version 1.5.81.

1

rights

Integer

Wird die Konfiguration mit 1 übermittelt, so werden die Zugriffsrechte für jedes Objekt im Ergebnis ermittelt.

0

objectInserts

Integer

Wird die Konfiguration mit 1 übermittelt, so werden bei Register- und Ordnertypen die einfügbaren Kind-Objekttypen zurückgegeben.

0

baseParameters

Integer

Wird die Konfiguration mit 0 übermittelt, so werden keine Basisparameter zurückgegeben. Dies erhöht die Performance. Default ist 1 und es werden Basisparameter geladen und mit zurückgegeben.

1

outputCatalogueLocale

String

Optionale Angabe der Ausgabesprache für die Suche in mehrsprachigen Katalogen ab enaio 11.0. Bei z.B. fr_FR wird der im Katalog hinterlegte französische Wert zurückgegeben unabhängig davon, in welcher Sprache gesucht wird.

 

parents

Object

Optionale Angabe von anzufragenden Elternfeldern.

 

 Fieldschema:

Parameter

Typ

Beschreibung

Default

Parameter

Typ

Beschreibung

Default

internalName

String

Identifier des Feldes

null

displayName

String

Identifier des Feldes

null

objectTypeId

String

Identifier des Feldes

null

dbName

String

Identifier des Feldes

null

sort_order

\[ASC, DESC\]

Reihenfolge aufsteigend oder absteigend

ASC

sort_pos

Integer

Position in der Sortierreihenfolge (größer 0)

null

Beispiel Ergebniskonfiguration

{ "query": { "cabinet": "Kunde", "name": "Kunde", "result_config": { "fieldsschema": [ { "dbName": "id", "sort_pos": 1, "sort_order": "DESC" } ], "pagesize": 100, "offset": 100, "maxhits": 500, "deny_empty": true, "normalize_values": false } } }

Die Basisparameter können zudem negiert werden, indem der Schlüssel negate auf true gesetzt wird. Die Basisparameter finden sie etwas weiter unten in der dargestellten Tabelle. Bei allen numerischen, Datum-, Zeit- und Datum/Zeit-Werten kann nach Bereichen angefragt werden. Die nachfolgende Tabelle listet alle Operatoren auf. Operatoren sind nicht anwendbar für Werte in Tabellencontrols.

Operator

Erklärung

Operator

Erklärung

>Value

Alle Werte, die größer als Value sind.

>=Value

Alle Werte, die größer/gleich Value sind.

!=Value

Alle Werte, die ungleich Value sind.

<Value

Alle Werte, die kleiner als Value sind.

<=Value

Alle Werte, die kleiner/gleich Value sind.

Value1-Value2