System.ini: Unterschied zwischen den Versionen

Aus IMPS
Zur Navigation springen Zur Suche springen
 
Zeile 969: Zeile 969:
 
=== CURLTIMEOUT ===
 
=== CURLTIMEOUT ===
  
Timeout in Sekunden, wann der Webservice abgebrochen wird (optional, im Standard 300 seit 23.19.1, davor deaktiviert)
+
Timeout in Sekunden, wann der Webservice abgebrochen wird (optional, im Standard 600 seit 23.19.1, davor deaktiviert)
  
 
=== CURLPARAM ===
 
=== CURLPARAM ===

Aktuelle Version vom 2. Mai 2025, 07:28 Uhr

Detailbeschreibung aus Konfiguration

Die Konfiguration des Scriptes wird in der System.ini, die im System- Verzeichnis unterhalb des Scriptverzeichnisses liegt, vorgenommen. Sie enthält folgende Sections.


global - ohne Section

Die im folgenden definierten Parameter werden in der Regel als String interpretiert. Manchmal wäre es aber schön interpretierbaren Code anzugeben. Das ist seit 22.5 experimentell teilweise möglich. Die Funktionen SystemValue, ImportValue, SysImpValue, ExternalValue, ExternalImpSysValue und ServiceValue in Verbindung mit Service (aber nicht mit Job) unterstützen jetzt die Interpretation, wenn zum Parametereintrag ein passender Eintrag EXEC_PARAM_<parameter> = 1 existiert und der Parameter intern über eine der Funktionen aufgerufen wird.

EXEC_PARAM_CUSTOMER = 1
CUSTOMER            = string map {importservice integrationPlatform}  "Development of importservice"

EXEC_PARAM_<parametername>

Experimentelle Funktion, die dafür sorgt, das die Definition in <parametername> als Code und nicht als String verstanden wird, wenn das Auslesen über eine der Funktionen SystemValue, ImportValue, SysImpValue, ExternalValue, ExternalImpSysValue passiert.

<ENCODING="enc">

Das Encoding der system.ini kann definiert werden, z.B. als utf-8. Diese Kommentarzeile muss die erste Zeile der ini-Datei sein. Ist diese Zeile nicht definiert, so wird weiterhin das Systemencoding verwendet.


Beispiel:

<encoding="utf-8">




LANGUAGE

Es kann die Sprache definiert werden, die in der messages.ini verwendet werden soll.

optional, default == D

CUSTOMER

Kundenname (z.B. WPV)

ersetzt Kunde

EXTRAINFO

Zusatztext, der im Header von Fehler- und Eventmails verwendet werden kann.

Wenn führende Leerzeichen verwendet werden soll, da EXTRAINFO direkt an CUSTOMER anschließt. so sind die als \x20 zu verwenden!

WORKDIR

Globales Verzeichnis, in dem z.B. die Triggerdateien (s. TRGPATH und TRGFILE) des Kanals bei UseService <> 1 gespeichert werden können.

(optional, default == ./work)

USEJOBSERVICE

USESERVICE ersetzt den ungültigen Wert <VARIABLEN,USECORSAWEBSERVICE>. Es ist eine Bitmaske aller verwendbaren Klassen (momentan Corsa == 1, freier Kanal == 2, Json-Kanal == 4, XML-Kanal == 8). Die Klassen müssen allerdings lizenziert sein, um sie nutzen zu können.

 USESERVICE = 7

TranslateCRLF

Es ist nicht möglich, ein \n direkt an die Jobserviceklasse zu übergeben. Das Zeichen muss ersetzt werden und wird dann automatisch, da wo es umgesetzt ist (z.Zt Anlage/Ändern eines Objektes mit System- und Zusatzfeldern und ObjektMemo), in der Jobklasse zurückgesetzt.

Dieser Parameter definert einen eindeutigen Ersetzungsstring.

Optional, default == **#C#R#**


CheckDS

Wenn dieser Parameter auf 1 steht, so muss ein DS-Pfad mit Unterstruktur angegeben werden, in dem die aufgelaufenen *.ta-Dateien gezählt werden.

Soll das nicht passieren, so ist der Parameter auf 0 zu stellen!.

Optional, default == 0.


ProtPraefix

Praefix der Protokolldatei, z.B. IMPSRV

-> IMPSRV_20041202.pro

Optional, default == IMPSRV_.


ProtPath

Der Pfad, in dem die Protokolldatei abgelegt werden soll. Dieser muss absolut angegeben werden.

Optional, default == <ScriptDir>/Protokolle


ProtDelta

Steuerung, ob die Zeit in ms zwischen 2 Protokolleinträgen mit protokolliert werden soll.

Optional, default == 1

Debug

Ist das Debugging angeschaltet, so werden viel mehr Informationen in die Protokolldatei geschrieben. Dieses ist nur zu Testzwecken zu empfehlen.

Das Debugging kann über die Console mit dem Befehl:

set main::system(VARIABLEN,DEBUG) 1

zur Laufzeit eingeschaltet werden (und mit 0 wieder ausgeschaltet)

Optional, default == 0

StopOnError

1 = On

0 = Off

Ist der Parameter eingeschaltet, so wird, wenn der Kanal sich nach einer definierten Zeit nicht zurück meldet, der ganze Kanal angehalten. Ist der Parameter ausgeschaltet, so wird nur der jeweilige Kanal abgeschaltet. Es erfolgt, falls die eMailbenachrichtigung aktiv ist, eine Meldung per Mail (z.B. an doc@stratoz.de).

Optional, default == 0.


DSWorkDir

Dieser Parameter kann mit CheckDSdeaktiviert werden.


Ab der Corsa-Version Januar 2006 macht der DS- Dienst keine Threads bei Arc, OCR und FTI mehr auf. Stattdessen wird in den DS- Work- Unterverzeichnissen (ARC,OCR,FTI,DEL) nun pro Vorgang eine .dsa-Datei aufgemacht. Die Anzahl der geschriebenen .dsa-Dateien wird nun verwendet, um die "Startthreads" zu vergleichen.

Dieser Parameter ist ab der Version ein Pflichtparameter.

Bsp.:

graphic


ACHTUNG:

Wenn hier NICHT das richtige Verzeichnis eingetragen ist, startet der ImportService nicht und es wird auch kein Protokoll geschrieben!



AfterTime

Mit diesem Parameter kann eine Bremse eingebaut werden, um die CPU-Anzeige im Taskmanager von nahezu 100% auf Werte nahe 0% zu drücken.

Das ist in den meisten Fällen nicht notwendig und lediglich kosmetisch, da der CPU-Last sofort sinkt, wenn andere Prozesse auch die CPU anfordern.

Der Wert ist eine Pause in Millisekunden. Im Testumfeld hat sich ein Wert von 10 als vernünftig erwiesen. Allerdings sollte im Echtbetrieb noch eine Feinjustierung erfolgen (so klein wie möglich).

Optional, default == 10.


Event_Receiver

Empfängermailadresse der Eventmails. Mehrere Empfänger können per Leerzeichen getrennt angegeben werden.

Die Kontoeinstellungen werden im Abschnitt [SMTP] bzw. in [MS_GRAPH_API] definiert.

Event_CC

CC-Adressen für die Eventmails


Event_BCC

BCC-Adressen für die Eventmails

WaitBeforeDeleteEmptyDir

Zeit in ms, wie lange der Importservice wartet, bevor er einen leeren Kanalordner löscht. Diese Zeit ist notwendig, da er der leere Ordner angelegt wird und danach die Lockdatei geschrieben wird.

Optional, default == 500.


StartFunction

Hier kann ein benutzerdefinierte Funktion aus dem Include-Verzeichnis aufgerufen werden, die den eigentlichen Start des Dienstes verzögert.

So ist es z.B. möglich, dass der Dienst erst dann aktiv wird, wenn alle Ressourcen zur Verfügung stehen.

Damit der Dienst sich in der Windows Dienstumgebung korrekt verhält (z.B. beim Beenden des Dienstes oder herunterfahren des Servers), ist es notwendig, dass die Prozedur sofort verlassen wird, wenn die Bedingung <$::service(state) != "running"> erfüllt ist. Das bedeutet, der Dienst hat die Aufforderung vom Betriebssystem erhalten, sich schnellstens zu beenden.

Optional.


StartCMD

Es sind beliebig viele Anweisungen möglich, die in der Startphase der integrationPlatform ausgeführt werden. Im Gegensatz zur StartFunction wird keine Rückgabe erwartet. StartCMD wird nach StartFunction ausgeführt. Hier können z.B. globale Variable definiert werden, die während der ganzen Laufzeit der integrationPlatform zur Verfügung stehen müssen.

StartCMD = set ::retryObject(GENERATEERROR) [::CountByKey::New -path c:/test/keydb -dbName GenerateERROR.db -autoBackup 0]

LicenceDir

Verzeichnis, in dem die Lizenzdateien liegen. Optional, default = ./lic

Internal_Key

Dieser Wert darf nur von StratOz definiert werden. Nähere Informationen befinden sich in der entsprechenden Doku mit Suchbegriff "Importservice Lizenz". Aber der Version 18.10 sollten besser Lizenzdateien verwendet werden. Der Wert der system.ini überschreibt aber (noch) die Lizenzdatei.


DSActionCMD

Vordefinierter Wert, der beim Upload der Dokumentdatei als Actionwert verwendet wird.

Bei NONE wird nichts übergeben und die CMC-Standardeinstellung verwendet.

Optional, default == -action NONE

DSActionCMD = -action NONE

ENCODING

Hier mit wird das Encoding der Protokolldatei bestimmt.


Optional, default == utf-8

BACKUP_KEEPNAME

Diese Parameter steuert, ob die Dateien im Backupverzeichnis den Originaldateinamen enthalten (1) oder nicht (0)

Optional, default == 0


MAXTRIES2MOVE

Anzahl der Versuche, wie oft versucht wird eine Datei zu verschieben (kann beim Kanal genauer definiert werden)

0 bedeutet dabei unendlich!

Optional, default == 100


DELETEBADFILES

Der Parameter steuert, ob eine unbekannte Datei einfach gelöscht oder in den Errorordner verschoben wird. Diese Einstellung kann für jeden Kanal überschrieben werden.

Optional, default == 0 (in den Errorordner verschieben)

VORSICHT: Wenn eine Datei aufgrund einer fehlerhaften Konfiguration dem Importservice nicht bekannt ist, so wird die Datei bei DELETEBADFILES == 1 gelöscht!

ABORTIFERROR

Wenn dieser Parameter aktiviert ist, so wird ab der Stelle eines auftretenden Fehlers bei der Interpretation der mapping.ini die Verarbeitung abgebrochen. Lediglich die Zuweisung der Objekt-ID und die DECLARE- und ERROR-Section werden noch ausgeführt.

Optional, default == 0.

CheckVersionNo

Die Versionsnummer wird überprüft, um für den theoretischen Fall, dass der Importservice nach Upload einer Datei aber vor der Bestätigungsverarbeitung abgeschossen wird, eine Doppelanlage der Datei zu vermeiden. Die Aktivierung dieser Funktion bietet maximale Sicherheit, belastet jedoch geringfügig die Performance.

Optional, default == 1


OverwriteVersion

Dieser Schalter wird nur bei aktivierter Versionsprüfung CheckVersionNo verwendet. Ist er aktiviert, so wird eine vorhandene Dateiversion einfach überschrieben, ansonsten gibt es eine Fehlermeldung in der Jobverarbeitung und die Datei wird nicht überschrieben.

Optional, default == 0


RetryUpload

