Die BMD Archiv-SOAP-Schnittstelle bietet die Möglichkeit externe Archivlösungen programmtechnisch mit dem BMDNTCS-System zu verknüpfen. Ziel dabei ist es, dass Dokumente, welche über das BMDNTCS-DMS erfasst werden, physisch nicht im Dateisystem abgelegt, sondern über eine Archivlösung eines Drittanbieters verwaltet werden.
Um die Unabhängigkeit der Systeme zu gewährleisten, erfolgt die Kommunikation über ein Registrierungs- und Benachrichtigungssystem. Eine Anwendung, welche die BMD Archivschnittstelle benutzen will muss daher zwei Kommunikationskanäle unterstützen. Zum einen muss eine solche Anwendung einen TCP-Port zur Verfügung stellen, über welchen das BMD Archiv Benachrichtigungen im XML-Format an die Anwendung senden kann. Auf diese Benachrichtigungen muss dann über einen zweiten Kanal, die SOAP-Kommunikation, reagiert werden. Erfolgt keine Reaktion auf eine Benachrichtigung wird die zugehörige Operation nach einer bestimmten Timeout-Zeit abgebrochen.
Um von der BMD Archivschnittstelle Benachrichtigungen zu erhalten, muss sich eine Anwendung in einem einmaligen Initialisierungsschritt beim BMD Archiv registrieren. Die Registrierung erfolgt über die SOAP-Methode RegisterArchive und muss die folgenden Daten umfassen:
|
SystemID |
eine im BMDNTCS-System hinterlegte Zeichensequenz zur Identifizierung der externen Anwendung |
|
Notification-Server |
Servername/IP-Adresse des Servers, auf dem die externe Anwendung den TCP-Port zur Benachrichtigung bereit hält |
|
Notification-Port |
Port-Nummer des TCP-Ports zum Empfang der Benachrichtigungen |
Eine Benachrichtigung erfolgt immer dann, wenn ein BMDNTCS-Client im BMD Archiv eine Dokument-Aktion initiiert, bei welcher das physische Dokument jedoch im externen Archiv abgelegt ist. Die Bearbeitung einer Benachrichtigung sollte immer so rasch als möglich durchgeführt werden, da es Aktionen gibt, welche für den BMDNTCS-Client synchron ausgeführt werden, d.h. der Client wartet auf das Ergebnis. Synchrone Aktionen sind alle Anforderungsaktionen (OPEN/GET). Die Ablageaktionen (NEW/UPDATE/DELETE) werden aus Sicht des BMDNTCS-Clients asynchron ausgeführt, d.h. der Client wartet nicht auf das Ergebnis, dieses wird bereits vom Archivservice verarbeitet.
Die Benachrichtigung erfolgt über eine TCP-Nachricht auf den von der Anwendung definierten TCP-Port. Die TCP-Nachricht besteht aus einer Zeichenkette im XML-Format. Abgeschlossen wird die Nachricht durch die EOL-Sequenz CR+LF = Chr(13)+Chr(10).
<BMDArchiveNotification>
<Version>1.0</Version>
<OpID>eakpacmxouufviq</OpID>
</BMDArchiveNotification>
Gibt die Version des Benachrichtigungs-Formats an. Diese wird für eventuelle zukünftige Erweiterungen im XML-Format benötigt.
Identifikation der laufenden Operation im BMD Archiv. Mit dieser ID muss in weiterer Folge über die SOAP-Methoden ArchiveGetOperation und ArchiveOperationResult die gewünschte Aktion von der BMD Archivschnittstelle abgefragt und zurückgeliefert werden.
Auf eine Benachrichtigung muss in folgender Weise reagiert werden:
Connect (=ArchiveConnect)
Operationsdaten abfragen (=ArchiveGetOperation)
Operationsergebnis zurückliefern (=ArchiveOperationResult)
Disconnect (=ArchiveDisconnect)
Werden im externen Archiv neue Dokumente angelegt, Dokumente verändert oder gelöscht und soll diese Änderung dem BMD Archiv mitgeteilt werden, so kann dies über die Funktion ArchiveDocumentAction erfolgen, indem dort die Metadaten des neuen/geänderten/gelöschten Dokuments an die BMD Archivschnittstelle übergeben werden. Dieser Vorgang ist unabhängig von der Benachrichtigung durch die BMD Archivschnittstelle und kann jederzeit erfolgen.
Connect (= ArchiveConnect)
Metadaten übermitteln (= ArchiveDocumentAction)
Disconnect (= ArchiveDisconnect)
Die BMD Archivschnittstelle wird über die BMD Komponente BMDNTCSSOAPService bereitgestellt. Für die externe Anwendung ist dies die einzige BMD-Komponente, mit der eine Interaktion erfolgt.
Registriert die Anwendung beim BMDNTCS-System als externe Archivanwendung. Diese Aktion muss einmalig durchgeführt werden, bzw. dann, wenn sich eine dieser Eigenschaften ändert.
Request (TBMDRegisterArchiveRequest):
SystemID: String
NotificationServer: String
NotificationPort: Integer
Response (TBMDRegisterArchiveResponse):
Status: TBMDSOAPStatus
Beginnt eine Session in der BMD Archivschnittstelle. Eine Session wird über eine Session-ID identifiziert. Diese Session-ID muss bei jedem folgenden Aufruf als SOAPHeader mitgesendet werden. Eine Session wird nach einer Timeoutzeit aufgelöst, wenn kein weiterer Zugriff darauf erfolgt. Die Standard-Timeoutzeit ist 10 Minuten.
Request (TBMDArchivConnectRequest):
SystemID: String
Response (TBMDArchivConnectResponse):
Status: TBMDSOAPStatus
SessionID: String
Beendet die Session in der BMD Archivschnittstelle.
Request (TBMDArchiveDisconnectRequest):
SessionID: String als TBMDSOAPSession im SOAP-Header
Response (TBMDArchiveDisconnectResponse):
Status: TBMDSOAPStatus
Fordert für eine bestimmte Operation Metadaten und Dokument an.
Request (TBMDArchiveGetOperationRequest):
SessionID: String als TBMDSOAPSession im SOAP-Header
OperationID: String
Response (TBMDArchiveGetOperationResponse):
MetaData: base64Binary
Dokument: base64Binary (optional)
Liefert das Ergebnis einer Operation an die BMD Archivschnittstelle zurück.
Request (TBMDArchiveOperationResultRequest):
SessionID: String als TBMDSOAPSession im SOAP-Header
OperationID: String
Dokument: base64Binary (optional)
OperationResult: TBMDOperationResult
OperationError: String
Response (TBMDArchiveOperationResultResponse):
Status: TBMDSOAPStatus
Dient zur Übermittlung von Metadaten über ein im externen Archiv verändertes/neues/gelöschtes Dokument.
Request (TBMDArchiveDocumentActionRequest):
SessionID: String als TBMDSOAPSession im SOAP-Header
MetaData: base64Binary
Response (TBMDArchiveDocumentActionResponse):
Status: TBMDSOAPStatus
Jeder Response, der von der BMD Archivschnittstelle zurückgegeben wird, enthält ein SOAPStatus-Objekt. Dieses spezifiziert durch einen Code und eine Beschreibung Fehler, die durch die Bearbeitung des Requests aufgetreten sind. Der Fehlercode 0 steht für eine erfolgreiche Verarbeitung.
TBMDSOAPStatus = class {
Code: Integer
Description: String
}
TBMDSOAPSession = class {
Value: String
}
TBMDOperationResult = {osOk, osFailed}
| osOk |
Die Bearbeitung der Operation konnte erfolgreich durchgeführt werden. |
|
osFailed |
Beim Bearbeiten der Operation ist ein Fehler aufgetreten. |
|
0 |
Erfolgreiche Aktion (Kein Fehler) |
|
9000 |
Undefinierter BMD Archiv-Svc-Fehler |
|
9001 |
Abfrage mit leerer OperationID |
|
9002 |
Operation konnte nicht ermittelt werden |
|
9010 |
Ausnahmefehler beim Registrieren |
|
9011 |
SystemID nicht gültig |
|
9012 |
Fehler beim Erneuern der Registrierungsdaten |
|
9013 |
Session konnte nicht erzeugt werden |
|
9020 |
Ausnahmefehler beim Connect |
|
9021 |
Keine gültige Registrierung für diese SystemID |
|
9022 |
Session konnte nicht erzeugt werden |
|
9023 |
Existierende Session gefunden |
|
9024 |
Fehler beim Erzeugen einer Session |
|
9030 |
Ausnahmefehler beim Disconnect |
|
9040 |
Ausnahmefehler beim GetOperation |
|
9050 |
Ausnahmefehler beim OperationResult |
|
9060 |
Ausnahmefehler beim DocumentAction |
|
9061 |
Keine Metadaten-Informationen |
|
9062 |
Metadaten-Datei nicht gefunden |
|
9063 |
Funktion DOKUMENTXMLTRANSFER-IMPORT nicht gefunden |
|
9064 |
DOKUMENTXMLTRANSFER-IMPORT liefert FALSE als Ergebnis |