Skip to main content
Skip table of contents

DMS-Basis (Admin)

Voraussetzungen für die Verwendung des Moduls

  • Die Lizenz EVI-Basis muss aktiv sein, denn die Funktionalitäten DMS-Basis sind Teil des EVI-Basis Moduls.

  • Die hier bereitgestellten Funktionalitäten umfassen keine vollständige Schnittstelle zu einem DMS (Dokumentenmanagementsystem). Sie stellen einen DMS-Adapter dar, an den DMS-spezifische Module angebunden werden können.

  • Für folgende Funktionen werden einheitliche Verfahren bereitgestellt:

    • Dokument aus EVI ins DMS übertragen

    • Dokument aus dem DMS nach EVI übertragen

    • Archivertes Dokument aus EVI heraus öffnen

Update

  • Es ist zu prüfen, ob das Maskenskript der Entität "Dokumente" angepasst werden muss, da hier Logik mit dem Modul EVI-Basis ausgeliefert wird.

Technische Dokumentation

Komponentenübersicht

Prozesse

  • C12DMS_DELETE_DOCUMENT

  • C12DMS_TRANSFER_EVI2DMS

Beim Einspielen des Moduls werden die Prozesse automatisch veröffentlicht, dennoch ist eine Prüfung des Veröffentlichungsstatus empfehlenswert. Entsprechende Hinweise werden auch beim Import des Moduls ausgegeben.

Skriptbibliothek

  • SC0InterfaceUtils

  • SC12EVIBaseUtils

  • SC12DMSBaseUtils

Übersteuerungsmöglichkeiten

Die Klasse SC12DMSBaseUtils ist nicht zum Übersteuern vorgesehen. 

Interner Ablauf

Schreibschutz der Felder in Abhängigkeit des DMS-Status

Im Maskenskript des Dokumentes (Modul C12EVI_BASIS) wurde eine Methode lockStatus aufgenommen. Diese prüft, ob das Feld C12DMSStatus gefüllt ist (FieldUtils.isEmpty()) und setzt in diesem Fall einen Schreibschutz auf alle Felder. Hierbei wird der Leerschlüssel als "Feld nicht gefüllt" angesehen. Die Methode "lockDMSStatus" wird in der globalen Methode "entryLoaded" aufgerufen, wenn der Datensatz nicht mit einem BPM-Prozess verknüpft ist. Dadurch wird ermöglicht, den Datensatz in einer CRM-Detailmaske innerhalb eines Prozesses zu laden und zu bearbeiten.

Übertragung EVI-Dokument an DMS

Der BPM-Prozess "C12DMS_TRANSFER_EVI2DMS" startet automatisch nach dem Speichern eines Dokumentes. Im Startereignis wird über die Methode "isReadyForTransfer" geprüft, ob das Dokument bereit für die Übertragung ist (C12DMSStatus ist gleich "BEREIT ZUR ÜBERTRAGUNG"). Im folgenden Skripttask wird die Methode "transfer2DMS" aufgerufen. Diese Methode startet das Logging für die DMS-Schnittstelle "DOCUMENT_TRANSFER_DMS" und setzt den Status des Dokumentes auf C12DMSStatus = "IN ÜBERTRAGUNG". Anschließend wird ein C12Event "DOCUMENT_TRANSFER_DMS" angelegt und das Logging beendet. Das erzeugte Event ist der Einstiegspunkt für DMS-spezifische Logiken. Details zum Event können der Dokumentation unter "Events (Admin)" entnommen werden.

Übertragung DMS-Dokument an EVI

Hierfür wurde eine Methode import in der Klasse SC12CURSORUtils implementiert. Diese wird z.B. durch den Zeitereignis-Webservice über die Event-ID "de.cursor.dmsImport" aufgerufen.

Pflichtfelder

Diese Methode prüft zunächst die Pflichtfelder, die in der Eingabe payloadRequest vorhanden sein müssen:

  • DMS-ID

  • subject

  • filename

  • createDate (ISO8601 Format)

  • systemid

Sind eines oder mehrere Pflichtfelder nicht gesetzt, wird dies über eine internationalisierte Meldung sowohl in da Logging als auch in die Antwort des Zeitereignis-Webservices (Feld "errormessage") geschrieben. Die Methode wird über eine Exception mit derselben Meldung beendet.

Datumsformat

Das Datum im Feld "createDate" muss im ISO-Format geliefert werden (ISO8601). Es wird versucht, den Datums-String in ein Date-Objekt umzuwandeln. Sollte das nicht möglich sein, wird der Fehler in der Webservice-Antwort und im Logging internationalisiert ausgewiesen. Die Methode wird über eine Exception mit derselben Meldung beendet.

Dokumenten-Container anlegen