Anzahl der Versuche, wie oft ein gescheitertes Übertragen eines Datenpaketes beim Upload versucht werden soll.

Optional, default == 3


TimeoutAppendChunk

Timeout in ms, bis die http-Verbindung beim Hochladen des Datenpaketes abgebrochen wird.

0 bedeutet kein Timeout.

Optional, default == 100000


TimeoutCreateFile

Timeout in ms, bis die http-Verbindung beim Verbinden des hochgeladenen Dokumentes mit der Registrierung und beim Schreiben ins DS abgebrochen wird.

0 bedeutet kein Timeout.

Optional, default == 900000


ChunkSize

Größe des Chunks beim Upload in Byte (z.B. 750000).

Optional, default == 1000000

DELETE_LINKED_UPLOADFILE_DIR

Löschen der Quellverzeichnisse

ACHTUNG: Sollen laden lediglich archiviert und nicht gelöscht werden, so ist dieser Wert unbedingt auf 0 zu setzen. Generell sollten in diesem Szenario aber zusätzlich keine Löschrechte vorhanden sein.

Optional, default == 1

SHA256

Steuerung der Überprüfung des Uploads mit Hilfe des SHA256-Vergleichs, der Standard ist 1.

Bei 0 erfolgt kein Vergleich. Bei 1 wird der SHA256 automatisch generiert und mit dem Corsawert verglichen.

 SHA256 = 1

NATSHA256

Steuerung der Überprüfung des Uploads mit Hilfe des SHA256-Vergleichs, der Standard ist 1.

Bei 0 erfolgt kein Vergleich. Bei 1 wird der SHA256 automatisch generiert und mit dem Corsawert verglichen.

 NATSHA256 = 0


NATDELETEVERSION

Es wird definiert, ob alle Versionen (falls von den Rechten möglich) oberhalb der in [[[mapping.ini]]/UPLOAD,NATVERSION] angegebenen Version gelöscht werden sollen. Diese Angabe ist optional, als Standard wird 0 verwendet.

 NATDELETEVERSION = 1


DELETEVERSION

Solange das Löschen von Versionen nur bei NAT zu definieren ist, ist diese Befehl identisch zu NATDELETEVERSION

ARCSHA256

Steuerung der Überprüfung des Uploads mit Hilfe des SHA256-Vergleichs, der Standard ist 1.

Bei 0 erfolgt kein Vergleich. Bei 1 wird der SHA256 automatisch generiert und mit dem Corsawert verglichen.

 ARCSHA256 = 0

OCRSHA256

Steuerung der Überprüfung des Uploads mit Hilfe des SHA256-Vergleichs, der Standard ist 1.

Bei 0 erfolgt kein Vergleich. Bei 1 wird der SHA256 automatisch generiert und mit dem Corsawert verglichen.

 OCRSHA256 = 0

TMBSHA256

Steuerung der Überprüfung des Uploads mit Hilfe des SHA256-Vergleichs, der Standard ist 1.

Bei 0 erfolgt kein Vergleich. Bei 1 wird der SHA256 automatisch generiert und mit dem Corsawert verglichen.

 TMBSHA256 = 0


DSTaskPrio

Einstellung der Priorität für die DS-Aktionen. Erlaubte werden sind "L","N" und "H". Der Standard ist "N".


CreateFV

Definiert die CreateFileVersion Methode, die vom Corsa Webservice aufgerufen wird (optional, default 3).


AUTOREADFIELDS

Definiert, ob bei NEWIMPORT die definierten Felder (<NEWIMPORT_FIELDS><NI_FIELDS>...) automatisch in gleichnamige %VARIABLEN% eingelesen werden sollen (0,1). Dieser Wert wird, wenn er nicht definiert ist, automatisch gesetzt. Wenn die Datei die Extension XML oder JSON hat, dann wird er auf 1 gesetzt, sonst auf 0.


AUTOFIELDSSTORETOUPDATE

Definiert, ob die automatisch eingelesenen Variablen auch automatisch in den Uploaddaten erscheinen sollen (bis XML und JSON). Im Standard ist das ausgeschaltet (0).

SETSTORETOUPLOAD

Definiert, ob bei Verwendung von Set die Werte in die Uploadliste geschrieben werden oder nicht. Im Standard ist das eingeschaltet (1).

LAPPENDSTORETOUPLOAD

Definiert, ob bei Verwendung von Lappend die Werte in die Uploadliste geschrieben werden oder nicht. Im Standard ist das eingeschaltet (1).

DSERROR

Dieser Block muss definiert werden, wenn die Funktion "Wiederholen beim obskuren DS Fehler" eingeschaltet werden soll. Dies trifft nur auf Progressimporte zu.

Beim Webserviceimport muss es nicht in der system.ini vorhanden sein.


RETRY

1/0


ERRORLOG

Regulärer Ausdruck aus der Logdatei, an dem der obskure Fehler erkannt werden kann.



EVENT

Eventmaske


 TXT   


z.B.

Wiederholung des Kanals, da Dateien nicht abgelegt werden konnten (s. Protokolldatei)



EVENT_GLOBERROR

Eventmaske


TXT_GLOBERROR

z.B.

Wiederholung des Imports konnte aufgrund von Netzwerkproblemen nicht durchgeführt werden



EVENT_OPENERROR

Eventmaske


 TXT_OPENERROR   


Fehlerlog konnte nicht geöffnet werden: $file


WAPP

Seit der Version 22.0 verfügt die integrationPlatform über einen internen Restserver, mit dem Webservices bereitgestellt werden können (einige Standardfunktionen gibt es auch). Die Konfiguration erfolgt hier.

SERVICEACTIVE

Einstellung, ob der Restservice verwendet werden soll oder nicht. Der Standard ist 0.


PORT

Einstellung des Ports, über den kommuniziert wird. Der Standard ist 80.


OWNIP

Über OWNIP kann die IP des erlaubten Senders definiert werden. Der Standard ist 0.0.0.0, also alle Sender sind erlaubt.


<channel>,WAPP_ALLOW_UPLOAD

Der Upload muss für jeden Kanal, in dem die Funktion benutzt werden soll, freigeschaltet werden.

[CHANNEL269]
WAPP_ALLOW_UPLOAD = 1

<channel>,WAPP_ALLOW_SETSLEEPSTATE

Der Upload muss für jeden Kanal, in dem die Funktion benutzt werden soll, freigeschaltet werden.

[CHANNEL269]
WAPP_ALLOW_SETSLEEPSTATE = 1

WEBSERVICE

Einstellungen, die den Corsa Webservice betreffen.


WSDLPATH

Pfad zur wsdl-Datei vom Corsa Webservice.


Beispiel:

WSDLPATH = http://192.168.1.123/wsCorsa7/Corsa72WS.asmx?WSDL


CONNECTIONID

CORSA


SERVICE

Name des Service


Beispiel:

SERVICE = CORSA72WS


PASSWORD

Hier wird das Standardpasswort des Webservices oder das zum USER gehörende Passwort pwc-verschlüsselt angegeben.

Der Schlüssel muss hier deklariert werden!



REFRESHDELAY

Verzögerung in Millisekunden bei einem Reconnect


USER

Der Corsauser, in dessen Kontext die Daten importiert werden sollen (z.B. SYSTEM)


LINKEDERROR

Der Corsa Webservice hat die Eigenschaft, dass die Verknüpfung von zwei bereits verknüpften Objekten einen Fehler verursacht. Das ist für die Verwendung im Importservice unpraktisch, weshalb die Möglichkeit geschaffen wurden, diesen Fehler im Zwischenpackage auszuschalten.

Damit der Fehler erkannt werden kann, muss der genaue casesensitive Text definiert werden (wenn der Parameter nicht definiert ist, so wird "Die Verknüpfung besteht bereits." verwendet).

Achtung: Bei anderen Ländereinstellungen wird der Text vermutlich anders aussehen!

Standard: LINKEDERROR = Relatie bestaat al.|Die Verknüpfung besteht bereits.|Link already exists.|Lien existe déjà.|Länken finns redan.

RETRYTOCONNECT

Nach einem Disconnect wird in einer Schleife immer wieder probiert den Webservice neu zu connecten (1=default/0).

Vorteil: Der Prozess nimmt die Verarbeitung genau dort wo er war wieder auf, wenn der Webservice wieder da ist.

Nachteil: Die komplette integrationPlatform hängt an einer Stelle, bis es weiter geht.

Es muss hier also genau abgewogen werden, welche Einstellung hier optimal ist.

TIMEOUT

Es können die Timeoutzeiten in ms für diverse Webservicemethoden definiert werden.

Ist keine explizite Definition vorhanden, so wird der Wert DEFAULT verwenden.

Ist dieser auch nicht vorhanden, so wird das Timeout ausgeschaltet.


DEFAULT

Mit Default wird der Standardwert definiert, der immer dann genommen wird, wenn keine abweichende Einstellung für eine Webservicemethode vorhanden ist.


z.B.

DEFAULT = 5000


 <Name der Methode>   


Für jede Webservicemethode kann ein individueller Wert hinterlegt werden.

z.B.

DEFAULT = 5000

CONNECT = 2000


JOBS<n>

Jobs<n> ist veraltet. Es wird zwar weiterhin noch unterstützt, aber es sollte stattdessen SERVICE verwendet werden, da mehrere Services für eine Jobserviceklasse definiert werden können. Außerdem werden bei Service auch im Kanal die Parameter direkt und ohne Präfix (JOBS<n>_) verwendet. Die meistens Parameter von Service werden auch bei Jobs unterstützt.

Einstellungen, die den Job betreffen. Dabei ist <n> durch den entsprechenden Wert der Jobserviceklasse (1,2,4,8, ...) zu ersetzen. Dabei muss für jede Klasse eine eigene Ordnerstruktur definiert werden! Die alte Einstellung JOBS ohne Nummer wird nicht mehr unterstützt!

SERVICE

Service ersetzt JOBS<n> und ermöglicht es mehrere Services für eine Jobserviceklasse zu definieren. Da aktuelle Projekte oft mehrere verschiedene z.B. REST-Services enthalten, ist das eine wichtige Anpassung. Wenn die folgenden Parameter im Kanal überschrieben werden, so ist der Parameter 1:1 ohne ein Präfix zu verwenden! Kommt in der Parameterdefinition im Kanal ein *self* vor, so wird dieser String durch den selben Parameter der Servicedefinition Textersetzt.

Verfügbar ab Version 21.0

NAME

Jeder Service muss einen eindeutigen Namen erhalten, der dann im Kanal verwendet werden kann.

NAME = VerifierPro

TYPE

Der Typ (Jobserviceklasse [1,2,4,8, ...]) des Service.

TYPE = 4
 

TODO

Pfad zum Arbeitsverzeichnis. Relative Pfade beziehen sich auf das Verzeichnis, in dem der Jobservice liegt.


Beispiel:

TODO =./jobs/todo


ERROR

Pfad zum Fehlerverzeichnis. In diesem Verzeichnis werden Fehlertransaktionen temporär abgelegt und die Fehlerprotokolle erstellt.

Relative Pfade beziehen sich auf das Verzeichnis, in dem der Jobservice liegt.


Beispiel:

ERROR =./jobs/error


SETHEADERTOERRORPROTOCOL

Ein Header wird in das Errorprotokoll geschrieben, so dass es mit dem Jobservice einfach weiterverarbeitet werden kann

optional, default == 0


OK

Pfad zum Ok-Verzeichnis. In diesem Verzeichnis werden korrekte Transaktionen temporär abgelegt und die Ok-Protokolle erstellt.

Relative Pfade beziehen sich auf das Verzeichnis, in dem der Jobservice liegt.


