Include: Unterschied zwischen den Versionen

Aus IMPS
Zur Navigation springen Zur Suche springen
Zeile 722: Zeile 722:
 
Inhalt zwischen den Tags
 
Inhalt zwischen den Tags
  
 +
 +
== ::DataTable ==
 +
 +
Klasse zur Speicherung und Verarbeitung eines Wertes pro Schlüssel
 +
 +
=== ::DataTable::CreateObject ===
 +
 +
 +
CreateObject ruft den Konstruktor auf.
 +
 +
 +
optionale Minusparameter:
 +
 +
- fileName
 +
Beschreibung: Pfad und Dateiname der Datei, in der die Daten persistent gespeichert werden. Wird das nicht angegeben, so wird intern leer initialisiert und auf einer reinen In-Memory Datenbank gearbeitet.
 +
default: ""
 +
 +
- autoBackup
 +
Beschreibung: steuert, ob vor jedem Schreiben der Datenbank automatisch eine Kopie (*.bak) erstellt werden soll
 +
default: 1
 +
 +
- encoding
 +
Beschreibung: definiert das Encoding der Datendatei
 +
default: utf-8
 +
 +
=== ::DataTable::DeleteObject ===
 +
 +
Ein Objekt kann entfernt werden.
 +
 +
INPUT:
 +
 +
Objekt: Die ID des Objektes, das zerstört werden soll
 +
 +
 +
Folgende Methode existieren
 +
 +
=== Get ===
 +
 +
Liefert den gespeichert Wert für einen Schlüssel, oder "*INVALID_ARRAY_ELEMENT*", wenn der Schlüssel nicht existiert
 +
 +
INPUT:
 +
 +
Key: eindeutiger Schlüssel
 +
 +
=== Set ===
 +
 +
Schreibt einen neuen Wert für einen Schlüssel
 +
 +
 +
INPUT
 +
Key: eindeutiger Schlüssel
 +
Value: der zu speichernde Wert
 +
 +
=== Delete ===
 +
 +
Löscht den Eintrag für einen Key
 +
 +
INPUT:
 +
 +
Key: eindeutiger Schlüssel
 +
 +
 +
=== SaveToFile ===
 +
 +
Aktualisiert die Daten, aber nur, wenn etwas geändert wurde
 +
 +
=== Backup ===
 +
 +
Erstellt eine Kopie der Datendatei (*.bak)
  
 
== AppendContent ==
 
== AppendContent ==

Version vom 10. August 2017, 11:18 Uhr

Detailbeschreibung aus Konfiguration

Diese Funktionen werden mit dem Importservice ausgeliefert und können in allen Konfigurationsbereichen verwendet werden. Damit diese Funktionen verwendet werden können ist es notwendig sie zu installieren. Hierzu muss die gleichnamige Datei aus dem Ordner "D:\StratOz\apps\ImportService\Include\Optional" in das Verzeichnis "D:\StratOz\apps\ImportService\Include" kopiert werden.

Rex_1

liefert den ersten geklammerten regulären Teilausdruck.


WebserviceCall

wird verwendet, um aus dem mapping.ini-Regelwerk Operationen auf dem Webserviceobjekt ausführen zu können.

WebserviceCall führt eine Funktion aus und übergibt an sie als ersten Parameter das Webserviceobjekt.

Wird der Zusatz Direct verwendet, so wird direkt eine Methode des Webservice ausgeführt. Somit müssen die Methoden nicht mehr als eigene Funktionen im Includeverzeichnis abgebildet werden (s.DeleteObject).

Der WebserviceCall sorgt für ein geregeltet Reconnect, wobei er die Einstellungen aus [TIMEOUT,CONNECT] beachtet.

Oft wird mit Hilfe des WebserviceCall z.B. eine Vorregistrierung vorgenommen:

_TMP_OID = WebserviceCall ::CreateObject::DocumentByQuery DOK *DUMMY* [list [list qrtReference BATTODO qcAnd qoEqual %tmp_1%]] [list [list ws-ps_ob.object_type P] [list ws-ps_ob.object_id 00000.01]] [list [list BATTODO %_tmp_1%]]

DelayStartAPI

zur Verzögerung des IS-Starts, bis die Corsa-API bereit ist


GetContactByCase

