Overview

AtomPub Binding
KomXwork Backend https://partner.digitalfabrix.de/komxwork_balvi

Connected

Required: 24.2.872.0

Current:

KomX Identity Endpoint https://partner.digitalfabrix.de/komxwork_balvi/identity

3.0.1 (2025-08-05)

Feature: Unfiled/Inbox-Dokumente

  • Was ist neu: Unfiled-Dokumente (Postkorb) aus komXwork stehen als CMIS-Dokumente zur Verfügung.
  • Basistyp: komx:inboxFile (Parent komx:documentBase, cmis:document, nicht versionierbar, Content erlaubt).
  • Dynamische Spezial-Typen: Für jeden konfigurierten Schlüssel entsteht ein CMIS-Typ komx:inboxFile<KEY> mit den dazugehörigen Metadatenfeldern.
  • Properties:
    • Automatisch: komx:inboxId (Integer) wird serverseitig anhand des Typs gesetzt (konfigurierter Inbox-Key), kann optional überschrieben werden.
    • Inbox-Metadaten: dynamische Felder mit Präfix ext:<key> (z. B. ext:ProbenDatum), Herkunft: KomXwork JSON-Startparameter.

Breaking Changes

  • Typ-Namen auf lowerCamelCase umgestellt (IDs, Query-Namen, Objekt-ID-Präfixe):
    • komx:Document → komx:document
    • komx:Folder → komx:folder
    • komx:FileFolder → komx:fileFolder
    • komx:Project → komx:project
  • Detail Feld casing:
    • komx:Detail:Feld1 → komx:detail:Feld1
  • Objekt-IDs in Abfragen verwenden nun die neuen Präfixe, z. B. komx:folder-123 statt komx:Folder-123.
  • TIMESTAMP-Schlüsselwort in Beispielen entfernt: Zeitstempel werden als ISO-Strings in Quotes verwendet.

Neue Typen

  • komx:documentBase (Supertype von komx:document)
    • Properties: komx:storageId (integer, required), komx:signatureCount (integer), komx:uuid (string)
    • Versionierung: versionable = true
    • Query-Scope: includedInSupertypeQuery = false
  • komx:inboxFile (Dokument-Typ)
    • Query-Scope: includedInSupertypeQuery = false

Umbenannte Typen (Detail)

  • Dokument: Parent von cmis:document → komx:documentBase; ID/Query: komx:Document → komx:document
  • Folder/FileFolder/Project: ID/Query von PascalCase → lowerCamelCase (siehe Breaking Changes)

Anzeigenamen/Beschreibungen

  • komx:document: DisplayName/Beschreibung = "Dokument"
  • komx:fileFolder: DisplayName/Beschreibung = "Akte"
  • komx:folder: DisplayName/Beschreibung = "Bereich"
  • komx:project: DisplayName/Beschreibung = "Vorgang"

Property-Änderungen (Mapping)

  • komx:ArchiveUserId → komx:archiveUserId
  • komx:CategoryIds → komx:categoryIds
  • komx:CloseUserId → komx:closeUserId
  • komx:CollaborationResult → komx:collaborationResult
  • komx:DeleteUserId → komx:deleteUserId
  • komx:ExpiryYearOfRetentionPeriod → komx:expiryYearOfRetentionPeriod
  • komx:ForeignReferenceNumber → komx:foreignReferenceNumber
  • komx:IsFavorite → komx:isFavorite
  • komx:Keywords → komx:keywords
  • komx:KindOfSegregation → komx:kindOfSegregation
  • komx:OrganizationalUnit → komx:organizationalUnit
  • komx:ReferenceNumber → komx:referenceNumber
  • komx:RetentionPeriod → komx:retentionPeriod
  • komx:SerialNumber → komx:serialNumber
  • komx:SignatureCount → komx:signatureCount
  • komx:State → komx:state
  • komx:StorageId → komx:storageId
  • Neu: komx:uuid (string)

Query-Änderungen und Beispiele

  • Typnamen in FROM/IN_FOLDER/IN_TREE sind nun lowerCamelCase.
  • Objekt-IDs (z. B. für IN_FOLDER) entsprechen den neuen Präfixen.
  • Zeitvergleiche ohne TIMESTAMP, ISO-8601 in Quotes.
  • Einfluss auf Supertypen-Queries: includedInSupertypeQuery = false bei komx:documentBase und komx:inboxFile.

Beispiele:

SELECT * FROM komx:folder WHERE cmis:name = '1111' AND cmis:objectId = 'komx:folder-1635'

SELECT cmis:name, cmis:lastModificationDate FROM komx:document
  WHERE cmis:lastModificationDate >= '2022-01-18T13:31:44'
  ORDER BY cmis:lastModificationDate ASC

SELECT * FROM komx:document WHERE IN_FOLDER('komx:project-2347') AND cmis:name='abc.txt'

Dynamische Felder – Implementierungsdetails (Code)

  • ext:<key> (Inbox/Startparameter)
    • Laufzeit-Definition der Properties in TypeManagerImpl.addPropertiesToTypeDefinition(...) aus MetadataContainer.
    • Erstellung Inbox-Dokument (UnfiledDocumentImpl): PropertiesDto.key → ext:<key> (case-insensitive Lookup), Typkonversionen: Integer (Double→Integer), DateTime (yyyy-MM-dd'T'HH:mm:ss.SSS → UTC GregorianCalendar), Decimal (BigDecimal), String.
    • Ausgabe für REST (KomxService#getPropertiesForCustomType): Präfix-Entfernung via CmisTypes.removeExtPropertiesKey(...).
  • komx:detail:<key> (DB-Detailfelder)
    • Weiterhin im Einsatz für die übrigen CMIS-Typen; wird in der Suche/Filtern ausgewertet (KomxService#fillDetails).
    • Typ-spezifische Behandlung in der Query-Aufbereitung (String quotiert, Date/Decimal auch als Range möglich).