Beispiel:

OK =./jobs/ok


ROLLBACK

Pfad zum Rollback-Verzeichnis. In diesem Verzeichnis werden Transaktionen zum Zurückrollen der Aktion temporär abgelegt und die Rückrollprotokolle erstellt.

Relative Pfade beziehen sich auf das Verzeichnis, in dem der Jobservice liegt.


Beispiel:

ROLLBACK = ./jobs/rollback

PROTOCOL

Pfad und Name der Jobprotokolldatei. Der Bezeichner &JOBID& wird durch die tatsächliche Jobbezeichnung ersetzt.

Relative Pfade beziehen sich auf das Verzeichnis, in dem der Jobservice liegt.


Beispiel:

PROTOCOL = ./protocols/JOBS/&JOBID&.txt


AFTERERRORCMD

Befehle, die nach der Erstellung der Fehlerdatei ausgeführt werden. Damit ist es z.B. möglich, die erstellte Datei zu verschieben.

Die Variable $file enthält die erstellte Datei, mit $::script::scriptDir kann auf das Verzeichnis des Jobservice zugegriffen werden.


Beispiel:

AFTERERRORCMD = if {[file exists $file]} {file rename $file $::jobsns::scriptDir/protocols/jobs/}
  
 

AFTEROKCMD

Befehle, die nach der Erstellung der Datei der korrekten Transaktionen ausgeführt werden. Damit ist es z.B. möglich, die erstellte Datei zu verschieben.

Die Variable $file enthält die erstellte Datei, mit $::script::scriptDir kann auf das Verzeichnis des Jobservice zugegriffen werden.


Beispiel:

AFTEROKCMD = if {[file exists $file]} {file rename $file $::jobsns::scriptDir/protocols/jobs/}
  
 

AFTERROLLBACKCMD

Befehle, die nach der Erstellung der Rückrolldatei ausgeführt werden. Damit ist es z.B. möglich, die erstellte Datei zu verschieben.

Die Variable $file enthält die erstellte Datei, mit $::script::scriptDir kann auf das Verzeichnis des Jobservice zugegriffen werden.


Beispiel:

AFTERROLLBACKCMD = if {[file exists $file]} {file rename $file $::jobsns::scriptDir/protocols/jobs/}


AFTERJOBCMD

Befehle, die nach dem Schließen des Jobprotokolls ausgeführt werden sollen. So ist es z.B. möglich, die entstandene Jobdatei wieder zu löschen,

Beispiel:

AFTERJOBCMD = catch {file delete [string map [list &JOBID& $jobID] $jobFileName]}

WRITEERRORFILE

default = 1

Ist diese Funktion ausgeschaltet, so werden keine leeren Fehlertransaktionsdateien mehr geschrieben. Fehler werden aber in jedem Fall protokolliert.


WRITEERRORFILE = 0


WRITEOKFILE

default = 1

Ist diese Funktion ausgeschaltet, so werden keine zusammenfassenden Transaktionsprotokolle mehr geschrieben.


WRITEOKFILE = 0


WRITEROLLBACKFILE

default = 1

Ist diese Funktion ausgeschaltet, so werden weder einzelne noch zusammenfassende Rollbacktransaktionsprotokolle mehr geschrieben.


WRITEROLLBACKFILE = 0


PREDELSOURCECMD

Befehle, die vor dem Löschen der Quelldatei ausgeführt werden, um diese z.B. zu sichern.

Dabei können die Variable $sourceFile, die die aktuelle Quelldatei enthält und das Macro &JOBID&, das die JobID repräsentiert, verwendet werden.


Beispiel:

PREDELSOURCECMD = file rename $sourceFile $::script::scriptDir/backup/[file tail [file rootname $sourceFile]]_&JOBID&.txt


SPACES

Anzahl der Leerzeichen als Einrückung in der erstellten Datenstuktur, der an den (ClassiX-)Webservice übergeben wird. Der Parameter wird nur bei Importen mit USEJOBSERVICE == 4 oder 8 verwendet.

Optional, default == 0

 [SERVICE]
 ...
 SPACES          = 2

HOST

Konfiguration des Host, an den die Daten übertragen werden sollen. Der Parameter wird nur bei Importen mit USEJOBSERVICE == 4 oder 8 verwendet.

Default = "*NOT_DEF*" (das läuft dann in einen Fehler, wenn nichts definiert wurde!)

PORT

Konfiguration des Port, an den die Daten übertragen werden sollen. Der Parameter wird nur bei Importen mit USEJOBSERVICE == 4 oder 8 verwendet.

Optional, default == "80"


 [SERVICE]
 HOST = http://EW-1909BestClub
 PORT = 5454

METHOD

Konfiguration der Webservicefunktion. Der Parameter wird nur bei Importen mit USESERVICE == 2, 4 oder 8 verwendet.

Optional, default = {}

s. auch METHOD, METHODIF und METHODRULE in der Importdefinition

RECORDKEY

Name des Json Schlüssels, der ein Array mit Datensätzen beschreibt. Wenn nur ein Satz pro Übertragung erfolgen soll, kann hier auch "NONE" definiert werden, dann entfällt der Satz und der Importparameter BIGTA wird automatisch auf 0 gesetzt.

ab Version 21.x: Optional, default == "NONE"

bis Version 20.x: Optional, default == "record"

BIGTA

BIGTA steuert, ob für alle Datenzeilen der Datendatei beim USEJOBSERVICE == 4 oder 8 in einer Transaktion übergeben werden sollen oder nicht. Bei BIGTA == 1 muss ein RECORDKEY definiert werden.

Optional, default == 0


ROOTTAG

Definition des bei XML notwendigen Roottags bei USEJOBSERVICE == 8.

