Dokumentenmanagement-System
- lk
Allgemeines
syslog.ERP bietet die Möglichkeit der direkten Anbindung an diverse Document Management Systeme (DMS). Dabei ist es möglich gedruckte Formulare direkt ins DMS zu archivieren und wieder anzeigen zu lassen. Verknüpfte Dokumente (DVS) können ebenfalls automatisch im DMS abgelegt und wieder abgerufen werden.
Unterstützte Systeme
System | Anbindung | System-Name |
---|---|---|
KnowledgeTree | angebunden über den integrierten Web-Service | ktdms |
EASY ENTERPRISE.i | angebunden über Henrichsen UDS | uds |
BvlArchivio | angebunden über die integrierte Schnittstelle (eingeschränkte Funktionalität) | bvl |
DMS-Lite | angebunden über die integrierte Schnittstelle (eingeschränkte Funktionalität) | lite |
Konfiguration
DMS-Proxy
Damit ein syslog.ERP Client die DMS-Integration nutzen kann, wird der DMS-Proxy benötigt. Er muß auf dem Client installiert sein. Wenn das MSI-Paket (DMS-Proxy.msi) im Verzeichnis %PRIMUSDIR%\admin
abgelegt und der syslog.ini-Parameter DMSPROXY_AUTOUPDATE auf 1 gesetzt wird (Vorlage für syslog.ini in syslogini.org), dann versucht syslog.ERP den DMS-Proxy auf den Clients automatisch zu installieren/updaten (entsprechende Berechtigungen des angemeldeten Benutzers vorausgesetzt).
Verbindung
In der Datei dmsini.org (im admin-Verzeichnis von syslog.ERP) werden sowohl die Information, die für den Verbindungsaufbau zum jeweiligen DMS (Server/Port bzw. Web-Service-URL, Art der Anmeldung, Optionen) nötig sind, als auch die Einstellungen für die Formular-Archivierung (Ordner, Dokument-Typen, Titel, Metadaten) abgelegt.
Allgemein
DMS_DEFAULT = "ktdms"
KnowledgeTree
Wichtige Parameter für KnowledgeTree sind DMS_SERVICEURL_ktdms (URL des Web-Services) und DMS_AUTH_ktdms (Art der Anmeldung; 0 = anonymous, 1 = mit syslog.ERP Anmeldeinformationen, 2 = mit fixen Benutzer/Password aus DMS_USER_ktdms + DMS_PASS_ktdms).
DMS_NAME_ktdms = "KnowledgeTree" DMS_SERVICEURL_ktdms = "http://192.168.168.222/knowledgetree/ktwebservice/index.php" DMS_AUTH_ktdms = 1
UDS (EASY ENTERPRISE.i / EASY ENTERPRISE.x)
Wichtige Parameter für UDS sind DMS_OPTS_uds (Optionen für die Erzeugung einer UDS-Session) und DMS_AUTH_uds (Art der Anmeldung; 0 = SYSTEM/SYSTEM, 1 = mit syslog.ERP Anmeldeinformationen, 2 = mit fixen Benutzer/Password aus DMS_USER_uds + DMS_PASS_uds).DMS_DOCUID_uds legt das Attribut fest, das für die eindeutige Identifizierung eines Dokuments verwendet werden soll (das Attribut muß lang genug für eine GUID sein). Dieses Attribut muß in jeder Association existieren.Die Parameter DMS_F-TITLE_uds und DMS_F-FILENAME_uds legen Attribute fest in denen der Titel und der Dateiname des Dokuments gespeichert werden sollen (da UDS dies so nicht selber macht). Wenn Dokumente über Titel oder Dateiname gesucht werden sollen, dann sind diese Attribute zwingend nötig. Wenn gefüllt müssen natürlich auch diese Attribute in allen verwendeten Associationen existieren.
DMS_NAME_uds = "Henrichsen UDS / EASY" DMS_AUTH_uds = 2 DMS_OPTS_uds = "SOLUTION_NAME=Syslog SOLUTION_VERSION=1 APPLICATION=syslog.ERP SERVER_HOST=DMS-SERVER-NAME SERVER_PORT=10203" DMS_DOCUID_uds = "UDS|GUID" DMS_F-TITLE_uds = "" DMS_F-FILENAME_uds = "" DMS_USER_uds = "syslog" DMS_PASS_uds = "password"
BvlArchivio
Wichtige Parameter für BvlArchivio sind DMS_OPTS_bvl (Optionen für die Anmeldung beim Archiv-System) und DMS_AUTH_bvl (Art der Anmeldung; 0 = SYSTEM/SYSTEM, 1 = mit syslog.ERP Anmeldeinformationen, 2 = mit fixen Benutzer/Password aus DMS_USER_bvl + DMS_PASS_bvl).DMS_DOCUID_bvl legt das Attribut fest, das für die eindeutige Identifizierung eines Dokuments verwendet werden soll. Die Parameter DMS_F-TITLE_bvl und DMS_F-FILENAME_bvl legen Attribute fest in denen der Titel und der Dateiname des Dokuments gespeichert werden sollen. Bei BvlArchivio sind alle diese Parameter unbedingt nötig, da es bei BvlArchivio keine anderen Möglichkeiten gibt, diese Informationen zu speichern oder abzurufen.
DMS_NAME_bvl = "BVL" DMS_AUTH_bvl = 2 DMS_OPTS_bvl = "SERVER_HOST=62.116.179.211 SERVER_PORT=80 SERVER_HOST_U=62.116.179.216 SERVER_PORT_U=21 USER_U=syslogi PASS_U=passwordi ARCHIVE=1" DMS_DOCUID_bvl = "BVL|GUID" DMS_F-TITLE_bvl = "BVL|TITLE" DMS_F-FILENAME_bvl = "BVL|FILENAME" DMS_USER_bvl = "syslog" DMS_PASS_bvl = "password"
DMS-Lite
Wichtige Parameter für DMS - Lite sind DMS_OPTS_lite (Optionen für die Anmeldung beim Archiv-System) und DMS_F-FINR_lite wenn die Ablage der Dokumente nach Mandant getrennt werden soll.
DMS_NAME_lite = "DMS-Lite" DMS_OPTS_lite = "DMS_BASEPATH=D:\syslog.ECM-Light\Archiv" DMS_F-FINR_lite = "Lite|Mandant"
DMS-LiteEx
Wie DMS-Lite, aber mit einer MySQL-Datenbank zur Metadaten-Speicherung anstatt einer SQLite-Datei.
DMS_NAME_lite2 = "DMSlite2 (ODBC)" DMS_AUTH_lite2 = 2 DMS_USER_lite2="lite2" DMS_PASS_lite2="lite2" #DMS_OPTS_lite2 = "DMS_BASEPATH=\\syslog-ecm-light\DMS_BASEPATH_lite2 DMS_DATABASE=DSN:ODBClite2" DMS_OPTS_lite2 = "DMS_BASEPATH=\\syslog-ecm-light\DMS_BASEPATH_lite2 DMS_DATABASE=MYSQL53,syslog-ecm-light,3306,dblite2" DMS_DOCUID_lite2 = "Lite2|GUID" DMS_F-TITLE_lite2 = "Lite2|Titel" DMS_F-FILENAME_lite2 = "Lite2|DateiName" #DMS_F-FINR_lite2 = "Lite2|Mandant"
EBIS
DMS_NAME_ebis = "EBIS / EASY" DMS_SERVICEURL_ebis = "http://192.168.168.164:9090/" DMS_AUTH_ebis = 2 DMS_USER_ebis="superadmin" DMS_PASS_ebis="super" DMS_OPTS_ebis = "SYSTEM_NAME=syslog1" DMS_DOCUID_ebis = "EBIS|GUID" DMS_F-TITLE_ebis = "EBIS|Titel" DMS_F-FILENAME_ebis = "EBIS|DateiName" #DMS_F-FINR_ebis = "EBIS|Mandant"
VK/EK-Formulare im DMS archivieren
Über den Dialog KDRPT10/KDRPT11 kann für jedes Formular gesteuert werden, ob und wohin es archiviert werden soll. In der Datei dms.ini (Vorlage dmsini.org) wird dann Ordner, Dokument-Typ, Titel und Metadaten für jedes Formular festgelegt (mit Hilfe von Feldern aus den Tabellen fvkabruf+fauftab bzw. fekabruf+fbektab oder durch ein LUA-Script).
KDRPT11
Im KDRPT11 kann über das Kennzeichen Archivierung gesteuert werden ob und wohin das Formular archiviert werden soll. Möglichkeiten sind gar nicht, die EASY ASCII-Schnittstelle (offline) oder KnowledgeTree und UDS (online via DMS-Proxy).
Parameter dmsini.org
In der Datei dms.ini (Vorlage dmsini.org) wird für jedes Formular ein Ziel-Ordner, Dokument-Typ, Titel und Metadaten-Felder für die Archivierung im DMS festgelegt.In den Parameters ORDNER, TYP, TITEL und den Metadaten-Feldern können sämtliche Felder der Tabellen fvkabruf/fauftab/gpktab (VK) oder fekabruf/fbektab/gpktab (EK) als Variablen verwendet werden (Format %TABELLE.FELD%
). Der Inhalt der Tabelle gpktab bezieht sich auf den angemeldeten Benutzer. Außerdem wird auch die Variable %Year%
durch das aktuelle Jahr ersetzt (um nach Jahren getrennte Ordner zu ermöglichen).
Beispiel Archivierung Auftragsbestätigungen in KnowledgeTree:
AB_ORDNER = "syslog.ERP/Formulare/%Year%/Vertrieb" AB_TYP = "syslog.ERP + Auftragsbestätigung" AB_TITEL = "Auftragsbestätigung %fauftab.archivnr% (%fauftab.auart% %fauftab.aufnr%) AB_META_1 = "General information|Document Author|%gpktab.vname% %gpktab.nname% (syslog.ERP)" AB_META_2 = "General information|Media Type|Text" AB_META_3 = "syslog.ERP + Info Formular|Formular-Nr.|%fauftab.archivnr%" AB_META_4 = "syslog.ERP + Info Formular|Formular-Art|%fauftab.formular%" AB_META_5 = "syslog.ERP + Info Kundenauftrag|Auftragsart|%fauftab.auart%" AB_META_6 = "syslog.ERP + Info Kundenauftrag|Auftrags-Nr.|%fauftab.aufnr%" AB_META_7 = "syslog.ERP + Info Kundenauftrag|Kunden-Nr.|%fauftab.konto%" AB_META_8 = "syslog.ERP + Info Kundenauftrag|Kunden-Name|%fauftab.adr1name1%" AB_SCRIPT = "d:\temp\ab_meta.lua"
Beispiel Archivierung Lieferscheine in EE.i (UDS):
LI_ORDNER = "Vertrieb" LI_TYP = "Vertrieb" LI_TITEL = "Lieferschein %fauftab.archivnr% (%fauftab.auart% %fauftab.aufnr%) LI_META_1 = "Vertrieb|Beleg|%fauftab.formular% LI_META_2 = "Vertrieb|Kd.-Nr|%fauftab.konto% LI_META_3 = "Vertrieb|Auftr.-Nr.|%fauftab.aufnr% LI_META_4 = "Vertrieb|Vers.Adr.-Nr.|%fauftab.unrlief% LI_META_5 = "Vertrieb|Datum|%fauftab.druckdat% LI_META_6 = "Vertrieb|Vorgangs-Nr|%fauftab.archivnr% LI_META_7 = "Vertrieb|Versand-Adresse|%fauftab.adr1name1%, %fauftab.adr1name2%, %fauftab.adr1name3%, %fauftab.adr1strasse%, %fauftab.adr1plz% %fauftab.adr1ort%
Ist der Parameter SCRIPT gesetzt (und mit einem Verweis auf ein LUA-Script gefüllt), dann wird dieses Script vor der Übergabe des Dokuments ans DMS ausgeführt. Das Script bekommt abhängig von der Herkunft des Aufrufs (Formulare oder DVS) unterschiedliche Informationen mitgegeben.
DVS
Variable | Inhalt |
---|---|
dms_param.aufruf | "DVS" |
dms_param.formular | Das Formular, das aus der dvs.ini verwendet wurde (oder blank, wenn die harten Defaults gezogen wurden) (z.B. DVS_M07 fuer Artikelstamm) |
dms_param.rufkz | DVS-Modus (z.B. 7 fuer Artikelstamm) |
artdoku | Table mit allen Feldern der Tabelle artdoku |
gpktab | Table mit allen Feldern der Tabelle gpktab (angemeldeter Benutzer) |
Formulare
Variable | Inhalt |
---|---|
dms_param.aufruf | "FORM" |
dms_param.formular | Das gedruckte Formular (z.B. AB) |
dms_param.lfdnr | Die laufende Nummer aus der fauftab |
dms_param.modus | Die Art des Formulars (1 = VK, 2 = EK) |
dms_param.kzarchiv | Art der Archivierung (2 = KTDMS, 3 = UDS, -1 = Default) |
fekabruf | Table mit allen Feldern der Tabelle fekabruf (bei VK-Formular leer) |
fbektab | Table mit allen Feldern der Tabelle fbektab (bei VK-Formular leer) |
fvkabruf | Table mit allen Feldern der Tabelle fvkabruf (bei EK-Formular leer) |
fauftab | Table mit allen Feldern der Tabelle fauftab (bei EK-Formular leer) |
gpktab | Table mit allen Feldern der Tabelle gpktab (angemeldeter Benutzer) |
Diese Variablen sind read-only und können vom LUA-Script aus nicht manipuliert werden.
Unabhängig von der Art des Aufrufs erhält das Script außerdem
Variable | Inhalt |
---|---|
dms_dest.system | Das DMS-System wohin das Dokument geschickt werden soll (ktdms, uds) |
dms_dest.folder | Ziel-Pfad innerhalb des DMS |
dms_dest.type | Dokument-Typ im DMS |
dms_dest.title | Titel des Dokuments im DMS |
dms_dest.filename | Dateiname des Dokuments im DMS |
Ein Array von dms_meta-Strukturen, mit den definierten Metadaten-Feldern:
Variable | Inhalt |
---|---|
dms_meta[idx].fieldset | Name Metadaten Fieldset |
dms_meta[idx].field | Name Metadaten Feld |
dms_meta[idx].value | Wert Metadaten Feld |
Diese Daten können beliebig manipuliert werden und werden nach Beendigung des Scripts zur weiteren Verarbeitung übernommen. Liefert das Script einen Rückgabe-Wert ungleich 0 zurück, dann wird die Übergabe mit einem Fehler abgebrochen.
Anmerkung UDS: Wenn UDS verwendet wird, dann wird muss sowohl der Dokument-Typ als auch der Ordner den Namen der Association beinhalten. Die Metadaten (Attribute) hängen bei UDS an der Association (das Konzept von verschiedenen Fieldsets gibt es nicht), d.h. der Name des Fieldsets in dem Metadaten wird bei UDS ignoriert und sollte ebenfalls auf den Namen der Association gesetzt werden.
DVS/DMS-Integration
Die Dokumente, die über DVS an Artikel, Aufträge, etc. verknüpft werden, können entweder im Datei-System residieren (klassische Art) oder in einem DMS gespeichert werden (wo sie kein Benutzer versehntlich löschen kann und sie außerdem noch mit Metadaten versehen werden können -- und revisionssicher sind).Wenn die DVS/DMS-Integration aktiviert ist, dann werden Dokumente beim Hinzufügen ins DVS an das konfigurierte DMS übertragen und es wird eine Referenz auf das DMS-Dokument im DVS gespeichert. Wenn der Benutzer eine DVS-Verknüpfung, die auf ein DMS-Dokument zeigt ändert, dann wird das Dokument im DMS aktualisiert.
Parameter dvsini.org
Die DVS/DMS-Integration wird mit dem Parameter DMS_INTEGRATION aktiviert (0 = deaktiviert, 1 = aktiviert). Der Parameter DVS_DMS_DEFAULT legt das DMS fest, indem die Dokumente abgelegt werden sollen.
DMS_INTEGRATION = 1 DVS_DMS_DEFAULT = "ktdms"
Für jede Art der Dokumenten-Verknüpfung (DVS-Modus) kann ein eigener Satz von Archivierungs-Informationen angelegt werden. Die Parameter sind diesselben wie in der Datei dms.ini.
Formular | Art der Dokumenten-Verknüpfung |
---|---|
DMS_M00 | Default (wenn keine Verknüpfung für den entsprechenden DVS-Modus angelegt ist) |
DMS_M01 | Einkauf Kopf |
DMS_M02 | Einkauf Position |
DMS_M03 | Vertrieb Kopf |
DMS_M04 | Vertrieb Position |
DMS_M05 | Betriebsmittel |
DMS_M06 | Fertigung |
DMS_M07 | Artikel |
DMS_M08 | Arbeitsplan |
DMS_M09 | Kunden/Lieferanten |
DMS_M10 | Kostenträger |
DMS_M11 | Werkzeug |
DMS_M12 | Personal |
DMS_M13 | Arbeitsplan Position |
DMS_M14 | Arbeitsgang |
DMS_M15 | Zeugnis |
DMS_M16 | Stücklisten Kopf |
DMS_M17 | Vertrieb Archiv Kopf |
DMS_M18 | Vertrieb Archiv Position |
DMS_M19 | Einkauf Archiv Kopf |
DMS_M20 | Einkauf Archiv Position |
DMS_M21 | Fertigung Archiv |
DMS_M22 | Workflow |
DMS_M23 | Prüfmittel |
DMS_M24 | Arbeitsanweisung |
DMS_M25 | Planungseinheit |
Beispiel Archivierung Auftrags-Dokumente in KnowledgeTree:
DMS_M03_ORDNER = "syslog.ERP/Dokumente/Auftraege" DMS_M03_TYP = "syslog.ERP + DVS-Dokument" DMS_M03_META_1 = "General information|Document Author|%gpktab.vname%Â %gpktab.nname% (syslog.ERP)" DMS_M03_META_2 = "syslog.ERP + Info Kundenauftrag|Auftragsart|%artdoku.auart%" DMS_M03_META_3 = "syslog.ERP + Info Kundenauftrag|Auftrags-Nr.|%artdoku.aufnr%" DMS_M03_SCRIPT = "d:\temp\m03_meta.lua" DMS_M04_ORDNER = "syslog.ERP/Dokumente/Auftraege" DMS_M04_TYP = "syslog.ERP + DVS-Dokument" DMS_M04_META_1 = "General information|Document Author|%gpktab.vname%Â %gpktab.nname% (syslog.ERP)" DMS_M04_META_2 = "syslog.ERP + Info Kundenauftrag|Auftragsart|%artdoku.auart%" DMS_M04_META_3 = "syslog.ERP + Info Kundenauftrag|Auftrags-Nr.|%artdoku.aufnr%" DMS_M04_SCRIPT = "d:\temp\m03_meta.lua"
Scan-Import mit Barcode-Etiketten
Durch die Verwendung von DVS- und DMS-Etiketten mit Barcodes ist eine automatischer Verknüpfung gescannter Dokumente an die entsprechenden Syslog-Vorgänge oder auch nur eine direkte Übertragung ins DMS möglich. Dies geschieht entweder manuell über den Dialog DVS30 oder vollautomatisch durch den Dienst "Scan-Import" welcher eines oder mehrere Verzeichnisse überwacht und auf neu gescannte Dokumente wartet.
DVS-Etiketten
In vielen Dialogen (AR10, AR11, EK11, VE11, RE11, LB11, ...) können mittels dem "DVS-Deckblatt/Etikett"-Button in der Toolbar Deckblätter bzw. Etiketten mit Barcodes gedruckt werden. Mittels dieser Barcodes ist eine automatischer Verknüpfung gescannter Dokumente an die entsprechenden Vorgänge möglich. Dies geschieht entwender manuell über den Dialog DVS30 oder vollautomatisch durch den Dienst "Scan-Import" (welcher eines oder mehrere Verzeichnisse überwacht und auf zu verarbeitende Dokumente wartet).
DMS-Etiketten
Im Dialog DMS50 können Etiketten gedruckt werden mit denen eine reine DMS-Verknüpfung von Dokumenten möglich ist. D.h. die ensprechenen Dokumente werden nicht via Syslog-DVS an einen Vorgang, Artikel o.ä. verknüpft sondern nur mit den vom Benutzer erfassten Daten ins DMS übertragen. In diesem Dialog werden bereits vor dem Scannen die Informationen über ein Dokument erfasst und ein entsprechendes Barcode-Etikett gedruckt. Nach dem Scannen wird das Dokument mit den vorerfassten Informationen an das DMS übertragen.
Import über DVS30
Über den Dialog DVS30 (kann über den Dialog DVS20 und den Button "Dokumente importieren" erreicht werden) können gescannte Dokumente "online" ins System importiert werden. Ist die Verknüpfung über den Barcode aus irgendwelchen Gründen nicht möglich, so kann hier auch eine manuelle Verknüpfung des Dokuments stattfinden.
Import über Scan-Import Dienst
Der vollautomatische Import von gescannten Dokumenten ist über den Scan-Import Dienst (%PRIMUSDIR%\stam1.0\bin\ScanImport) möglich. Der Dienst überwacht Verzeichnisse und versucht dort auftauchende PDF-, TIF- und JPG-Dateien selbstständig zu importieren. Dokumente, die der Dienst nicht importieren kann landen in der Fehler-Liste im Dialog DVS30, wo sie dann manuell verknüpft werden können.
Parameter dvsini.org
Konfiguration der Barcode-Generierung und Erkennung erfolgt über die INI-Dateien dvsini.org und dmsini.org. In der Datei dvsini.org werden sowohl der Barcode-Typ (Parameter DVS_CODETYPE) für die Etiketten (dies steuert sowohl den Druck als auch die Erkennung -- mögliche Werte sind "QR" oder "DataMatrix") sowie die Lua-Skripte für die Unterstützung des Imports (Parameter DMS_POSTSCAN_SCRIPT + DMS_POSTADD_SCRIPT) festgelegt. Während die Skripte für den manuellen Import über DVS30 nicht unbedingt nötig sind, so sind sie für die Nutzung des Dienstes unbedingt erforderlich. Mit Hilfe der Skripte werden die Dokumente aus dem Import-Pfad (Parameter DVS_IMPPFAD) entweder gelöscht (nach erfolgreichen Einfügen ins DMS) oder in ein anderes Verzeichnis verschoben (falls bei der Barcode-Erkennung oder beim Import ins DMS ein Fehler aufgetreten sein sollte).
Beispiele für die relevanten Parameter aus der dvsini.org:
DVS_CODETYPE = "QR" DMS_POSTSCAN_SCRIPT = "\\server\syslogrt\_admin\lua\dms_postscan.lua" DMS_POSTADD_SCRIPT = "\\server\\syslogrt\_admin\dms_postadd.lua" DVS_IMPPFAD = "\\server\scanner1|\\server\scanner2"
Parameter dmsini.org
In der Datei dmsini.org werden Pfade und Parameter für diverse Tools (ImageMagick, GhostScript, etc.) abgelegt, die benutzt werden können um PDFs in Grafik-Dateien zu konvertieren (und eventuell zu filtern), damit sie von der Barcode-Erkennung verarbeitet werden können.
Beispiele für die relevanten Parameter aus der dmsini.org:
IM_CONVERT_EXE = "\\server\dms-tools\ImageMagick-6.6.7-Q8\convert.exe" DESPECKLE_PDF = 3 DESPECKLE_RES = 150 BCR_HINTS = "XIXQ1"
Post-Scan- und Post-Add-Skripte
Scripte zum Verschieben bzw. Löschen der verarbeiteten Dokumente sind für die Nutzung des Scan-Import Dienstes zwingend erforderlich. Sie können über auch für den manuellen Import über DVS30 genutzt werden, um verarbeitete Dateien automatisch aus dem Weg zu räumen. Die Scripte erhalten vom Programm folgende Variablen:
Variable | Inhalt |
---|---|
queue_info.aufruf | Herkunft des Aufrufs ("DVS30" oder "ScanImport") |
queue_info.lfdnr | Verweis auf den Eintrag (oder u.U. auch mehrere Einträge) in der ddqtab |
queue_info.status | Status/Fehlercode (0 = OK/erfolgreich, != 0 = Fehler aufgetreten) |
Außerdem wird das Array queue_files mit den Dateinamen des Dokuments übergeben (theoretisch können es mehrere Dateien pro Dokument sein, wenn im DVS30 via Scan-Client-Mode mehrere Dateien zu einem Dokument kombiniert wurden).
Variable | Inhalt |
---|---|
queue_files[idx].filename | Dokument-Dateinamen |
Beispiel für ein Post-Scan-Skript:
-- Post-Scan Script -- wird nach der Barcode-Erkennung ausgeführt -- wenn queue_info.status = 0, -- dann wurde die Barcode-Erkennung erfolgreich durchgefuehrt. -- Pfad wo fehlerhafte Dokumente hinverschoben werden sollen local failpath = "d:\\temp\\scanimport-fehler\\"; SY_Msg( "queue_info.aufruf = " .. queue_info.aufruf ); SY_Msg( "queue_info.lfdnr = " .. queue_info.lfdnr ); SY_Msg( "queue_info.status = " .. queue_info.status ); SY_Msg( "queue_files length = " .. #queue_files ); if queue_info.status == 0 then SY_Msg( "Status = OK -- Nix tun!" ); return 0; end for idx=1,#queue_files do SY_Msg( "queue_files["..idx.."].filename = " .. queue_files[idx].filename ); SY_Msg( "Status != OK -- Datei wird verschoben." ); local newname = failpath .. SY_Basename(queue_files[idx].filename); -- falls die Zieldatei bereits existiert, dann wird sie entfernt. os.remove( newname ); -- umbennen... if os.rename( queue_files[idx].filename, newname ) ~= nil then -- UPDATE ddqtab -- wir gehen wir davon aus, dass die Dateinamen ueber das ganze System -- hinweg eindeutig sind. local query = "UPDATE ddqtab SET ddqtab.dokupfad = '"..SQL_Escape( newname ).."' WHERE ddqtab.dokupfad = '"..SQL_Escape( queue_files[idx].filename ).."' AND (ddqtab.lfdnr = "..queue_info.lfdnr.." OR ddqtab.lfdnrdg = "..queue_info.lfdnr..")"; local res = SQL_Exec( query ); if res ~= 0 then SY_Msg( "Fehler beim UPDATE ddqtab: "..res ); end else SY_Msg( "Fehler beim Verschieben der Datei '"..queue_files[idx].filename.."' nach '"..newname.."'" ); end end return 0;
Beispiel für ein Post-Add-Skript:
-- Post-Add Script -- wird nach dem (versuchten) Import ins DMS ausgeführt -- wenn queue_info.status = 0, -- dann wurde das Dokument erfolgreich ins DMS -- eingefuegt. -- Pfad wo fehlerhafte Dokumente hinverschoben werden sollen local failpath = "d:\\temp\\scanimport-fehler\\"; SY_Msg( "queue_info.aufruf = " .. queue_info.aufruf ); SY_Msg( "queue_info.lfdnr = " .. queue_info.lfdnr ); SY_Msg( "queue_info.status = " .. queue_info.status ); SY_Msg( "queue_files length = " .. #queue_files ); for idx=1,#queue_files do SY_Msg( "queue_files["..idx.."].filename = " .. queue_files[idx].filename ); if queue_info.status == 0 then SY_Msg( "Status = OK -- Datei wird geloescht." ); os.remove( queue_files[idx].filename ); else SY_Msg( "Status != OK -- Datei wird verschoben." ); local newname = failpath .. SY_Basename(queue_files[idx].filename); -- falls die Zieldatei bereits existiert, dann wird sie entfernt. os.remove( newname ); -- umbennen... if os.rename( queue_files[idx].filename, newname ) ~= nil then -- UPDATE ddqtab -- wir gehen wir davon aus, dass die Dateinamen ueber das ganze System -- hinweg eindeutig sind. local query = "UPDATE ddqtab SET ddqtab.dokupfad = '"..SQL_Escape( newname ).."' WHERE ddqtab.dokupfad = '"..SQL_Escape( queue_files[idx].filename ).."' AND (ddqtab.lfdnr = "..queue_info.lfdnr.." OR ddqtab.lfdnrdg = "..queue_info.lfdnr..")"; local res = SQL_Exec( query ); if res ~= 0 then SY_Msg( "Fehler beim UPDATE ddqtab: "..res ); end else SY_Msg( "Fehler beim Verschieben der Datei '"..queue_files[idx].filename.."' nach '"..newname.."'" ); end end end return 0;