Diese Prozedur wird mit dem Wrapper WebserviceCall aufgerufen.

INPUT:

- Webserviceobject (wird automaitsch von WebserviceCall übergeben)
- ID des Workflows


OUTPUT:

Liste mit den Elementen:

- Kontakttyp (P/E)
- Kontakt-ID

::CreateObject

Namespace, der dem folgenden Prozeduren voranzustellen ist.


::DocumentByQuery

Diese Prozedur wird mit dem Wrapper WebserviceCall aufgerufen Sie wird genutzt, um eine Vorregistrierung vorzunehmen. Das Szenario kann z.B. sein, dass Autonummerierung verwendet wird, wenn bestimmte Voraussetzungen aber gegeben sind, ein vorhandenes Objekte verwendet werden soll.

In jedem Fall muss aber die korrekte ObjektID zurückgegeben oder ein Fehler ausgelöst (wenn mehrere Treffer da sind) werden.

INPUT

- Webserviceobject (wird automaitsch von WebserviceCall übergeben)
- Dokumentart
- Dokument-ID 
- Query (in Jobservicesyntax)
- Key/Value-Liste der Systemfelder ([list [list key1 value1] ... [list key<n> value <n>]] 
- Key/Value-Liste der Zusatzfelder
- weitere Minusparameter (z.B. -DuplicateID und -DSPTemplateID seit der Version 17.1 des Importservice)


OUTPUT:

Die ObjekteID des gefundenen bzw. angelegten Objektes


Intern wird die Variable ::mapping::objectCreated auf 1 gesetzt, wenn ein Dokument neu angelegt wird. Wird ein vorhandenes Objekt verwendet, so hat sie den Wert 0.

Im Fehlerfall kann es notwendig sein das Objekt in der ERROR Section wieder zu löschen. Das Szenario ist unter CMD beschrieben.


Beispiel:

WebserviceCall ::CreateObject::DocumentByQuery DOK *DUMMY* [list [list [qrtReference dRef1 qcAnd qoEqual "WV4714"]] {} [list [list dRef1  "WV4714"]]

::OrganisationByQuery

Diese Prozedur wird mit dem Wrapper WebserviceCall aufgerufen Sie wird genutzt, um eine Vorregistrierung vorzunehmen. Das Szenario kann z.B. sein, dass Autonummerierung verwendet wird, wenn bestimmte Voraussetzungen aber gegeben sind, ein vorhandenes Objekte verwendet werden soll.

In jedem Fall muss aber die korrekte ObjektID zurückgegeben oder ein Fehler ausgelöst (wenn mehrere Treffer da sind) werden.

INPUT

- Webserviceobject (wird automaitsch von WebserviceCall übergeben)
- Organisationsart
- Organisations-ID
- Query (in Jobservicesyntax)
- Key/Value-Liste der Systemfelder ([list [list key1 value1] ... [list key<n> value <n>]]
- Key/Value-Liste der Zusatzfelder


OUTPUT:

Die ObjekteID des gefundenen bzw. angelegten Objektes


Intern wird die Variable ::mapping::objectCreated auf 1 gesetzt, wenn ein Dokument neu angelegt wird. Wird ein vorhandenes Objekt verwendet, so hat sie den Wert 0.

Im Fehlerfall kann es notwendig sein das Objekt in der ERROR Section wieder zu löschen. Das Szenario ist unter CMD beschrieben.


Beispiel:

WebserviceCall ::CreateObject::OrganisationByQuery CUSTOMER*DUMMY* [list [list [qrtReference oRef1 qcAnd qoEqual "10015"]] {} [list [list oRef1 "10015"]]

::PersonByQuery

Diese Prozedur wird mit dem Wrapper WebserviceCall aufgerufen Sie wird genutzt, um eine Vorregistrierung vorzunehmen. Das Szenario kann z.B. sein, dass Autonummerierung verwendet wird, wenn bestimmte Voraussetzungen aber gegeben sind, ein vorhandenes Objekte verwendet werden soll.

In jedem Fall muss aber die korrekte ObjektID zurückgegeben oder ein Fehler ausgelöst (wenn mehrere Treffer da sind) werden.

INPUT

- Webserviceobject (wird automaitsch von WebserviceCall übergeben)
- Personart
- Person-ID
- Query (in Jobservicesyntax)
- Key/Value-Liste der Systemfelder ([list [list key1 value1] ... [list key<n> value <n>]]
- Key/Value-Liste der Zusatzfelder


OUTPUT:

Die ObjekteID des gefundenen bzw. angelegten Objektes


Intern wird die Variable ::mapping::objectCreated auf 1 gesetzt, wenn ein Dokument neu angelegt wird. Wird ein vorhandenes Objekt verwendet, so hat sie den Wert 0.

Im Fehlerfall kann es notwendig sein das Objekt in der ERROR Section wieder zu löschen. Das Szenario ist unter CMD beschrieben.


Beispiel:

WebserviceCall ::CreateObject::PersonByQuery EMPLOYEE *DUMMY* [list [list [qrtReference pRef1 qcAnd qoEqual "10015"]] {} [list [list pRef1 "10015"]]

::FolderByQuery

Diese Prozedur wird mit dem Wrapper WebserviceCall aufgerufen Sie wird genutzt, um eine Vorregistrierung vorzunehmen. Das Szenario kann z.B. sein, dass Autonummerierung verwendet wird, wenn bestimmte Voraussetzungen aber gegeben sind, ein vorhandenes Objekte verwendet werden soll.

In jedem Fall muss aber die korrekte ObjektID zurückgegeben oder ein Fehler ausgelöst (wenn mehrere Treffer da sind) werden.

INPUT

- Webserviceobject (wird automaitsch von WebserviceCall übergeben)
- Aktenart
- Akten-ID
- Query (in Jobservicesyntax)
- Key/Value-Liste der Systemfelder ([list [list key1 value1] ... [list key<n> value <n>]]
- Key/Value-Liste der Zusatzfelder


OUTPUT:

Die ObjekteID des gefundenen bzw. angelegten Objektes


Intern wird die Variable ::mapping::objectCreated auf 1 gesetzt, wenn ein Dokument neu angelegt wird. Wird ein vorhandenes Objekt verwendet, so hat sie den Wert 0.

Im Fehlerfall kann es notwendig sein das Objekt in der ERROR Section wieder zu löschen. Das Szenario ist unter CMD beschrieben.


Beispiel:

WebserviceCall ::CreateObject::FolderByQuery INV *DUMMY* [list [list qrtReference dRef1 qcAnd qoEqual "INV04711"]] {} [list [list dRef1  "INV04711"]]

::RealEstateByQuery

Diese Prozedur wird mit dem Wrapper WebserviceCall aufgerufen Sie wird genutzt, um eine Vorregistrierung vorzunehmen. Das Szenario kann z.B. sein, dass Autonummerierung verwendet wird, wenn bestimmte Voraussetzungen aber gegeben sind, ein vorhandenes Objekte verwendet werden soll.

In jedem Fall muss aber die korrekte ObjektID zurückgegeben oder ein Fehler ausgelöst (wenn mehrere Treffer da sind) werden.

INPUT

- Webserviceobject (wird automaitsch von WebserviceCall übergeben)
- Immobilienart
- Immobilien-ID
- Query (in Jobservicesyntax)
- Key/Value-Liste der Systemfelder ([list [list key1 value1] ... [list key<n> value <n>]]
- Key/Value-Liste der Zusatzfelder


OUTPUT:

Die ObjekteID des gefundenen bzw. angelegten Objektes


Intern wird die Variable ::mapping::objectCreated auf 1 gesetzt, wenn ein Dokument neu angelegt wird. Wird ein vorhandenes Objekt verwendet, so hat sie den Wert 0.

Im Fehlerfall kann es notwendig sein das Objekt in der ERROR Section wieder zu löschen. Das Szenario ist unter CMD beschrieben.


Beispiel:

WebserviceCall ::CreateObject::RealEstateByQuery OBJECT *DUMMY* [list [list [qrtReference vRef1 qcAnd qoEqual "HO_SCHW"]] {} [list [list vRef1 "HO_SCHW"]]

::Folder

Diese Prozedur wird mit dem Wrapper WebserviceCall aufgerufen. Sie legt eine Akte an, wenn sie noch nicht existiert. Die Rückgabe ist die Akten-ID, sollte keine Akte angelegt werden können oder stimmt die erzeugte ID nicht mit der vorgegebenen überein, so wird eine Fehlermeldung geworfen.


INPUT

- Webserviceobject (wird automaitsch von WebserviceCall übergeben)
- Aktenart
- Akten-ID
- Key/Value-Liste der Systemfelder ([list [list key1 value1] ... [list key<n> value <n>]]
- Key/Value-Liste der Zusatzfelder

optionale Minusparameter:

-contactType <Kontakttyp des zu verlinkenden Kontaktes>
-contactID <KontaktID des zu verlinkenden Kontaktes>


OUTPUT: Die ID der Akte, wenn es geklappt hat


Globale Werte, die in der Prozedur gesetzt werden:

::mapping::objectCreated: Ein neues Objekte wurde angelegt (1) oder nicht (0)
::mapping::createdObjectID: Die Nummer, unter der das Objekt angelegt wurde (z.B. für das Löschen in der ERROR-Section im Fall von eingestellter Autonummerierung


ERROR

- Das Objekt kann nicht angelegt werden
- Das Objekt wurde unter einer abweichenden Nummer angelegt (Autonummerierung eingeschaltet?)

::Person

Diese Prozedur wird mit dem Wrapper WebserviceCall aufgerufen. Sie legt eine Person an, wenn sie noch nicht existiert. Die Rückgabe ist die PersonenID, sollte keine Person angelegt werden können, so wird eine Fehlermeldung geworfen.


INPUT

- Webserviceobject (wird automaitsch von WebserviceCall übergeben)
- Personenart
- Personen-ID
- Key/Value-Liste der Systemfelder ([list [list key1 value1] ... [list key<n> value <n>]]
- Key/Value-Liste der Zusatzfelder

optionale Minusparameter:

-contactType <Kontakttyp des zu verlinkenden Kontaktes>
-contactID <KontaktID des zu verlinkenden Kontaktes>


OUTPUT: Die ID der Person, wenn es geklappt hat


ERROR: wenn ein Fehlerereignis vorliegt

::Organisation

Diese Prozedur wird mit dem Wrapper WebserviceCall aufgerufen. Sie legt eine Organisation an, wenn sie noch nicht existiert. Die Rückgabe ist die Organisations-ID, sollte keine Organisation angelegt werden können, so wird eine Fehlermeldung geworfen.


INPUT

- Webserviceobject (wird automaitsch von WebserviceCall übergeben)
- Organisationsart
- OrganisationsID
- Key/Value-Liste der Systemfelder ([list [list key1 value1] ... [list key<n> value <n>]]
- Key/Value-Liste der Zusatzfelder

optionale Minusparameter:

-contactType <Kontakttyp des zu verlinkenden Kontaktes>
-contactID <KontaktID des zu verlinkenden Kontaktes>


OUTPUT: Die ID der Organisation, wenn es geklappt hat


ERROR: wenn ein Fehlerereignis vorliegt

::Document

Diese Prozedur wird mit dem Wrapper WebserviceCall aufgerufen. Sie legt ein Dokument an, wenn es noch nicht existiert. Die Rückgabe ist die Dokument-ID, sollte kein Dokument angelegt werden können, so wird eine Fehlermeldung geworfen.


INPUT

- Webserviceobject (wird automaitsch von WebserviceCall übergeben)
- Dokumentart
- Dokument-ID
- Key/Value-Liste der Systemfelder ([list [list key1 value1] ... [list key<n> value <n>]]
- Key/Value-Liste der Zusatzfelder
- weitere Minusparameter (z.B. -DuplicateID und -DSPTemplateID seit der Version 17.1 des Importservice)

optionale Minusparameter:

-contactType <Kontakttyp des zu verlinkenden Kontaktes>
-contactID <KontaktID des zu verlinkenden Kontaktes>


OUTPUT: Die ID des Dokumentes, wenn es geklappt hat


ERROR: wenn ein Fehlerereignis vorliegt


Beispiel:

  1. Vorregistrierung des Dokumentes, wenn es noch nicht vorhanden ist, um Linkfehler zu vermeiden

_TMP_DOCREL = split [CheckDefinition %DOCREL%] [format %c 254]

  1. Rechnungsnummernformat ist REA* und steht auf manuell

_TMP_CREATEDOC = catch {foreach _element %_TMP_DOCREL% { if {[string toupper [string range $_element 0 2]] eq "REA"} {WebserviceCall ::CreateObject::Document REA $_element {} {} }}}

::RealEstate

Diese Prozedur wird mit dem Wrapper WebserviceCall aufgerufen. Sie legt eine Immobilie an, wenn sie noch nicht existiert. Die Rückgabe ist die Immobilien-ID, sollte keine Immobilien angelegt werden können, so wird eine Fehlermeldung geworfen.


INPUT

- Webserviceobject (wird automaitsch von WebserviceCall übergeben)
- Immobilienart
- Immobilien-ID
- Key/Value-Liste der Systemfelder ([list [list key1 value1] ... [list key<n> value <n>]]
- Key/Value-Liste der Zusatzfelder

optionale Minusparameter:

-contactType <Kontakttyp des zu verlinkenden Kontaktes>
-contactID <KontaktID des zu verlinkenden Kontaktes>


OUTPUT: Die ID der Immobilie, wenn es geklappt hat


ERROR: wenn ein Fehlerereignis vorliegt

NextVersion

Die nächste freie Versionnummer für ein Objekt wird zurückgegeben.

NextVersion $ws S DOC0007411

::ErrorIfNotExists

Diese Funktion meldet eine Fehler an den Import, wenn eine Datei nicht vorhanden ist, um später scheiternde Transaktionen, die den Importservice in eine Endlosschleife schicken würden, erst gar nicht zu erzeugen.

Sinnvoll ist diese Funktion z.B. bei NAT, ARC, OCR und TMB.


INPUT: Pfad+Dateiname der zu untersuchenden Datei


OUTPUT: Pfad+Datei wie übergeben, falls die Datei vorhanden ist


ERROR: Ein Fehlerevent, wenn die Datei nicht vorhanden ist


Achtung: Eigentlich wird ::ErrorIfNotExists::ErrorIfNotExists verwendet, aber die alte Aufrufvariante ::ErrorIfNotExists bleibt weiterhin, auch längerfristig, gültig.

Return

Die Prozedur Return reicht einen String durch. Sie macht das gleiche wie return, wird jedoch vom catch {} nicht abgefangen.

Es sollte immer Return anstelle von return bei der Definition von Mappingdatei verwendet werden!

Sollen nicht definierte Werte nicht als *NOT_DEF*sondern als Leerstring durchgereicht werden, so ist CheckDefinition zu verwenden.

Required

Wenn der Wert einer Variablen leer oder 'NOT_DEF* ist, so wird ein Fehler ausgelöst, ansonsten der Wert zurückgegeben.


INPUT:

- value: Wert der Variable
- fieldName: Name der Variable


Beispiel:

dDate = Required %DATE% Dokumentdatum

CheckEmpty

CheckEmpty <arg1> prüft, ob das Argument den Wert "*NOT_DEF*" hat, der anzeigt, dass eine Variable nicht definiert wurde (im Gegensatz zum Leerstring, der einen leeren Wert definiert).

In diesem Fall wird ein Leerstring zurückgegeben, sonst der Wert des Arguments.


CheckDefinition

INPUT:

- Feldwert
- Initalisierungswert (optional), Vorbelegung ""

Wenn der Feldwert ungleich *NOT_DEF* oder *UNDEFINED* ist, so wird er selbst zurückgegeben, sonst der Initialisierungswert.

CheckDefinition entfernt nun außenstehende Leerzeichen und Zeilenumbrüche. Zeilenumbrüche sind Beispielsweise immer beim letzten Feldwert in CORSA idx-Dateien enthalten, da sie immer eine Leerzeile am Ende haben

MappingBasedOnField

Die Funktion kann in der system.ini beim Parameter "MAPPINGRULE" angegeben werden. Durch die Funktion kann anhand von Feldwerten eines IDX Feldes eine spezifische mapping.ini für die Verarbeitung gewählt werden


INPUT:

- totalText, Inhalt der IDX-Datei, wird mittels der Variable $totalText übergeben
- counter, Zähler des Aktiven ImportKanals, wird mittels der Variable $counter übergeben
- idxFieldName, Name des HeaderFeldes in der IDX-Datei
- possibleValues, TCL Liste der Werte die in dem "idxFieldName" enthalten sein dürfen, damit die angegebene mapping.ini verwendet wird


Beispiel:

MAPPINGRULE               = MappingBasedOnField $totalText $counter DOKTYP [list ZMVEB ZMVBNW]
MAPPINGFILEIF             = D:/Programme/CIMiner/ImportServiceWEB/mapping/IMPORT34_ZMV_AUTOMATIC_mapping.ini
MAPPINGRULE               = MappingBasedOnField $totalText $counter DOKTYP [list ZMVR ZMVO]
MAPPINGFILEIF             = D:/Programme/CIMiner/ImportServiceWEB/mapping/IMPORT34_ZMV_MANUAL_mapping.ini


In diesem Beispiel wird die "IMPORT34_ZMV_AUTOMATIC_mapping.ini" verwendet, wenn in dem IDX-Feld "DOKTYP" entweder der Wert "ZMVEB" oder "ZMVBNW enthalten ist.

Sollte das Feld den Wert "ZMVR" oder "ZMVO" enthalten wird hingegen die "IMPORT34_ZMV_MANUAL_mapping.ini" verwendet.

simpleSplit

Splitadapter


 ::simpleSplit::PDF   


Splitadapter für PDF- und Textdateien (mit Formfeedzeichen zur Seitentrennung).


Dieser Adapter wird in Function eingehängt und kann optionale -Parameter benutzen.


Der Aufruf hat folgendes Format:

::simpleSplitPDF $counter <-optionale Minusparameter>


Beispiel:

FUNCTION = ::SimpleSplit::PDF $counter -generateTXT 1

oder

FUNCTION = ::SimpleSplit::PDF $counter -noPDF 1 -ignoreLastFF 0 -insertFFCMD {regsub -all -- {\n01} $content "\n\f01"} -pdftk "C:\\Program Files (x86)\\PDFtk Server\\bin\\pdftk.exe" 


-splitStamp

Interner Splitstring, der in der Regel nicht verändert werden muss.


-lockFile

Name der Lockdatei.

Default: lock.dat


-pdftk

Angabe von Pfad und Dateinamen des Tools pdftk. Standardmäßig wird unter Importservice/tools nachgeschaut.


-rex

Der reguläre Ausdruck der beschreibt, auf welchen Seiten getrennt werden soll. Getrennt wird immer am Seitenumbruch.

Default: {(?=\f)}


-insertFFCMD

Befehl, mit dem der Textinhalt manipuliert werden kann (in der Regel zum Einfügen von FF, kann aber auch anders verwendet werden). Das ist immer dann erforderlich, wenn die Daten keine FF enthalten oder nicht an allen trennbaren Stellen.

Default: ""

-insertFFCMD {regsub -all -- {\n01} $content "\n\f01"}


-protEvent

Event für die Protokolleinträge.

Default: P


-sourceDir

Importverzeichnis, in dem die Dateien erwartet werden (nicht numeriert). Unter diesem Verzeichnis werden die numerierten Verzeichnisse angelegt.

Default: SourceDir


-ageOfFile

Mindestalter der Quelldatei in Sekunden.

Default: 1


-ignoreLastFF

Am abschließenden Formfeed der letzten Seite wird nicht gesplittet, da es sonst eine Leerseite gäbe.

Default: 1


-pdftotext

Angabe von Pfad und Dateinamen des Tools pdftotext. Standardmäßig wird unter Importservice/tools nachgeschaut.


-generateTXT

Aus einer Text-PDF wird selbständig mit dem -pdftotext Tool eine Textdatei erstellt, wenn sie noch nicht vorhanden ist.

Default: 0


-noPDF

Falls der Adapter verwendet werden soll, um lediglich Textdatei zu bearbeiten, so kann die PDF auch deaktiviert werden (-noPDF 1).

Default: 0

::MakeSubDir::MakeSubDir

Mit MakeSubDir werden numerische Importordner unterhalb des SourceDir erstellt und die Dateien mit der IDXFileExtension und zugehörige (gleicher Name - andere Extension) aus dem SourceDir in die neue erstellten Verzeichnisse verschoben.


Der Aufruf hat folgendes Format:

MakeSubDir::MakeSubDir $counter <-optionale Minusparameter>


Beispiel:

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


-seconds

Mindestalter der Datei in Sekunden (dabei wird bei verschiedenen Zeitstempeln an der Datei der neuste genommen!)

Wird der Wert nicht angegeben, so werden 20 Sekunden verwendet.

::IMPSxmlOO

Über das automatisch angelegt Objekt $::impsXML stehen Methoden bereit, um einfach auf XML-Inhalte zugreifen zu können


Folgende Funktionen existieren:

::IMPSxmlOO::New

New ruft den Konstruktor auf.


optionale Minusparameter:

- nocase
Beschreibung: Groß-/Kleinschreibung ignorieren
default: 1


::IMPSxmlOO::DeleteObject

Ein Objekt kann entfernt werden.

INPUT:

Objekt: Die ID des Objektes, das zerstört werden soll


Folgende Methode existieren

GetXMLValue

Werte zwischen Tags können ausgelesen werden.


INPUT:

TAG
Die Bezeichnung des Tags ohne spitze Klammern, Slashes und Parameter
XML Textblock


optionale Minusparameter:

- nocase
Beschreibung: Groß-/Kleinschreibung ignorieren
default: Einstellung am Objekt mit New
- all
Beschreibung: sollen alle vorkommenden Werte übergeben werden (oder nur einer)
default: 0


OUTPUT:

Inhalt zwischen den Tags


Beispiel:

NATDOCUMENTNAME       = $::impsXML GetXMLValue LVO:bestandsnaamOrigineel %BIJLAGE_BLOCK%


GetXMLBlocks

XML-Blöcke können (ohne die begrenzenden Tags!) aufgerufen werden


INPUT:

TAG
Die Bezeichnung des Tags, das den XML (Teil-)Block eröffnet

XML Textblock

optionale Minusparameter:

- nocase
Beschreibung: Groß-/Kleinschreibung ignorieren
default: Einstellung am Objekt mit New
- onlyOne
Beschreibung: Sollen alle vorkommenden Werte übergeben werden oder nur einer
default: 0
- useValueTags
Beschreibung: Sollen auch Blöcke, die nur einen Wert enthalten, zurückgegeben werden? 
default: 0


OUTPUT:

XML Block zwischen den Tags

GetXMLValuesFromBlocks

Die Werte eines Tags aus bestimmten Blöcken auslesen. Dabei können sowohl die Blöcke als auch die Werte innerhalb eines Blocks mehrfach vorkommen.


INPUT:

Block-TAG
Die Bezeichnung des Tags, das den XML (Teil-)Block eröffnet
Wert-TAG
Die Bezeichnung des Tags, das den Wert eröffnet

XML Textblock


optionale Minusparameter:

- nocase
Beschreibung: Groß-/Kleinschreibung ignorieren
default: Einstellung am Objekt mit New
- onlyOne
Beschreibung: sollen alle vorkommenden Blöcke übergeben werden oder nur einer
default: 0
- all
Beschreibung: sollen innerhalb eines Blocks alle gefundenen Werte übergeben werden oder nur einer?
default: 1


OUTPUT:

Eine Liste aller gefundener Werte

Werte zwischen Tags können ausgelesen werden.


INPUT:

TAG
Die Bezeichnung des Tags ohne spitze Klammern, Slashes und Parameter
XML Textblock

optionale Minusparameter:

- nocase
Beschreibung: Groß-/Kleinschreibung ignorieren
default: Einstellung am Objekt mit New
- all
Beschreibung: sollen alle vorkommenden Werte übergeben werden (oder nur einer)
default: 0


OUTPUT:

Inhalt zwischen den Tags


::DataTable

Klasse zur Speicherung und Verarbeitung eines Wertes pro Schlüssel

::DataTable::CreateObject

CreateObject ruft den Konstruktor auf.


optionale Minusparameter:

- fileName
Beschreibung: Pfad und Dateiname der Datei, in der die Daten persistent gespeichert werden. Wird das nicht angegeben, so wird intern leer initialisiert und auf einer reinen In-Memory Datenbank gearbeitet.
default: ""
- autoBackup
Beschreibung: steuert, ob vor jedem Schreiben der Datenbank automatisch eine Kopie (*.bak) erstellt werden soll
default: 1
- encoding
Beschreibung: definiert das Encoding der Datendatei
default: utf-8

::DataTable::DeleteObject

Ein Objekt kann entfernt werden.

INPUT:

Objekt: Die ID des Objektes, das zerstört werden soll


Folgende Methode existieren

Get

Liefert den gespeichert Wert für einen Schlüssel, oder "*INVALID_ARRAY_ELEMENT*", wenn der Schlüssel nicht existiert

INPUT:

Key: eindeutiger Schlüssel

Set

Schreibt einen neuen Wert für einen Schlüssel


INPUT

Key: eindeutiger Schlüssel
Value: der zu speichernde Wert

Delete

Löscht den Eintrag für einen Key

INPUT:

Key: eindeutiger Schlüssel


SaveToFile

Aktualisiert die Daten, aber nur, wenn etwas geändert wurde

Backup

Erstellt eine Kopie der Datendatei (*.bak)

AppendContent

VORSICHT: NUR FÜR ERFAHRENE UND GESCHULTE EINRICHTER!

Mit AppendContent ist es möglich in der frühen Interpretation Befehl für die späte Interpretation zu generieren, die an der Stelle, wo sie definiert sind eingefügt werden. Die möglichen Befehle sind der Jobservicedokumentation zu entnehmen. Der Befehl macht nichts, wenn vorher schon ein IGNORE verarbeitet wurde.

Folgendes Beispiel speichert eine ID in der frühen Interpretation und macht sie auch in der späten Interpretation verfügbar, wenn der Service in der Zwischenzeit neu gestartet wird.

 mapping.ini
 [FIELDS]
 supplier/uniqueID   = Return %ID%
 ...
 = AppendContent  "#TCL set ::mapping::supplier_UniqueID %ID%\n"    
 system.ini
 [IMPORT_SAMPLE]
 ...
 JOBS4_CHECKUPLOADFUNC = WebCheckSupplier ew-jclassix64t:5454/WEB_CHECK_SUPPLIER $::mapping::supplier_UniqueID [$this GetGeneratedData]

LateTCL

LateTCL sorgt dafür, dass Befehle in der späten Interpretation ausgeführt werden. Dabei kann ein optionaler Parameter -mode 0/1 übergeben werden, mit dem definiert werden kann, dass Befehle nur im Transaktionsfehlerfall bzw. im Nichtfehlerfall ausgeführt werden. Wird -mode weggelassen, so wird der Befehl immer ausgeführt. Dieser Befehl kann in der mapping.ini/[LATECMD] oder in der system.ini/Import<n> (bei LateCMD) verwendet werden. Sollte es aus irgend einem Grund in anderen Sections nötig sein, so ließe sich das auch noch integrieren.

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

SystemValue

Mit SystemValue <SECTION,FELD> [optionaler Defaultwert] kann das entsprechende Feld ausgelesen werden. Ist weder Defaultwert definiert noch Feld in der system.ini vorhanden, so wird *NOT_DEF* zurückgeliefert.

ImportValue

Mit ImportValue <FELD> [optionaler Defaultwert] kann das entsprechende Feld des aktuellen Importes ausgelesen werden. Ist weder Defaultwert definiert noch Feld in der system.ini vorhanden, so wird *NOT_DEF* zurückgeliefert.

IGNORE

kann in der bei UseJobservice > 1 in der FIELDS-Section verwendet werden, was dazu führt, dass zwar alle Befehle der frühen Interpretation ausgeführt werden, aber viele nicht in die späte Interpretation gelangen.

FileArchive

basiert auf der FileArchive.tbc und benötigt zusätzliche Konfigurationen in der system.ini. Diese Funktion durchsucht alle Unterordner des RootDir und legt für jede gefundene Datei ein neuen Import an. Mit "EXCLUDEDFILEEXTENSION" können explizit Dateien mit bestimmter Endung ausgeschlossen werden. Zum Beispiel URL Dateien wenn anstelle der Originaldatei ein MyCorsa NxT Link hinterlassen wird.

Folgende Werte müssen in der System.ini unter der Import-Section hinzugefügt werden.

[FileArchive]
 RootDir                       = D:/FOLDERSTRUCTURE
 CheckLockfile                 = 1
 Delete_Linked_Uploadfile_Dir  = 0
 Function                      = ::FileArchive::GetData $counter
 EXCLUDEDFILEEXTENSION         = url   
 IdxFileExtension              = idx

Eine Beispielkonfiguration gibt es hier: Examples_FileArchive_mapping.ini