ROOTTAG = soap:Envelope {xmlns:soap http://schemas.xmlsoap.org/soap/envelope/ xmlns:xsi http://www.w3.org/2001/XMLSchema-instance xmlns:xsd http://www.w3.org/2001/XMLSchema}

UPLOADFILE

Bei großen Datenmenge kann es sein, dass Curl die Daten nicht mehr hochladen kann. Dann ist es notwendig, dass die Daten per Datei hochgeladen werden. Das kann automatisch passieren. Dafür muss nur ein Uploadfile definiert werden.

UPLOADFILE = d:/curlupload/uploadfile.json

UPLOADFILEENCODING

Wenn das Encoding des UPLOADFILE nicht utf-8 sein soll, so kann es über diesen Parameter geändert werden.

HTTPHEADER

Ist eine Liste, die die Httpheaderwerte enthält. Der optionale Parameter wird bei USEJOBSERVICE == 4 mit {"Content-Type: application/json"} und bei USEJOBSERVICE == 8 mit {"Content-Type: text/xml"} vorbelegt.

HTTPHEADER = "Content-Type: text/xml" "SOAPAction: http://www.egem.nl/StUF/sector/bg/0310/test"

HTTPHEADEREVAL

Es wird TCL-Code ausgeführt, um eine Liste wie bei HTTPHEADER zu erhalten. HTTPHEADEREVAL überschreibt HTTPHEADER, wenn beides gesetzt ist!

 HTTPHEADER = list [list "Authorization" $::secret::token]

CHECKERRORFUNC

Wird XML oder JSON an einen Webservice geliefert und dieser gibt Informationen zurück, so können diese ausgewertet werden und es wird, wenn die CHECKERRORFUNC 1 zurückliefert, ein Fehler ausgelöst, der den Importservice in das entsprechende Errorhandling schickt. Dabei steht der zurückgegebene Inhalt in der Variablen $response. Bei XML ist standardmäßig nichts definiert, bei JSON:

regexp {(?:error_message|\"state\":0)} $response

CHECKUPLOADFUNC

Es kann eine Funktion definiert werden, die direkt vor dem Upload ausgeführt wird und zurückliefert (1/0), ob die Daten hochgeladen werden sollen.

Eine beispielhafte Importeinstellung für eine JSON-Schnittstelle ($this ist das Jobobjekt, die Methode GetGeneratedData enthält den Uploadcontent)

 CHECKUPLOADFUNC = WebCheckSupplier ew-jclassix64t:5454/WEB_CHECK_SUPPLIER $::mapping::uniqueID [$this GetGeneratedData]


Ein Funktionsbeispiel (ohne ausprogrammiertes Errorhandling!):

 proc WebCheckSupplier {url uniqueID dataGenerated} {
   set checkSum     [string toupper [::sha1::sha1 [encoding convertto utf-8 $dataGenerated]]]
   append url       "?uniqueID=${uniqueID}&checkSum=${checkSum}"
   set httpHeader   {"Content-Type: application/json"  "Accept: application/json"}
   set response     ""
   array set header {}
   
   ::curl::transfer -url $url -post 0 -httpheader $httpHeader -bodyvar response -headervar header -errorbuffer errMsg
   
   return [expr {[dict get [::json::json2dict $response] status] eq "true"}]
 }

CONVERTDATAFUNC

Es kann eine Funktion definiert werden, die direkt vor dem Upload von der Methode ConvertData aufgerufen wird. Damit können z.B. noch Textersetzungen in den erzeugten Daten vor dem Upload vorgenommen werden.

Eine beispielhafte Importeinstellung für eine JSON-Schnittstelle ($this ist das Jobobjekt, die Methode GetGeneratedData enthält den Uploadcontent)

 CONVERTDATAFUNC  = set generatedData [MapString $generatedData]

Ein Funktionsbeispiel:

 proc MapString {string} {
   string map { "a" "A" } $string
 }

UPLOADDATA

Bei UPLOADDATA == 1 werden bei USEJOBSERVICE == 2, 4 oder 8 die Daten an einen Webservice übertragen, bei 0 werden nur die Datenstrukturen aufgebaut. Bei USEJOBSERVICE == 2 ist der Standardwert 0, sonst 1.

HTTPPOST

HTTPPOST steuert, ob POST (1) oder GET (0) verwendet wird.

Optional, default == 1


GENDATAWITHOUTCRLF

Falls die generierten Daten im Protokoll ohne Leerzeichen dargestellt werden sollen, damit die Protokolle komprimierter erscheinen, so ist dieser Wert auf 1 zu setzen.

Optional, default == 0


WRITEJOBID

Die eindeutige JobID kann automatisch in die zu erzeugende Datenstruktur geschrieben werden oder nicht.

Optional, default == 0


USERPWD

Benutzername und Passwort können, z.B. für Basic Authentication, verschlüsselt definiert werden. Dabei sind sie vor der Verschlüsselung im Format <user>:<passwort> zu definieren.


SSLVERIFYPEER

Die Überprüfung wird ein- oder ausgeschaltet. Wenn es nicht definiert ist, dann wird TCLCurl-Standard verwendet.

Optional, default = ""


FOLLOWLOCATION

TCLCurl Parameter -followlocation (optional, Standard 1)


MAXREDIRS

TCLCurl Parameter -maxredirs (optional, Standard 2)


CURLTIMEOUT

Timeout in Sekunden, wann der Webservice abgebrochen wird (optional, im Standard 600 seit 23.19.1, davor deaktiviert)

CURLPARAM

TCLCurl Parameter, die nicht durch einen der obigen Parameter beschrieben sind, können in der Form -<key> <value> definiert werden, um nicht bei besonderen Einstellungen auf ein Produktupdate warten zu müssen.


SENDEMPTYDATA

Der Parameter steuert, ob bei leeren Daten ein Webservicecall abgesetzt wird oder nicht.

Optional, default == 0


SHARE

Beliebige Anzahl von SHARE Sections, wobei mit jeder ein Netzwerkshare eingerichtet wird. Pro Share ist ein Benutzer und ein Passwort zu vergeben.

Die Funktion wird z.B. benötigt, wenn ein externes WORM mit eigener Rechtesteuerung verwendet werden soll.


ACTIVE

Eingeschaltet (1) oder ausgeschaltet (0).


PATH

Netzwerkfreigabe im der Form //host/p1/p2 oder \\\\host\\p1\\p2


USER

Benutzer, der das Recht hat, auf die Freigabe zuzugreifen.


PASSWORD

Passwort des Benutzers.

DEVICE

Laufwerksbuchstabe, der mit net use zugeordnet werden soll (in der Form H:)

Optional, default == ""

IMPORTDIRS

Es sind folgende Schlüssel enthalten:


DIRxx

xx ist ein Zähler.

Hier werden die Verzeichnisse definiert, die, falls das Importverzeichnis noch nicht erstellt wurde, als Unterverzeichnisse automatisch angelegt werden.


MS_GRAPH_API

Sendmail

1 = Mail bei Fehler versenden

0 = keine Mail versenden


Username

Benutzername


sender

Sendermailadresse


receiver

Empfängermailadresse der Systemmails. Mehrere Empfänger können per Leerzeichen getrennt angegeben werden.


CC

CC-Adressen der Systemmails


BCC

BCC-Adressen der Systemmails


TENANT_ID

s. Doku Graph-Api


CLIENT_ID

s. Doku Graph-Api


CLIENT_SECRET

verschlüsselt mit Verschlüsselung der integrationPlatform, s. Doku Graph-Api

SMTP

Es sind folgende Schlüssel enthalten:


Sendmail

1 = Mail bei Fehler versenden

0 = keine Mail versenden


sender

Sendermailadresse


receiver

Empfängermailadresse der Systemmails. Mehrere Empfänger können per Leerzeichen getrennt angegeben werden.


CC

CC-Adressen der Systemmails


BCC

BCC-Adressen der Systemmails


server

Name oder IP des Mailservers


username

Anmeldename des Mailkontos


password

Passwort des Mailkontos. Es muss ab Version 5.1 pwc verschlüsselt sein.


useSSL

SSL ein- oder ausschalten (optional, default == 1)


port

Es kann ein Port oder eine Liste von Ports übergeben werden. Wird der Parameter weggelassen, so wird automatisch Port 587 verwendet. Die Verwendung des Parameters mit leerem Wert ist nicht erlaubt!

TELEGRAM

Einstellungen für den Messager Telegram. Um diesen nutzen zu können ist eine Lizenzierung erforderlich!

ACTIVE

Der Messager wird aktiviert.


BOT

Bot-ID


APIURL

Optional, Standard "https://api.telegram.org"

EVENTS

Dem Bereich Events wird zur Übersichtlichkeit ein eigener Dokumentationsbereich gewidmet.


CLUSTERS

Es können beliebige Cluster definiert werden. Ein Cluster ist eine Gruppe von Importen, deren Quellverzeichnisse einen gemeinsamen Datenpool ergeben und der zeitlichen Reihe nach (wahlweise atime, ctime oder mtime, optional, default == ctime) verarbeitet werden. Das ist z.B. sinnvoll, um Daten, die aus mehreren Kanälen kommen, aber in der richtigen Reihenfolge verarbeitet werden müssen, zu orchestrieren. Außerdem sind einige Szenarios, die in der Vergangenheit über Dependencies gesteuert wurden, einfacher zu lösen.

Einschränkungen: Ein Import wird nur in einem Cluster berücksichtigt. Außerdem müssen entweder überall oder nirgendwo im Cluster Ordner vorhanden sein, für ein gemischtes Szenario ist ein eigener Vorprozess zu erstellen.

[CLUSTERS]
CLUSTER1 = IMPORT01 IMPORT1909
CLUSTER2 = IMPORT1956 IMPORT1957 IMPORT1995
[IMPORT01]
ClusterTimeType = atime

Wenn die Daten als Dateien und nicht als Ordner vorliegen, so müssen diese vorher in Ordner verschoben werden. Der Ansatz über FUNCTION und ::MakeSubDir::MakeSubDir oder andere Umsetzungen, die die Daten erst in der FUNCTION holen, darf nicht verwendet werden! Allerdings gibt es einen alternativen Weg.

[CLUSTERS]
SAMPLECLUSTER = IMPORT_1909 IMPORT_1956 IMPORT_1957 IMPORT_1963
[LOOP]
STARTCMD = ::MakeSubDir::MakeClusterDirs SAMPLECLUSTER -seconds 10
[IMPORT_1909]
; die Dateien liegen abweichend nicht im Quellordner
ORIGINALDIR = c:/soccer/champion

So werden, wenn keine Ordner mehr abzuarbeiten sind, alle Dateien in den Quell- (SOURCEDIR) oder Originalordnern (ORIGINALDIR) des Clusters, die älter als 10 Sekunden sind, in der Reihenfolge des Datums (konfigurierbar im Import via ClusterTimeType) in Ordner unterhalb des Quellordners verschoben.

CLUSTERTIMETYPES

Für jeden definierten Cluster kann ein alternativer Zeittype (atime, mtime, ctime) angegeben werden.

[CLUSTERTIMETYPES]
SAMPLECLUSTER = mtime


LOOP

Parameter, die sich auf die Verarbeitungskette der Regelwerke beziehen


STARTCMD

Es können mehrere Anweisungen definiert werden, mit denen es möglich ist, Funktionen ganz am Anfang der Verarbeitungskette auszuführen

STARTCMD =  ::MakeSubDir::MakeClusterDirs CLUSTER1


EXTERNALINI

Inidateien aus anderen integratonPlatform-Instanzen können angemeldet werden. Damit wird die Deklaration fremder Regelwerke in der eigenen system.ini unnötig. Die Definition kann dann bei [NewImport] oder mit ExternalValue verwendet werden.

[ExternalINI]
ECM = ../integrationPlatformDVGW/system/system.ini

TASKS

Seit der Version 22.0 der integrationPlatform gibt es zeitgesteuerte Ereignisse. Es wird dabei zwischen globalen Tasks und kanalabhängigen Tasks unterschieden. Zeitpunkte werden im Format dd.mm.YYYY-HH:MM:SS angelegt. Dabei kann für jeden dieser Werte auch ein "*" für einen beliebigen Wert eingesetzt werden. In dieser Section können Makros definiert werden, die dann in [GLOBALTASKS,TASKS] oder in [<Kanal>,TASKS] verwendet werden können.

[TASKS]
; jede Minute 15 Sekunden nach
EVERYMINUTE15 = *.*.*-*.*.15
; An jedem ersten eines Monats um 10 Uhr
FIRST10OCLOCK = 1.*.*-10:00:00

GLOBALTASKS

Globale Tasks sind Ereignisse, die unabhängig von Kanälen am Anfang eines jeden Durchlaufs ausgeführt werden, wenn sie fällig sind. Zur Definition werden jeweils 2 Zeilen benötigt. In der ersten Zeile (TASKS) werden entweder Zeiten (wie in der Section TASKS beschrieben) definert, oder aber es werden die in Tasks definierten Zeiten verwendet. Das kann natürlich auch beliebig kombiniert werden. In der zweiten Zeile (CMD) wird der Befehl, der bei Fälligkeit ausgeführt wird, definiert. Wochentage sind bisher nicht möglich, allerdings könnten dafür Wrapper geschrieben werden, die den Befehl nur an den entsprechenden Wochentagen durchlassen.

[GLOBALTASKS]
TASKS = *.*.*-*.*.45 EVERYMINUTE15
CMD = TriggerStateMonitor
TASKS = FIRST10OCLOCK
CMD = CreateMonthlyFolder

KANAL (vormals Import)

Für jeden Kanal ist eine eigene Section zu definieren. Wenn also ein Clientscript z.B. Dokumente, Akten und Adressen erzeugt , so sind mindestens 2-3 Sections zu definieren.

ACHTUNG: Es dürfen keine "-" im Namen der Section vorhanden sein!


Es sind folgende Schlüssel enthalten:

EXEC_PARAM_<parametername>

Dieser experimentelle Parameter sorgt bei 1 dafür, dass der Parameter als Code und nicht als String interpretiert wird, wenn der Parameter bestimmte Voraussetzung erfüllt (s. gleichnamigen Parameter und GLOBAL).

Internal_Key

Regelwerkslizenz, alternativ kann ein Kanal auch über eine Lizenzdatei freigeschaltet werden.

Nur gekaufte Kanäle dürfen lizenziert werden!

Name

Name des Importprozesses


Service

Der Name des verbundenen SERVICE.

Service = Vicos

Active

0 = Teilimport ist abgeschaltet

1 = Teilimport ist eingeschaltet


Achtung: Ist der Kanal als Dependency (checkDependencies ) definiert, so wird er in diesem Kontext ggf. trotz Inaktivität ausgeführt!

Optional, default == 1


NoProcessing

Wenn lediglich ein Vorprozess (Function) ausgeführt werden soll aber keine dateibasierte Operation, dann kann seit der Version 22.0 der integrationPlatform der Parameter NoProcessing auf 1 gestellt werden. Als Resultat werden die Dateiverzeichnisse (Source, Target, Error, ...) und die Mappingdatei ignoriert. Auch FunctionIfData wird nicht ausgeführt, es gibt ja keine Daten!


Optional, default == 0

InitCMD

Code, der einmalig beim Anmelden des Imports ausgeführt wird, es können mehrere InitCMD-Zeilen definiert werden.

UseService

UseService definiert, welchem Jobserviceobjekt dieser Kanal zugeordnet wird (maximal 1 gesetztes Bit). Dieser Parameter ist nur dann optional, wenn global nur maximal eine Jobserviceinstanz definiert ist oder wenn, was empfohlen ist, der Service statt des Jobs verwendet wird. Wenn der verwendete Service über der Parameter Service verbunden ist (was inzwischen empfohlen ist), dann wird UseService nicht verwendet, sondern der TYPE aus der Servicedefinition!

Priority

Numerischer Wert für die Priorität, je kleiner der Wert desto höher die Priorität. Die Kette der Kanäle wird in der Reihenfolge der Prioritäten (kleine Zahlen zuerst) untersucht, bis ein Kanal verarbeitet wird. Dann beginnt das ganze von vorne. Allerdings greift noch die Dependency-Regel, wenn Daten zur Verarbeitung vorliegen.

ACHTUNG: Der Begriff Priority ist ein Pflichtfeld in den Kanälen und darf in anderen Sections nicht verwendet werden!

TASKS

Für die Kanäle verhalten sie die Tasks (Format siehe Section TASKS und GLOBALTASKS) wie folgt. Die Kanäle schlafen (s. SetSectionSleepState), bis sie den entsprechenden für die nächste Ausführung erreichen. Dann werden sie einmalig ausgeführt und bis zur nächsten Fälligkeit wieder schlafen gelegt. Sollen die Ausführung nur an einem definierten Wochentag erfolgen, so kann TASKS mit RUNNINGTIME* kombiniert werden.

TASKS  =  FIRST10OCLOCK *.*.*-12:00:00 *.*.*-14:00:00

TIPP: Im Szenario, dass einmalig aus einer Quelle viele Daten erzeugt werden, die dann aber alle auch sofort verarbeitet werden sollen, hilft es ja nicht, wenn der Prozess sofort wieder schlafen gelegt wird. In diesem Fall kann in der Mappingdatei dafür gesorgt werden, dass das Schlafende mit der aktuellen Zeit überschrieben wird. Das passiert dann solange, bis keine Datei mehr mit der Mappingdatei verarbeitet wird. Falls in der Zwischenzeit neue Daten anfallen, müssen weitere Überprüfungen eingebaut werden. Das Überschreiben des Endzeitpunktes kann z.B. durch folgenden Eintrag in der Mappingdatei passieren:

= SetSectionSleepState -interval 0 -sleep 1

DirectProcessing

1 = Daten werden als "DirectARC" importiert

0 = Daten werden nicht als "DirectARC" importiert

graphic

Anmerkung:

Wenn Dokumente auf ein Device mit der Einstellung "DirectARC" importiert werden, so versucht der DSService diese sofort in PDF zu wandeln.

Da dieser Wandlungsvorgang länger dauert, als der Importvorgang können Importe mit der Einstellung "DirectProcessing=0" in der Kombination mit der Einstellung  StartThreads zurückgehalten.

Empfehlung:

Adress- und Aktenimporte , sowie Dokumentimporte bei denen die PDF-Datei bereits vorhanden ist, können mit "DirectProcessing=0" und "StartTreads=0" importiert werden.

Dokumentimporte, bei denen noch Wandlungen stattfinden müssen (z.B. TIF- oder DOC-Dateien), sollten mit "DirectProcessing=0" und "StartTreads=20" importiert werden.

Optional, default == 0

ImportBatch

Pfad und Names des Importbatches


Bei UseJobService <> 0 darf kein Batch definiert sein!

SourceDir

Ort, an dem die Daten von dem Clientscript abgelegt werden, damit sie vom Importserver weiter verarbeitet werden können. Die Daten können direkt in diesem Verzeichnis abgelegt sein, oder als numerische Unterordner ohne führende Nullen (s. dirCounter).

In der Einstellung "dirCounter = 1" muss der Ordner während des Schreibvorganges vom Clientscript durch eine Lockdatei gesperrt werden (s. LockFileName). Wenn das Clientscript neue numerierte Ordner anlegt, so muss die Nummer immer größer sein, als der größte vorhandene Order.


TargetDir

Bei UseJobservice == 0 das Zielverzeichnis, von dem aus die Daten importiert werden. Der Ordner und die Unterordner (s. [IMPORTDIRS]) können vom Importserver selbstständig erstellt werden.

Bei UseJobservice == 2 das Zielverzeichnis, in das die Daten gespeichert werden sollen.

BackupDir

Bei UseJobService <> 0 wird mit diesem Parameter definiert, wohin die Quelldateien gesichert werden. Ist der Parameter leer oder fehlt ganz, so erfolgt keine Sicherung.

Bei BackupSubDirs==1 werden Jahres- und Monatsunterordner verwendet.

BackupSubDirs

Steuert, ob Unterordner in der Form /JJJJ/MM verwendet werden sollen.

Optional, default == 0

maxWorkTime

Die Zeit, die der Import maximal dauern darf (z.B 120 Sekunden). Wird diese Zeit überschritten, so wird je nach Konfiguration (s. StopOnError) das Script beendet oder der aktuelle Teilimport beendet oder bei CLOSEONTIMEOUT = 0 werden die liegengebliebenen Dateien gesichert und es wird nur gewarnt.

Der Parameter kann weggelassen werden, wenn UseJobService == 1 gesetzt ist.

StartThreads

Threadgrenze, die bei der Einstellung DirectProcessing == 1 unterschritten werden muss, damit dieser Teilmport starten kann.

Ein geeignet Wert ist z.B. 20

StartThreads kann weggelassen werden, wenn DirectProcessing == 0 gesetzt ist oder wenn die Defaulteinstellung 20 passt.


CheckLockfile

1 = Prüfung an

0 = Prüfung aus

Soll vor dem Teilimport geprüft werden, ob ein Lockfile (s.CheckLockfile ) vorhanden ist.

Ist bei eingeschalteter Prüfung ein Lockfile vorhanden, so wird der Import nicht durchgeführt.

Optional, default == 0


LockFileName

Name des Lockfiles, z.B. Lock.dat.

Optional, default == lock.dat, "" bei UseJobservice == 2.

DeleteLockedDirTime

Zeit in Sekunden, bis der Importservice ein Verzeichnis und die enthaltene Lockdatei unter folgenden Voraussetzungen löscht: •Der Ordner ist ein numerischer Ordner (dirCounter == 1) •Im Ordner befindet sich genau eine Datei und zwar die definerte Lockdatei •Die hier definierte Zeit ist verstrichen •Der Zeitstempel der Lockdatei (mtime) hat sich während der Überwachungszeit nicht geändert. •Eine 0-Defintion deaktiviert die Autolöschfunktion.

Beispiel: DeleteLockedDirTime = 5


Optional, default == 10.


RunningTime*

Mit den RunningTime-Befehlen kann gesteuert werden, in welchen Zeiträumen Importe aktiv sind. Ach global kann der Parameter jetzt benutzt werden, wobei die Einstellung am Import die globale Einstellung überschreibt.

Es gibt folgende Befehle

RUNNINGTIMEEVER: jeder Tag
RUNNINGTIMEWEEK: jeder Wochentag (MO-FR)
RUNNINGTIMEWEEKEND: jeder Tag am Wochenende (SA+SO)
RUNNINGTIMEMO: Montag
RUNNINGTIMETU: Dienstag
RUNNINGTIMEWE: Mittwoch
RUNNINGTIMETH: Donnerstag
RUNNINGTIMEFR: Freitag
RUNNINGTIMESA: Samstag
RUNNINGTIMESU: Sonntag

Dabei sind die Wochentagsbefehle höher gewichtet als *WEEK und *WEEK und Wochentag höher als *EVER.

Ein Zeitraum kann einschließend (10:00:00-11:00:00) oder ausschließend (14:00:00-12:00:00, alles außer 12:00:00-14:00:00) definiert werden. Es können bei jedem Befehl mehrere Zeiträume definiert werden.

RUNNINGTIMEMO = 18:00:00-06:00:00 12:00:00-13:00:00  

Das gilt ab Version 19.0.9.1963.

Die Einstellungen können auch global vorgenommen werden, dann sind sie überall gültig, wo nichts abweichendes definiert wurde.

dirCounter

1 = numerierte Unterverzeichnisse

0 = alle Daten in einem Verzeichnis

Werden numerierte Unterverzeichnisse mit definierter Paketgröße verwendet?

Beim Dokumentenimport sollten numerierte Unterverzeichnisse verwendet werden. Die Anzahl der Dateipärchen wird vom Clientprozess definiert, sie sollte jedoch 50 nicht überschreiten.

Je kleiner diese Größe gewählt wird, desto eher können Tagesaktuelle Daten Zwischendurch verarbeitet werden.

Eine sinnvolle Größe liegt zwischen 20 und 50.

Ist der dirCounter auf 0 gestellt, so werden maximal maxFiles Dateien importiert.

Optional, default == 1.

Bei UseJobService == 1 muss der Wert 1 sein!

maxFiles

Anzahl der Dateien, die bei der Einstellung dirCounter = 0 maximal importiert werden.

Optinal, default == 50.


MAX_COLLECT_FILES

Sollen mehrere numerische Unterordner vor dem Import zusammengefasst werden, so kann das durch den Parameter MAX_COLLECT_FILES erreicht werden.

Es wird eingegeben, wie viele Dateien maximal an das Importverzeichnis übergeben werden. Ein Ordner wird mindestens übergeben. Weitere Ordner werden solange übergeben, bis die Anzahl der Dateien im Importverzeichnis mit dem nächsten Ordner die definierte Anzahl überschreiten würde.

Dann wird der Importbatch gestartet und der Importserver anschließend fortgeführt.

Vorsicht:

Sollten sich in den Unterordnern Dateien mit gleichem Dateinamen befinden, so überschreibt die 2. Datei die 1. ohne Warnung!

Der Parameter wirkt nur in Kombination mit dem Schalter dirCounter == 1.

Optional, default = 0.


Bei UseJobService == 1 muss der Wert 0 sein!

IDXFileExtension

Extension der Indexfiles


FileToInclude

1 = Import von Dokumentdaten

0 = Kein Import von Dokumentdaten

Sollen außer der Verschlagwortung (Indexfiles s.IDXFileExtension) auch Dokumentdaten importiert werden?

Die Dokumentdaten haben die Extension FileToIncExtension.

Optional, default == 0


FileToIncExtension

Extension der Importdokumente (s. FileToInclude)

Optional, default == "PDF"


FileToIncRequired

Muss die Dokumentdatei vorliegen?

Optional, default == 1.


NoFileToIncEvent

Nachricht, wenn keine Datei vorhanden ist.

Optinal, default == "P".


CouldNotOpenIDXFile

Meldung, dass die Datendatei nicht geöffnet werden konnte, da sie z.B. gesperrt ist

Optional, default == "P-E-I-W".


copyAll

1 = komplettes Zielverzeichnis wird ohne weitere Prüfung an das Importverzeichnis übergeben

0 = es greift der Mechanismus, das nur IDX-Dateien und (wenn definiert) die dazugehörigen DOC - Dateien verschoben werden

Optinal, default == 0.

Bei UseJobService =1 muss der Wert 0 sein!


checkDependencies

Bei eingen Importen ist es notwendig, das Teilimporte erst dann starten, wenn andere Teilimport komplett abgearbeitet worden sind.

Die Teilimporte, die schon fertig sein müssen, werden als Liste (Leerzeichengetrennt) definiert:

z.B. checkDependencies = IMPORT3 IMPORT5

wobei die Bezeichnungen den Sektionsbezeichnungen entsprechen.

Optional, default == ""


ACHTUNG: Durch einen "Bug" im Caching von (oder ab?) Windows Server 2008 R2 funktioniert das ggf. nur noch auf lokalen Laufwerken, da Windows die Information, dass Dateien auf einem Netzwerklaufwerk bereitgestellt wurden, nicht immer zeitnah und vor allem in falschen Reihenfolge bereitstellt.


Vorsicht: Deaktivierte Importe (Active) werden trotzdem verwendet.


checktrg

Überprüfung der Import-Triggerdatei im Temp-Verzeichnis des Imports. Wenn checktrg = 1 und Triggerdatei vorhanden, dann wird der Import abgemeldet und eine Mail versendet (wenn der globale Parameter Sendmail = 1 ist).

Optional, default == 1.


TRGFILE

Name der Triggerdatei. Die Kombination TRGFILE und TRGPATH muss bei UseJobService=1 eindeutig sein.


Webserviceimport:

(optional, default = "<IMPORTxxx>.trg")

BatchImport:

(optional, default = import.trg)

TRGPATH

Pfad der Triggerdatei, die einen Import temporär sperrt. Die Kombination TRGFILE und TRGPATH muss bei UseJobService=1 eindeutig sein.


Webserviceimport:

(optional, default =WORKDIR )

Batchimport:

(optional, default = ..TARGETDIR/temp)

CHECKTRGAFTER

Schauen nach Triggerdatei direkt nach der Verarbeitung.

Optional, default == 1.


checktarget

Das Targetverzeichnis (z.B. ../ready4import) wird untersucht, ob es leer ist. Sollten Daten vorhanden sein und der Parameter auf 1 stehen, so wird der Import abgemeldet und wenn knonfiguriert, eine Warnmail verschickt.

Mit 0 wird diese Funktion deaktiviert.

Optional, default == 1.


Bei UseJobService == 1 wird der Wert automatisch auf 0 gesetzt.


CheckErrorDir

Das ErrorDir wird auf vorhandene Dateien untersucht.

Wenn Dateien vorhanden sind, benachrichtigt der Importserver. Danach wird diese Funktion bis zum nächsten Start des Importservers deaktiviert.

CheckErrorDir wird automatisch eingeschaltet, wenn CheckDirEmpty aktiv ist.

Optional, default == 1


Dateien im Errorordner sollten immer untersucht werden, da sie auf Fehler in den Importdefinitionen oder -Daten hinweisen.


ForceCheckErrorDir

Die folgenden Ausführungen sind nur dann relevant, wenn CheckErrorDir aktiviert ist!

Die Meldung von fehlerhaften Daten wird nach jeder Meldung für den entsprechenden Importkananl abgeschaltet. Ist dieser Parameter aktiviert, so wird die Meldung nach Ablauf von ForceCheckErrorDirInterval wieder aktiviert.

Wenn das ErrorDir geleert wird, so wird die Meldung immer wieder aktiviert.

Optional, default == 1


ForceCheckErrorDirInterval

Die folgenden Ausführungen sind nur dann relevant, wenn ForceCheckErrorDir aktiviert ist!

Das Interval, wie lange die Information, dass Dateien im ErrorDir liegen, nicht gesendet wird, in Sekunden.

Optional, default == 86400 (= 1 Tag)


ErrorDir

Errorverzeichnis des Imports. Dieses Verzeichnis muss definiert sein, wenn der Parameter CheckErrorDir = 1 gesetzt ist oder wenn CLOSEONTIMEOUT = 0 ist.


CheckDirEmpty

Es wird im Falle, dass ein Importverzeichnis nicht löschbar ist, geprüft, ob sich im Verzeichnis noch Dateien befinden. Wenn ja, dann werden diese in das Errorverzeichnis geschoben. Wenn das nicht klappt, wird der Import ausgeschaltet.

Ist diese Funktion ausgeschaltet, so wird der Import im Fehlerfall sofort ausgeschaltet.

Optional, default == 1.

Function

Hier kann eine benutzerdefinierte Funktion aus dem Include-Verzeichnis aufgerufen werden, die in Abhängigkeit von benutzerdefinierten Szenarios einer Rückgabewert 1 (Import ausführen) oder 0 (Import nicht ausführen) hat.

Optional.


Diese Funktion kann auch verwendet werden, um Vorprozesse zu starten. So wird im folgenden Beispiel immer eine Datei (+ zugehörige Dateien) aus dem definierten Quellverzeichnis genommen und in ein neu generiertes numerisches Unterverzeichnis verschoben. Danach wird die Datei verarbeitet.

FUNCTION = ::MakeSubDir::MakeSubDir $counter -seconds 3


FunctionIfData

Hier kann eine benutzerdefinierte Funktion aus dem Include-Verzeichnis aufgerufen werden, die in Abhängigkeit von benutzerdefinierten Szenarios einer Rückgabewert 1 (Import ausführen) oder 0 (Import nicht ausführen) hat. Im Gegensatz zu Function wird sie allerdings nur dann ausgeführt, wenn Daten zu Import bereitstehen. Ein sinnvolles Einsatzszenario ist z.B. die Überprüfung des Status eines Webservices vor dem eigentlichen Senden der Daten.

Optional.


FUNCTIONIFDATA = CheckInvoiceWebserviceAvailable

UseJobService

Wenn dieser Parameter auf 1 gesetzt ist, dass wird der Import über die Corsa Webserviceschnittstelle durchgeführt.

Dieser Parameter ist optional und wird defaultmäßig wie der UseJobService eingestellt. Also müssen nur abweichende Importe explizit definiert werden.

Bei UseJobService = 2 ist die Verwendung der mapping.ini aktiv, es wird jedoch kein CorsaWebService verwendet. So kann auch die CIMINER-Funktionalität verwendet werden, wenn kein Corsa im Spiel ist.


Folgende Parameter müssen wie folgt konfiguriert werden: •dirCounter = 1 •MAX_COLLECT_FILES = 0 •ImportBatch = •copyAll = 0 •TRGPATH und TRGFILE zusammen müssen eindeutig sein


ABORTIFERROR

Wenn dieser Parameter aktiviert ist, so wird ab der Stelle eines auftretenden Fehlers bei der Interpretation der mapping.ini die Verarbeitung abgebrochen. Lediglich die Zuweisung der Objekt-ID und die DECLARE- und ERROR-Section werden noch ausgeführt.

Optional, default == <ABORTIFERROR>.


Disable@ProcessError

Wenn dieser Parameter aktiviert ist, so wird bei einem internen Fehler während der Verarbeitung der Import aus der Verarbeitungskette herausgenommen.

Optional, default == 0.


Disable@IDXError

Wenn dieser Parameter aktiviert ist, so wird bei einem internen Fehler während der Interpretation der Mappingdaten der Import aus der Verarbeitungskette herausgenommen.

Optional, default == 0.


Encoding

Encoding der Indexdatei und der verwendeten Mappingdatei.

Optional, default == "utf-8"

Beide Dateien benötigen das gleiche Encoding.

Mapping_Encoding

Das Encoding der Mappingdatei kann überschrieben werden, wenn Index- und Mappingdatei ein unterschiedliches Encoding haben.

Optional, default == <Encoding>

RecordSep

Definition des Zeilentrenners als ausführbarer TCL-Code.

Optional, default == {Return "\n"}.

Dieser Wert kann auch global gesetzt werden,

z.B.:

RecordSep = format %c 255

ValueSep

Definition des Wertetrenners, der einzelne Listenelemente eines Feldes trennt.

Optional, default == {Return "\|"}

Dieser Wert kann auch global gesetzt werden.

z.B.:

ValueSep= Return \|


Hinweis: der Parameter kann jetzt auch global gesetzt werden und wird dann immer verwendet, wenn er im Import nicht überschrieben wird!

ColSep

Definition eines Spaltentrenners als ausführbarer TCL-Code.

Optional, default == {Return "\;"}

Dieser Wert kann auch global gesetzt werden.

ColSep = Return \n

MappingFile

Mapping.ini Datei mit Pfad, in der das Mapping zwischen Index- und Jobdatei definiert ist.


z.B.:

MappingFile = ./mapping/mitglieder_mapping.ini


MAPPINGRULE

Definition einer Regel zur Verwendung einer alternativen mapping.ini Datei.

Die Zeile wird interpretiert, d.h. es sind gültige TCL-Befehle oder für den Importservice definiert Funktionen aus dem ./include-Verzeichnis anzugeben. Der Rückgabewert muss ein boolscher Wert sein.

Trifft die erste Regel, so wird die definierte Mappingdatei (MAPPINGFILEIF) verwendet und die Suche abgebrochen.

Es können beliebig viele Regeln definiert werden, oder aber es wird keine Regel definiert und immer MappingFile verwendet.

Folgende Variablen können dabei verwendet werden:

$filename
Pfad+Name der Datendatei
$totalText
Inhalt der Datendatei
$line
Die aktuelle Zeile aus der Datendatei im Modus isCSV > 0
$actualLineCounter
enthält die laufende Nummer der aktuellen Zeile aus der Datendatei im Modus isCSV > 0


Wenn isCSV > 0 gesetzt und eine Leerzeile vorhanden ist (z.B. durch einen Zeilenumbruch am Ende der letzten Datenzeile), so kann ein MappingFile verbunden werden, das nur die Section [global] mit Dummydaten enthält, sofern der Schalter CreateEmptyMeta auf 0 gesetzt ist.

MAPPINGRULE       = regexp {seachvalue} $totalText
MAPPINGFILEIF    = ./mapping/erp3_mapping.ini
MAPPINGRULE       = expr {$line eq ""}
MAPPINGFILEIF     = ./mapping/empty_mapping.ini

Bei Dateinamen:

;Wenn keine Regel aus MAPPINGRULE greift
MappingFile          = ./mapping/formular_mapping.ini
;Wenn Dateiname mit FORMULAR1 beginnt
MAPPINGRULE          = regexp {(?i)FORMULAR1} [file tail $filename]
MAPPINGFILEIF        = ./mapping/F1_mapping.ini
;Wenn Dateiname mit FORMULAR2 beginnt
MAPPINGRULE          = regexp {(?i)FORMULAR2} [file tail $filename]
MAPPINGFILEIF        = ./mapping/F2_mapping.ini

Bei Dateiinhalten:

MappingFile          = ./mapping/m2c_full_mapping.ini
;E-Mail Anhänge
;Wenn in Spalte 0 "ATTACHMENT" steht
MAPPINGRULE          = expr {[lindex $line 0] eq "ATTACHMENT"}
MAPPINGFILEIF        = ./mapping/m2c_atta_mapping.ini

MAPPINGFILEIF

Pfad und Name der alternativen Mappingdatei, die dann verwendet wird, wenn die direkt darüber definierte Regel trifft.

MAPPINGRULE       = regexp {seachvalue} $totalText
MAPPINGFILEIF      = ./mapping/erp3_mapping.ini

METHOD

Definition der Standardmethode des Webservice. Wird noch die alte Anbindung über JOBS_* verwendet, so lautet der Parameter JOBS<n>_METHOD.

METHOD = *self*/PostSupplierData

Das *self* wird durch die Methodendeklaration beim verbundenen Serviceobjekt ersetzt. So können dort z.B. allgemeingültige Teile des Methodenpfades definiert werden, die dann in den einzelnen Kanälen noch ergänzt werden.

METHODRULE

Definition einer Regel zur Verwendung eines alternativen Webservice.

Die Zeile wird interpretiert, d.h. es sind gültige TCL-Befehle oder für den Importservice definiert Funktionen aus dem ./include-Verzeichnis anzugeben. Der Rückgabewert muss ein boolscher Wert sein.

Trifft die erste Regel, so wird der definierte Webservice (METHODIF) verwendet und die Suche abgebrochen.

Es können beliebig viele Regeln definiert werden, oder aber es wird keine Regel definiert und immer JOBS<n>_METHOD verwendet.

Folgende Variablen können dabei verwendet werden:

$filename Pfad+Name der Datendatei $totalText Inhalt der Datendatei $line Die aktuelle Zeile aus der Datendatei im Modus isCSV > 0 $actualLineCounter enthält die laufende Nummer der aktuellen Zeile aus der Datendatei im Modus isCSV > 0

METHODIF

Die angegebene Methode wird aufgerufen, wenn die zugehörige Regel (METHODRULE) true liefert

METHOD                = *self*/WEB_NOTDEFINED_CONNECTRETRY_ERROR
METHODRULE            = regexp {<CHANGEDATA>} $totalText
METHODIF              = WEB_CHANGE_DATA_BY_UNIQUEID
METHODRULE            = regexp {<OFFER>} $totalText
METHODIF              = WEB_WRITE_OFFERCASE

Das *self* kann auch bei den METHODRULE-Parametern verwendet werden, allerdings wird es immer gegen die METHOD-Definition am Serviceobjekt ausgetauscht. Eine METHODRULE-Anweisung am Serviceobjekt ist nicht sinnvoll.

CLOSEONTIMEOUT

Dieser Parameter bewirkt, dass nach einem Timeout (s. maxWorkTime) der Import abgemeldet wird.

In ganz speziellen Szenarios kann es erforderlich sein, dass aus Performancegründen liegengebliebenen Dateien im ErrorDIr gesichert werden und der nächste Import normal gestartet werden kann.

Vorsicht: Liegengebliebene Prozessleichen können die Systemstabilität beeinflussen. Außerdem sollte auf dieses Vorgehen verzeichtet werden, wenn Abhängigkeiten (checkDependencies ) bestehen.

Optional, default == 1

CLEANTARGETBEFORE

Dateien, die im Zielverzeichnis (z.B. nach einem Timeout) liegen geblieben sind, werden aufgeräumt, d.h. in ein Unterverzeichnis des ErrorDir verschoben.

Optinal, default == 0

Wenn der Import ein Webserviceimport ist, so wird der Parameter automatisch auf 0 gestellt.


RetryUpload

Anzahl der Versuche, wie oft ein gescheitertes Übertragen eines Datenpaketes beim Upload versucht werden soll.

Optional, Standard globales RetryUpload


TimeoutAppendChunk

Timeout in ms, bis die http-Verbindung beim Hochladen des Datenpaketes abgebrochen wird.

0 bedeutet kein Timeout.

Optional, Standard globales TimeoutAppendChunk


TimeoutCreateFile

Timeout in ms, bis die http-Verbindung beim Verbinden des hochgeladenen Dokumentes mit der Registrierung und beim Schreiben ins DS abgebrochen wird.

0 bedeutet kein Timeout.

Optional, Standard globales TimeoutCreateFile


ChunkSize

Größe des Chunks beim Upload in Byte (z.B. 750000).

Optional, Standard globale ChunkSize


isCSV

Wird dieser Schalter auf 0 gesetzt, so wird die CIMINER-Funktionalität eingeschaltet und keine CSV-Datei mehr erwartet. Das Regelwerk wird per Mapping.ini definiert.

Ist isCSV auf 0 gesetzt, so befindet sich der gesamte Inhalt der Datendatei in %_TOTALTEXT%.

Es ist eine separate Lizenzierung erforderlich!

Bei isCSV == 1 werden CSV-Dateien lt. StratOz Indexdateienformat interpretiert, bei CSV == 2 streng nach CSV-Definition, bei CSV == 3 wird (experimentell) sogar gequoteter Zeilen- und Spaltentrenner unterstützt, was beim csv-Package nicht der Fall ist. Bei isCSV == 4 wird der Micorosoft CSV-Standard unterstützt (\n im Text werden aber nicht unterstützt).

Optional, default == 1

UseEmptyValues

Sollen Leerdaten an Corsa übergeben werden?

Leere Werte überschreiben gefüllte Werte in Corsa. Soll das verhindert werden, so muss mit UseEmptyValues == 0 gearbeitet werden. Leerfelder werden dann gar nicht übertragen.

Sollen einzelne Felder trotzdem übertragen werden, wenn sie leer sind, so kann das mit ForceToClearValue erreicht werden.

Optional, default == 0

ForceToClearValue

Ist der Wert des System- oder Zusatzfeldes aus der Mapping.ini gleich dem hier definierten Wert, so wird das entsprechenden Corsafeld leer gesetzt. Der Schalter kann sowohl im Import, als auch global definiert werden.

Optional, default ist <EMPTY>


ForceToClearValue = <EMPTY>


Diese Felder werden dann auch übertragen, wenn UseEmptyValues == 0 gesetzt ist.

CheckVersionNo

Die Versionsnummer wird überprüft, um für den theoretischen Fall, dass der Importservice nach Upload einer Datei aber vor der Bestätigungsverarbeitung abgeschossen wird, eine Doppelanlage der Datei zu vermeiden. Die Aktivierung dieser Funktion bietet maximale Sicherheit, belastet jedoch geringfügig die Performance.

Optional, Standard globales CheckVersionNo

OverwriteVersion

Dieser Schalter wird nur bei aktivierter Versionsprüfung CheckVersionNo verwendet. Ist er aktiviert, so wird eine vorhandene Dateiversion einfach überschrieben, ansonsten gibt es eine Fehlermeldung in der Jobverarbeitung und die Datei wird nicht überschrieben.

Optional, Standard globales OverwriteVersion


SHA256

Steuerung der Überprüfung des Uploads mit Hilfe des SHA256-Vergleichs, der Standard ist 1. Die Importdefinition überschreibt die globale Definition.

Bei 0 erfolgt kein Vergleich. Bei 1 wird der SHA256 automatisch generiert und mit dem Corsawert verglichen. Bei Übergabe des SHA256 wird dieser verwendet und mit dem Corsawert verglichen. Das ist immer dann sinnvoll, wenn er sowieso schon generiert wurde.

 SHA256 = 1

NATSHA256

Steuerung der Überprüfung des Uploads mit Hilfe des SHA256-Vergleichs, der Standard ist 1. Die Importdefinition überschreibt die globale Definition.

Bei 0 erfolgt kein Vergleich. Bei 1 wird der SHA256 automatisch generiert und mit dem Corsawert verglichen.

 NATSHA256 = 0


NATDELETEVERSION

Es wird definiert, ob alle Versionen (falls von den Rechten möglich) oberhalb der in [[[mapping.ini]]/UPLOAD,NATVERSION] angegebenen Version gelöscht werden sollen. Diese Angabe ist optional, als Standard wird die Einstellung der globalen Definition in der system.ini verwendet.

 NATDELETEVERSION = Return 0


DELETEVERSION

Solange das Löschen von Versionen nur bei NAT zu definieren ist, ist diese Befehl identisch zu NATDELETEVERSION

ARCSHA256

Steuerung der Überprüfung des Uploads mit Hilfe des SHA256-Vergleichs, der Standard ist 1. Die Importdefinition überschreibt die globale Definition.

Bei 0 erfolgt kein Vergleich. Bei 1 wird der SHA256 automatisch generiert und mit dem Corsawert verglichen. Bei Übergabe des SHA256 wird dieser verwendet und mit dem Corsawert verglichen. Das ist immer dann sinnvoll, wenn er sowieso schon generiert wurde.

 ARCSHA256 = 1

OCRSHA256

Steuerung der Überprüfung des Uploads mit Hilfe des SHA256-Vergleichs, der Standard ist 1. Die Importdefinition überschreibt die globale Definition.

Bei 0 erfolgt kein Vergleich. Bei 1 wird der SHA256 automatisch generiert und mit dem Corsawert verglichen. Bei Übergabe des SHA256 wird dieser verwendet und mit dem Corsawert verglichen. Das ist immer dann sinnvoll, wenn er sowieso schon generiert wurde.

 OCRHA256 = 0

TMBSHA256

Steuerung der Überprüfung des Uploads mit Hilfe des SHA256-Vergleichs, der Standard ist 1. Die Importdefinition überschreibt die globale Definition.

Bei 0 erfolgt kein Vergleich. Bei 1 wird der SHA256 automatisch generiert und mit dem Corsawert verglichen. Bei Übergabe des SHA256 wird dieser verwendet und mit dem Corsawert verglichen. Das ist immer dann sinnvoll, wenn er sowieso schon generiert wurde.

 TMBSHA256 = 0

DSTaskPrio

Einstellung der Priorität für die DS-Aktionen. Erlaubte werden sind "L","N" und "H". Die Importdefinition überschreibt die globale Definition.


CreateFV

Definiert die CreateFileVersion Methode, die vom Corsa Webservice aufgerufen wird. Die Importdefinition überschreibt die globale Definition.

MAPPING_ERROR

Protokollnachricht, die dann greift, wenn bei der Interpretation der Daten mit dem Mapping-Regelwerk ein Fehler auftritt.

Vermutlich ist eine E-Mail an dieser Stelle ganz sinnvoll, da die Transaktionserstellung komplett abgebrochen wird und die Quelldatei ins Errorverzeichnis (ERROR) geschoben wird.

Vor dem Senden dieser Message kann eine Fehlerhandling via ERROR ausgeführt werden.

Optional, default == "P-E"


AdaptTotaltext

Wenn in den Indexdaten fehlerhafte Zeichen vorhanden sind und dieser erst einmal auf die Indexfelder verteilt sind, dann ist es aufwändig, diese Zeichen zu behandelt, weil das ggf. für jedes Feld einzeln erfolgen muss. Seit der Verion 22.16 gibt es die Möglichkeit diese Korrekturen schon direkt nach dem Einlesen des Textes vorzunehmen. Damit können dann z.B fehlerhafte Zeichen entfernt oder aber auch Informationen hinzugefügt werden. Der Inhalt nach dem Auslesen befindet sich in der Variablen $totalText.

AdaptTotaltext = dom clearString $totalText


TranslateCRLF

Es ist nicht möglich, ein \n direkt an die Jobserviceklasse zu übergeben. Das Zeichen muss ersetzt werden und wird dann automatisch, da wo es umgesetzt ist (z.Zt Anlage/Ändern eines Objektes mit System- und Zusatzfeldern und ObjektMemo), in der Jobklasse zurückgesetzt.

Dieser Parameter definert einen eindeutigen Ersetzungsstring.

Optional, default == <http://imps.stratoz.de/index.php/System.ini#TranslateCRLF>.

filterCMD

Mit dem filterCMD ist es möglich für eine parallel Verarbeitung durch mehrere Importservices zu sorgen. Mit dem Filter werden aus der Liste der Unterordner bei dirCounter==1 mit dem zu definierendem Kommando Elemente herausgefiltert, die dann importiert werden. Mit der Variablen $dir wird das entsprechende Verzeichnis definiert, wenn die Verzeichnisliste von der integrationPlatform iteriert und mit dem entsprechenden Kommando verarbeitet wird.

Der Pfad des übergeordneten Ordners befindet sich in $::main::importDir. Alle Unterordner befinden sich in $dirList.


Beispiel:

Importservice 1 nur die geraden Ordner werden verarbeitet

FILTERCMD = expr {$dir % 2 == 0}

Importservice 2 nur die ungeraden Ordner werden verarbeitet

FILTERCMD = expr {$dir % 2 == 1}


nimm nur Ordner, die seit mindestens 5 Sekunden vorhanden sind

FILTERCMD = expr {[clock seconds] - [file atime $dir] > 5}

nimm nur Ordner, die Zahlen im Namen haben

FILTERCMD = regexp {^\d+$} $dir


Achtung: Diese Funktion darf nicht verwendet werden, wenn Daten enthalten sein können, die vorherige Daten überschreiben, da die richtige Verarbeitungsreihenfolge zwischen den einzelnen Importservices nicht überprüft wird.

Achtung: Die Regeln dürfen nicht so definert werden, dass ein Ordner von mehreren Importservices geholt werden soll. Es gibt keine Lockmechanismen!

Achtung: Änderungen in der Konfiguration der Importservices dürfen erst dann vorgenommen werden, wenn sichergestellt ist, da keine offenen Transaktionen mehr existieren, damit nicht ein umkonfigurierter Importservice auf einen Ordner zugreift, der bei einem anderen schon in der Verabeitung ist.


Ausblick: Dieser Einstiegspunkt kann auch verwendet werden, um z.B. einen datenbankbasierten Lockmechanismus zu definieren.

Folgender exemplarischer Ausdruck protokolliert den aktuellen Ordner mit ganzem Pfad und die gibt Ordner 1 und 99 zurück (das return bricht die Iteration ab!):

FILTERCMD = set subDirs {1 99}; return

REFRESH_DIRS

Mit REFRESH_DIRS wird definiert, ob die einzelnen Ordner im Quellorder bei jedem Durchlauf neu eingelesen werden.

Dieser Parameter kann sowohl global als auch beim Import definiert werden. Ist er nicht definiert, so werden die Ordner nicht neu eingelesen, bis sie komplett verarbeitet sind oder der Service neu gestartet wird.

ACHTUNG: Wenn externe Prozesse zwischendurch Ordner löschen (was eigentlich nicht sein sollte), so muss dieser Parameter auf 1 gesetzt werden!

SecureGlobMaxDuration

Errorhandling: Maximale Zeit in Sekunden, die versucht wird einen weggebrochenen Ordner auszulesen. Das kann auch global definiert werden. (Optional, default == 60).

CreateEmptyMeta

Dieser optionale Parameter steuert, ob bei nicht vorhandenen Zusatz- und Systemfeldern trotzdem ein CreateMeta<type> ausgeführt wird.

Optional, default == 0

MaxLines4VarTab

Der Schwellwert der Zeilen, die in eine VarTab maximal hochgeladen werden.

Gezählt werden die Zeilen der CSV-Datei, nicht die übergeben VARTAB-Zeilen.

Optional, default == 1000.

PROTEMPTYCSV

Wenn die CSV-Datei leer ist, dann wird ein Eintrag im Protokoll hinterlassen.

Optional, default == P

MAXLENGTHDOCID

Anzahl der maximalen Zeichen, die für die Dokumenten-ID in Corsa erlaubt sind. Ist hier eine 0 konfiguriert, so ist die Überprüfung ausgeschaltet.

Optional, default == 10.


WaitBeforeDeleteEmptyDir

Zeit in ms, wie lange der Importservice wartet, bevor er einen leeren Importordner löscht. Diese Zeit ist notwendig, da er der leere Ordner angelegt wird und danach die Lockdatei geschrieben wird.

Wärend dieser Zeit ist der Importservice blockiert

Optional, default == VARIABLEN,WaitBeforeDeleteEmptyDir .

EVENT_NEWIMPORTACTION

Protokolliert beim Aufrufer die Aktion "Kopieren oder Verschieben von Dokumentdateien" bei der Erstellung dieses Importjobs


EVENT_NEWIMPORTCREATEIDX

Protokolliert beim Aufrufer die Aktion "Erstellen der Indexdatei" bei der Erstellung dieses Importjobs


EVENT_NEWIMPORTCREATEDIR

Protokolliert beim Aufrufer die Aktion "Anlegen des numerischen Unterordners" bei der Erstellung dieses Importjobs


EVENT_NEWIMPORTCREATELOCKFILE

Protokolliert beim Aufrufer die Aktion "Anlegen der Lockdatei" bei der Erstellung dieses Importjobs


EVENT_NEWIMPORTDELLOCKFILE

Protokolliert beim Aufrufer die Aktion Löschen der Lockdatei" bei der Erstellung dieses Importjobs


EVENT_CREATENEWSUBDIR

Protokolliert die Anlage eines neuen Jahres-/Monatsunterordnung.

Default == P


EVENTS_*

Überschreibt das gleichlautende (*) globale Event für

USEMAPPINGFILE, PROTGENDATA

PASSCMD

Mit PASSCMD kann ein Pass definiert werden, mit dem definierte Zeilen bei isCSV > 0 durchgelassen werden können. So ist es möglich, bestimmte Zeilen herauszuwerfen, anzuhängen oder zu ersetzen (z.B. Entfernen einer Kommentarzeile oberhalb vom Header).

Dabei befindet sich die CSV Datei als Zeilenliste in der Variablen $lines.


Beispiel:

PASSCMD = lreplace $lines 0 0

USETIMESTAMP

Dieser Parameter steuert, ob die Dateinamen, bevor sie im Fehlerfall in das ErrorDir oder den numerischen Unterordner geschrieben werden, um einen vorangestellten Zeitstempel erweitert werden.

Optional, default == 0.


BACKUP_KEEPNAME

Diese Parameter steuert, ob die Dateien im Backupverzeichnis den Originaldateinamen enthalten (1) oder nicht (0)

Optional, default == BACKUP_KEEPNAME


DELETE_LINKED_UPLOADFILE_DIR

Logischer Schalter (1/0), ob ein leeres Verzeichnis gelöscht werden soll, wenn es ein verlinktes Uploadverzeichnis ist (also z.B. in einer CSV-Indexdatei definiert wurde).

Optional, default == 1


AUTOREADFIELDS

Definiert, ob bei NEWIMPORT die definierten Felder (<NEWIMPORT_FIELDS><NI_FIELDS>...) automatisch in gleichnamige %VARIABLEN% eingelesen werden sollen (optional, default [AUTOREADFIELDS])

AUTOFIELDSSTORETOUPDATE

Definiert, ob die automatisch eingelesenen Variablen auch automatisch in den Uploaddaten erscheinen sollen (bis XML und JSON). Im Standard wird der Wert der globalen Einstellung [AUTOFIELDSSTORETOUPDATE] verwendet.

SETSTORETOUPLOAD

Definiert, ob bei Verwendung von Set die Werte in die Uploadliste geschrieben werden oder nicht. Im Standard wird der Wert der globalen Einstellung [SETSTORETOUPLOAD] verwendet.


LAPPENDSTORETOUPLOAD

Definiert, ob bei Verwendung von Lappend die Werte in die Uploadliste geschrieben werden oder nicht. Im Standard wird der Wert der globalen Einstellung [LAPPENDSTORETOUPLOAD] verwendet.

PRECMD

!!! ACHTUNG, dieser Schalter war vorher als InitCMD doppelt vorhanden !!!

Es können mehrere Kommandozeilen mit PRECMD definiert werden, die von oben nach unten ausgeführt werden. Die Verarbeitung erfolgt vor der Ausführung der Mapping.ini-Dateien. Es können also Zähler, Startvariablen etc. definiert werden.

 PRECMD             = set ::mapping::testValue "TestValue"

LATECMD

Es können mehrere Kommandozeilen mit LATECMD definiert werden, die von oben nach unten ausgeführt werden. Die Verarbeitung erfolgt nach der Ausführung der Mapping.ini-Dateien. Wird LateTCL verwendet, so werden die Befehle sogar erst am Ende der späten Transaktion ausgeführt und eine Reaktion auf den Fehlerstatus ist damit möglich.

 LateCMD             = LateTCL [list LogMessage "mit Fehler in der Verarbeitung und Initwert: $::mapping::testValue"] -mode 0
 LateCMD             = LateTCL [list LogMessage "ohne Fehler in der Verarbeitung"] -mode 1
 LateCMD             = LateTCL [list LogMessage "IMMER - egal ob Fehler oder nicht"]

JOBS<2/4/8>_* bei JOBS und "" bei SERVICE

überschreibt die passenden globalen Definitionen für

SPACES, HOST, PORT, METHOD, RECORDKEY, BIGTA, ROOTTAG, HTTPHEADER, CHECKERRORFUNC, CHECKUPLOADFUNC, UPLOADDATA, HTTPPOST, WRITEJOBID, USERPWD, SSLVERIFYPEER , CURLPARAM, SENDEMPTYDATA, UPLOADFILE, GENDATAWITHOUTCRLF

Wird, wie empfohlen, SERVICE statt JOB<n> verwendet, dann können die Werte ebenfalls überschrieben werden, aber ohne das führende JOBS<n>_

ABORTIFERROR

Wenn dieser Parameter aktiviert ist, so wird ab der Stelle eines auftretenden Fehlers bei der Interpretation der mapping.ini die Verarbeitung abgebrochen. Lediglich die Zuweisung der Objekt-ID und die DECLARE- und ERROR-Section werden noch ausgeführt.

Optional, default == [ABORTIFERROR].

MAXTRIES2MOVE

Anzahl der Versuche, wie oft versucht wird eine Datei zu verschieben (s. auch globale Definition)

0 bedeutet dabei unendlich!

Optional, default == [MAXTRIES2MOVE]

EVENTS_UPLOADFILENOTAVAILABLE

Definition der Warnung, wenn eine hochzuladene Datei nicht vorhanden ist.

Optional, default EVENTS,UPLOADFILENOTAVAILABLE

EVENTS_KILLIMPORTNOMOVE

Definition der Meldung, dass der Import wegen einer nicht verschiebbaren Datei abgebrochen werden muss.

Optional, default EVENTS,KILLIMPORTNOMOVE

DELETEBADFILES

Der Parameter steuert, ob eine unbekannte Datei einfach gelöscht oder in den Errorordner verschoben wird.

Optional, default == DELETEBADFILES

EVENTS_INFOBADFILEDELETE

Protokollierung, dass eine ungültige Datei gelöscht wurde. Der zugehörige Messagetext ist unter INFO_BAD_FILE_DELETE definiert.

Optional, default == EVENTS,INFOBADFILEDELETE

EVENTS_COULDNOTDELETEBADFILE

Protokollierung, dass eine ungültige Datei nicht gelöscht werden konnte. Der zugehörige Messagetext ist unter COULD_NOT_DELETE_BAD_FILE definiert.

Optional, default == EVENTS,COULDNOTDELETEBADFILE

EVENTS_START_IMPORT_WITH_WS

Protokollierung, dass der Import über den Webservice startet.

Optional, default == EVENTS,START_IMPORT_WITH_WS

EVENTS_START_IMPORT_FIRSTENTRY

Protokollierung der ersten Zeile eines Imports

Optional, default == EVENTS,START_IMPORT_FIRSTENTRY

EVENTS des Jobservice, die jetzt im Importregelwerk überschrieben werden können

 TRANSACTIONTOPROCESS
 ACTUALTRANSACTION  
 PROCESSTRANSACTION        
 PROCESSTAOK        
 CREATETA           
 SYNTAXCHECKOK
 STARTEDWORKFLOWID
 DELETEVERSIONACTIONOK
 DELETEVERSIONACTIONERROR
 ERRORSTOPROTOCOL
 OKJOBSTOPROTOCOL
 STREAM_INFO
 STREAM_EMPTYRESPONSE
 DEBUGCURL                
 SYNTAXCHECKERROR         
 ROLLBACKTEXT             
 NOROLLBACKEVENT          
 FILEOPENERROR            
 PROCESSTAERROR           
 ROLLBACKSTOPROTOCOL      
 DELETEDATA               
 AFTERPROTFUNCERROR       
 PREDELSOURCEFILEFUNCERROR
 RECONNECTOK              
 RECONNECTERROR           
 INVALIDCONFIDENT         
 CANNOTDELETESOURCEFILE   
 TCL                      
 P                        
 STARTEDWORKFLOWID        
 CANNOTDELETEDATAFILE


Steuerung des Verhaltens nach einem Fehler im Kanal

Vor der Version 22.3 wurde die Bearbeitungskette nach einem Fehler in einem Kanal zurückgesetzt und neu durchlaufen. Das hat unter Umständen bei dauerhaften Fehlern dazu geführt, dass Kanäle mit einer niedrigen Priorität nicht zum Zug kamen. Für einige Fehler lässt sich das Verhalten jetzt definieren. Alle im Folgenden Parameter können sowohl im Kanal als auch im Standard definiert werden!

ResetStackAfterError

Dieser Wert dient als Vorbelegung aller im folgenden definierten Parameter außer FuncIfDataRetValue, damit der Konfigurationsaufwand überschaubar gehalten wird. Er ist optional und im Standard 0, also die Verarbeitungskette wird im Falle eines Fehlers weiter durchlaufen.


ResetStackResourceNotAvailable

Verhalten des Verarbeitungskette, wenn das Verzeichnis nicht mehr auslesbar ist.

ResetStackJobError

Verhalten des Verarbeitungskette, wenn ein Fehler in ::script::jobError gespeichert ist.


ResetStackMissingTRGDir

Verhalten des Verarbeitungskette, wenn nicht auf das Triggerverzeichnis zugegriffen werden kann


FuncIfDataRetValue

Dieser Parameter ist schon seit 2019 vorhanden. Der Standardwert "NO IMPORT" bewirkt, dass nach einem erfolglosen FunctionIfData (also Rückgabe 0) mit dem nächsten Kanal weitergemacht wird. Jeder andere Wert sorgt dafür, dass die Kette neu beginnt, was aber normalerweise nicht sinnvoll ist.