Mit den vom Webservice eingereichten Daten wird die Methode SC12DMSBaseUtils.createDocument aufgerufen. Diese Methode legt einen IContainer "Document" an und speichert diesen persistent ab. Dabei werden folgende Felder standardmäßig befüllt:

  • Subject.Document

  • DocumentName.Document

  • FileSystemCreation.Document

  • C12DMSID.Document

  • C12DMSSystemID.Document

  • DocOptionKey.Document = Extern-MS

  • DocTypeKey.Document = File

Der angelegte Container dient als Rückgabewert und wird in der aufrufenden Methode geprüft. Ist der Primärschlüssel des Container = null, trat ein Fehler bei der Verarbeitung auf. Dieser Fehler wird über das o.g. Verfahren an Aufrufer und Logging gemeldet.

DMS-spezifische Folgelogiken

Werden im Webservice-Aufruf die Felder in der Struktur "additionalFields" sowie die "dmsid" gesetzt, werden entsprechende Folgelogiken aufgerufen. Es wird fest die Methode "import" einer wie folgt zusammengesetzten Klasse aufgerufen, sofern sie existiert:

SC12 + DMSID in Uppercase + Utils

Dieser Methode werden der erstellte Container, die Eingabedaten im Webservice und die logMap übergeben.

Öffnen eines archivierten Dokuments aus EVI heraus

Im Maskenskript des Dokumentes (Modul: C12EVI_BASIS) wurde die Methode "openArchiveDocument" implementiert. Diese prüft, ob das geöffnete Dokument eine DMS-ID besitzt (C12DMSID ist nicht leer). Anschließend wird der Wert aus C12DMSSystemID ausgelesen und wie folgt zu einem Klassennamen zusammengesetzt: "SC12" + C12DMSSystemID + "Utils". Hiermit wird nun geprüft, ob es eine Methode "openDocument" in dieser Klasse gibt. Falls ja, wird sie aufgerufen und das aktuelle Dokument als IContainer übergeben. Existiert die Methode nicht, wird nichts ausgeführt. Kann das Dokument nicht geöffnet werden, weil keine DMS-ID, keine SystemID oder aufzurufende Methode vorhanden ist, wird eine Meldung (Sprachvariable C12DMSOpenDocumentError) angezeigt.

Schreibschutz des Dokuments

  • Bei jedem Wert DMS-Status <> Leerschlüssel sind alle Felder auf der Maske schreibgeschützt.
    Hintergrund: Ein für die Übertragung markiertes Dokument darf nicht mehr geändert werden.

  • Die Felder C12DMSID.Document, C12DMSSystemID.Document und C12RevSecure.Document sind immer schreibgeschützt.
    Hintergrund: Diese Felder werden durch Prozesse gefüllt und sollten nicht vom Anwender geändert werden.

Übertragung EVI-Dokument an DMS

Was

Modul

Beschreibung

Im Dokumentdatensatz wird der Status "BEREIT ZUR ÜBERTRAGUNG" gesetzt

EVI-Basis

Als Auslöser für die Übertragung des Dokuments EVI → DMS muss der Status auf "BEREIT ZUR ÜBERTRAGUNG" gesetzt werden.

Erzeugung C12EVENT

EVI-Basis

Ein BPM-Prozess (after-Document-Save) erzeugt ein C12EVENT "DOCUMENT_TRANSFER_DMS" mit dem Verweis auf den Document-Datensatz.

Übertragung des Dokuments an das DMS

Umsetzung im konkreten DMS-Modul

(Info) Nicht im DMS-BASIS Adapter enthalten. Mögliches DMS-spezifisches Vorgehen:

Die konkrete DMS-Implementierung reagiert auf das Event "DOCUMENT_TRANSFER_DMS" und überträgt das Dokument an das DMS. Die Art und Weise der Übertragung ist für EVI (Basis) transparent (black box).

    1. Der Status (C12DMSSTATUS.DOCUMENT) wird auf "IN ÜBERTRAGUNG" gesetzt.

    2. Das Dokument wird an das DMS übertragen. Die verwendete Technik (XML, Webservice, DB etc.) ist für EVI transparent. 
      Dies erfolgt idealerweise asynchron, damit der Anwender nicht blockiert wird.

    3. Die Übertragung selbst wird in einem Schnittstellendetail-Datensatz dokumentiert.

Positivfall "Dokument erfolgreich an DMS übergeben"

Umsetzung im konkreten DMS-Modul

(Info) Nicht im DMS-BASIS Adapter enthalten. Mögliches DMS-spezifisches Vorgehen:

  1. Status (C12DMSSTATUS.DOCUMENT) auf "ÜBERTRAGEN".

  2. Art (DocumentOptionKey.Document) auf den passenden "EXTERN-MS" Schlüssel setzen.

  3. DMS-ID in EVI gespeichert.

  4. System-ID wird gesetzt.

  5. Dokumentation im Schnittstellendetail-Datensatz (technisch) und C12EVENTRESULT (Fachlich)

Fehlerfall "Übertragung an DMS nicht erfolgreich)

Umsetzung im konkreten DMS-Modul

