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 | 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).
|
Positivfall "Dokument erfolgreich an DMS übergeben" | Umsetzung im konkreten DMS-Modul | Nicht im DMS-BASIS Adapter enthalten. Mögliches DMS-spezifisches Vorgehen:
|
Fehlerfall "Übertragung an DMS nicht erfolgreich) | Umsetzung im konkreten DMS-Modul | Nicht im DMS-BASIS Adapter enthalten. Mögliches DMS-spezifisches Vorgehen:
|
Ü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
JS
Die Standardimplementierung erzeugt einen Document-Datensatz über die Hilfsmethode
JS
FehlerbehandlungTritt 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
Die Standardimplementierung prüft den Statuscode im Obekt "payloadResponse" :
|
Öffnen eines archivierten Dokuments aus EVI heraus
Beim Versuch ein archiviertes Dokument zu öffnen, wird implizit (C0) die Maskenskriptmethode "openArchiveDocument" aufgerufen.
openArchiveDocument()
{
if(! ScriptUtils.isEmpty(<systemId>)
{
// Siehe Dispatcher-Mechanismus
ScriptUtils.callScriptClass("SC[12]<systemId in Uppercase>Utils", "openDocument", MaskUtils.getCurrentEntry());
}
}
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.