(Info) Nicht im DMS-BASIS Adapter enthalten. Mögliches DMS-spezifisches Vorgehen:

  1. Status (C12DMSSTATUS.DOCUMENT) auf "ÜBERTRAGUNG FEHLERHAFT" 

  2. Fachliche Dokumentation des Fehlers in C12EVENTRESULT

  3. Technische Dokumentation des Fehler in Schnittstellendetail-Datensatz

Übertragung DMS-Dokument an EVI

Was

Modul

Beschreibung

Übertragung eines Dokuments aus dem DMS nach EVI

EVIBASIS

ELO-MODUL

EASY-MODUL

...


Generisches CURSOR-Event für Standardimport

  • ID des Zeitereignisservice: de.cursor.dmsImport

  • Abgeleitete Standardskriptklasse: SC12CURSORUtils.dmsImport

JS
"payload" : 
{
	"subject" : "Angebot Stromlieferung 2021", // Betreff des Dokuments 
	"DMS-ID" : "47110815", 	// Id des Dokuments im externen DMS
	"filename" : "AngebotStromlieferung2020.pdf", // Dateiname
	"createDate" : "2014-10-08T07:00:00", // Erstellungsdatum des Dokuments (ISO-8601, weitere Beispiele: 2014-10-08T07:00:00Z, 2014-10-08T07:00:00.000+01:00)
	"systemid" : "elo",	// Root-Domain des DMS, wird für den Dispatcheraufruf verwendet
	"additionalFields" :
	{
 		...,							// weitere DMS-spezfische Informationen
	}
}
  1. Auslesen der benötigten Standardwerte aus der JSON-Struktur.

    1. Wenn unvollständig: Abbruch mit ERROR und Fehlermeldung

  2. Anlage des Document-Datensatzes über die nachfolgend beschriebene Hilfsmethode.

  3. Prüfung auf systemId, wenn vorhanden Dispatcher aufrufen mit dem festen Methodennamen "import".
    Beispiel: systemId = elo → Aufruf der Klasse SC[12]ELOUtils.import" mit der kompletten Payload

    Im Feld "SystemId" wird nur der Teil nach dem letzten "." gespeichert (elo → elo)

  4. Rückgabewert ("payloadResponse") interpretieren und entsprechendes C12EVENT feuern.

  5. Neuanlage InterfaceDetail-Datensatz (nterfaceOver-Datensatz wird bei Bedarf automatisch angelegt)

Die Standardimplementierung erzeugt einen Document-Datensatz über die Hilfsmethode

JS
IContainer SC12EVIBaseUtils.createDMSDocument(String subject, String dmsID, String filenname, Date creationDate, String systemId)
Fehlerbehandlung

Tritt während der Verarbeitung ein Fehler auf, wird die LogMap gefüllt und per SC0InterfaceUtils in die InterfaceDetail geschrieben. Um als Antwort des Zeitereignis den Status ERROR zu senden, muss nun eine Exception geworfen werden. Das hat den Nebeneffekt, dass die Transaktion zurückgerollt wird und somit keine Persistierung des Dokumentes stattfindet. Man muss sich also nicht um das Löschen explizit kümmern.

Feste Werte

  • Typ (DocumentType.Document) fest auf "AD" (Anwendungsdatei) eintragen

  • Art (DocumentOptionKey.Document) fest auf EXTERN-MS (Pk) setzen

Die Standardimplementierung prüft den Statuscode im Obekt "payloadResponse" :

  • DONE: Feuern des Events "DMS_DOCUMENT_IMPORTED" mit Verweis auf das angelegte Dokument

  • ERROR: Feuern des Events "DMS_DOCUMENT_IMPORT_ERROR" mit Verweis auf den Schnittstellendatensatz (InterfaceDetail)

Öffnen eines archivierten Dokuments aus EVI heraus

Beim Versuch ein archiviertes Dokument zu öffnen, wird implizit (C0) die Maskenskriptmethode "openArchiveDocument" aufgerufen.

JS
openArchiveDocument()
{
	if(! ScriptUtils.isEmpty(<systemId>)
	{
		// Siehe Dispatcher-Mechanismus
		ScriptUtils.callScriptClass("SC[12]<systemId in Uppercase>Utils", "openDocument", MaskUtils.getCurrentEntry());
	}
}

(Info) Die Standard-Implementierung (C12) prüft lediglich, ob eine spezifische Implementierung existiert. Ist dies nicht der Fall, erfolgt keinerlei weitere Verarbeitung, d. h. der Klick auf den Öffnen Button hat für den Anwender keinen Effekt.

Der Aufruf erfolgt über ScriptUtils.callScriptClass da das EVI-Basis Modul die einzelnen DMS-Module nicht "kennt" und daher kein direkter Aufruf möglich ist. Dies impliziert, dass alle CURSOR-DMS Modulmplementierungen genau diese Methode beinhalten müssen.

Kann das Dokument nicht geöffnet werden, weil keine DMS-ID, keine SystemID oder aufzurufende Methode vorhanden ist, wird eine Meldung angezeigt.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.