XML-Format-Beschreibung
Die Beschreibung der XML-Knoten kann hilfreich sein, wenn man über die Erfahrungen mit XML verfügt und die Anpassungen, welche in der Oberfläche möglich sind, stattdessen mit einem Editor vornehmen möchte.
Siehe auch Allgemeiner Aufbau des XML Dokuments
es2000 macht keine Angaben zu einer bestimmten Eignung der folgenden Informationen. Irrtümer und Fehler bleiben ausdrücklich vorbehalten, die Angaben erfolgen ohne Gewähr. Die Angaben stellen nur Beschreibungen dar und enthalten keine Garantie der Beschaffenheit der Produkte. Die Informationen können zum Teil auch ein Versuch sein, Ihnen bei einer Aufgabenstellung zu helfen, selbst wenn das Produkt eigentlich nicht für diesen speziellen Zweck vorgesehen wurde.
Das Arbeiten direkt in der XML-Datei erfordert Sorgfalt und Vorkenntnisse und sollte damit nur angewandt werden, wenn dies unbedingt erforderlich ist.
Bei den Attribut Beschreibungen wird hier folgende Syntax verwendet:
Name: (typ [default wert])
transfer
transfer
Transfer ist das Wurzel Element und es ist genau einmal erforderlich.
Attribute
version: (string [1.0])
Gibt die Version der Beschreibungsdatei an.
Dieses Attribut ist ab Version 1.1 erforderlich.
checkactive: (bool [false])
Wenn true wird vor einem manuellen Transfer eine Abfrage gezeigt, welche Felder übertragen werden sollen. (siehe attribut active bei table und field).
transaction: (bool [false])
Wenn true wird jede Tabelle innerhalb einer Transaktion übertragen.
assembly
Gibt einen Dateinamen für eine Assembly an, die für die Ausführung des Transfers erforderlich ist.
Alle Typen in der Assembly die von ES2000.Updatelib.TransferDescriptor ableiten, werden einmal instanziiert und die RegisterTransferMethods Methode dieser Instanz wird aufgerufen.
Attribute
filename: (string [])
Gibt den Dateinamen der Assembly an.
Dieses Attribut / dieser Wert ist erforderlich.
parameter
parameter
Gibt den Wert eines Parameters zum Beispiel für assembly, execsql oder call Knoten an.
Attribute
id: (string [])
Gibt die ID des Parameters an.
Dieses Attribut / dieser Wert ist erforderlich.
value: (string[])
Gibt den Wert des Parameters an.
Dieses Attribut / dieser Wert ist erforderlich.
execsql
execsql
Führt einen einfachen SQL-Befehl entweder auf der Quell- oder auf der Zieldatenbank aus.
Attribute
order: (int [-1])
Kann keinmal oder einmal vorkommen und beschreibt die Reihenfolge, in welcher der SQL-Befehl ausgeführt wird.
Größere Zahlen werden später übertragen.
stoponerror: (bool [true])
Gibt an, ob der Transfer bei einem Fehler abgebrochen werden soll.
db: ( {SOURCE | TARGET } [])
Gibt an, ob der Befehl auf der Quell- oder Zieldatenbank ausgeführt werden soll.
Dieses Attribut / dieser Wert ist erforderlich.
command: (string [])
Der SQL-Befehl der ausgeführt werden soll. Es können Parameter definiert werden, die vor dem Ausführen ersetzt werden können. Diese Parameter werden wie folgt angegeben: Delete from {Tabelle} dabei wäre Tabelle der Parametername.
id: (string[])
Kann einen Wert enthalten, über den der Knoten eindeutig identifiziert werden kann.
parameter
parameter
Gibt den Wert eines Parameters zum Beispiel für assembly, execsql oder call Knoten an.
Attribute
id: (string [])
Gibt die ID des Parameters an.
Dieses Attribut / dieser Wert ist erforderlich.
value: (string[])
Gibt den Wert des Parameters an.
Dieses Attribut / dieser Wert ist erforderlich.
logfile
logfile
Gibt eine Datei an, in die das Übertragungsprotokoll gespeichert werden soll.
Attribute
filename: (string [])
Enthält den Pfad zur Datei, in die das Log gespeichert werden soll.
<logfile filename="C:\temp\logdb.log" />
id: (string[])
Kann einen Wert enthalten, über den der Knoten eindeutig identifiziert werden kann.
table
table
Beschreibt eine Quelltabelle.
Attribute
order: (int [-1])
Kann keinmal oder einmal vorkommen und beschreibt die Reihenfolge, in der die Tabelle übertragen wird. Größere Zahlen werden später übertragen.
checkupdate: (bool [false])
Kann keinmal oder einmal vorkommen und bestimmt ob überprüft werden soll, ob der Datensatz bereits in der Zieltabelle vorhanden ist. Wenn der Datensatz gefunden wurde wird ein Update gemacht sonst ein Insert.
stoponerror: (bool [true])
Gibt an, ob der Transfer bei einem Fehler abgebrochen werden soll.
filter: (string [])
Mit dem Attribut Filter kann die Quelldatenmenge gefiltert werden. Der Syntax innerhalb des Filters ist SQL Kürzel für Structured Query Language SQL ist eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken. SQL ist von ANSI und ISO standardisiert und wird von fast allen gängigen Datenbanksystemen unterstützt..
Es wird empfohlen hier ANSI SQL zu verwenden damit möglichst viele DB Arten unterstützt werden
name: (string [])
Gibt den Namen der Quelltabelle an.
Dieses Attribut / dieser Wert ist erforderlich.
autocopy: (bool [false])
Wenn AutoCopy gesetzt ist, wird die Tabelle 1 zu 1 übernommen.
Eine manuelle Zuordnung der Felder ist dadurch nicht notwendig.
id: (string[])
Kann einen Wert enthalten, über den der Knoten eindeutig identifiziert werden kann.
active: (bool [false])
Gibt an, ob dieses Objekt übertragen werden sollen oder nicht.
Ist active nicht definiert, so wird, wenn transfer: checkactive auf true gesetzt ist, beim manuellen Transfer eine entsprechende Abfrage erzeugt.
field
field
Beschreibt ein Feld in der Quelltabelle, welches in eine Zieltabelle übertragen werden soll.
Attribute
name: (string [])
Enthält den Namen des Quellfeldes.
Dieses Attribut / dieser Wert ist erforderlich.
action: (char [])
Enthält die Art der Übertragung. Dieses Attribut kann den Wert C oder T annehmen.
Wobei C für einen Kopiervorgang steht und T für einen Programmgesteuerten Transfer.
typ: (string [])
Enthält die Typendefinition des Quellfeldes
Feldtypen
Nachfolgend finden Sie die verschiedenen Feldtypen, welche in der XML-Datei möglich sind:
Abkürzung - Bedeutung
I - Integer (32 Bit)
S - Small - Integer (16 Bit)
F - Float / Double
D - DateTime / TimeStamp
M - Memo (Plaintext)
R - Memo (RichText)
H - Memo (HTML)
B - Blob
A|1 - Boolean (String der Länge 1)
A|X - String der Länge X
id: (string[])
Kann einen Wert enthalten, über den der Knoten eindeutig identifiziert werden kann.
active: (bool [false])
Gibt an, ob dieses Objekt übertragen werden sollen oder nicht.
Ist active nicht definiert, so wird, wenn transfer: checkactive auf true gesetzt ist, beim manuellen Transfer eine entsprechende Abfrage erzeugt.
const
const
Beschreibt einen Konstanten Wert (Konstante) für die Zieldaten.
Attribute
value: (beliebig [])
Enthält den Wert der In die Zieltabelle eingefügt werden soll. Der Wert wird anhand der Typendefinition des Zielfeldes gecastet.
id: (string[])
Kann einen Wert enthalten, über den der Knoten eindeutig identifiziert werden kann.
autoinc
autoinc
Beschreibt einen Wert, welche nach jedem einfügen um eine bestimmte Schrittweite inkrementiert wird (Inkrement).
Attribute
startvalue: (double [1])
Gibt den ersten Wert an, welche benutzt werden soll.
Dieses Attribut / dieser Wert ist erforderlich.
incby: (double [1])
Gibt den Wert an um den erhöht werden soll.
Dieses Attribut / dieser Wert ist erforderlich.
id: (string[])
Kann einen Wert enthalten, über den der Knoten eindeutig identifiziert werden kann.
dynamic
dynamic
Beschreibt einen dynamischen Wert, wie zum Beispiel das aktuelle Datum oder die Uhrzeit.
Attribute
value: (string [])
Gibt den Wert an.
Dieses Attribut / dieser Wert ist erforderlich.
Gültige Werte sind:
DATE – entspricht dem aktuellen Datum ohne Uhrzeit
NOW – entspricht dem aktuellen Datum mit Uhrzeit
id: (string[])
Kann einen Wert enthalten, über den der Knoten eindeutig identifiziert werden kann.
expression
expression
Mit der Funktion Expression können komplexe Berechnung durchgeführt werden. Es wird die Script-Sprache ES-Expression-Language (ESEL) verwendet.
Informationen zur esExpression-Language (ESEL)
Für allgemeine Anwendungsfälle wird im eserp eine Allgemeine Script-Sprache Namens esExpression-Language (ESEL) verwendet. Für die Verwendung in Workflow-Prozessen (BusinessRuleTasks und ScriptTasks) ist diese erweitert worden.
Für Ausdrücke innerhalb eines Workflow-Diagramms, zum Beispiel für die Auswertung von Exclusive-Gateways werden ESRL-Expressions verwendet, welche eine Erweiterung von ESEL sind und als Grundlage für ESRL (esRule-Language) dienen, welche wiederum für die Business-Regeln und Script-Tasks verwendet wird.
ESEL (ES-Expression-Language)
Typen
Typ |
Erklärung |
---|---|
true false |
Bool (Ja / Nein) |
[Tabelle.Feld] |
Felder / Variablen |
#1490165557 |
DateTime (Die Zahl ist ein Unix-Timestamp) |
"Zeichenkette" |
Zeichenketten |
13.37 |
Nummern |
Unäre Ausdrücke
Ausdruck |
Erklärung |
---|---|
~Wert |
Bit-NOT |
-Wert |
Minus (vor Zahlen) |
!Wert |
Logisches-NOT |
Binäre Ausdrücke
Ausdruck |
Erklärung |
---|---|
A & B |
Bit-AND |
A | B |
Bit-OR |
A ^ B |
Bit-XOR |
A / B |
Dividieren |
A % B |
Modulo |
A * B |
Multiplizieren |
A + B |
Addieren |
A - B |
Subtrahieren |
A and B |
Logisches-AND |
A or B |
Logisches-OR |
Funktionen
Es sind je nach Umgebung verschiedene Funktionen verfügbar.
Diese können über FunktionsName(Argument1[, ...ArgumentN]) aufgerufen werden.
Bedingungen
CASE
WHEN (Bedingung) THEN (Wert)
[WHEN (Bedingung 2) THEN (Wert 2)]
[ELSE (Nein-Wert)]
END
ESRL-Expressions
Die ESRL-Expressions entsprechen den ESEL-Expression haben aber eine Erweiterung: Es ist möglich, die unter Workflow | Business-Regeln definierte Business-Regeln aufzurufen.
Wenn eine einfache Regel ohne Parameter aufgerufen werden soll, wird dies wie folgt erledigt.
<MinimaleAngebotssumme>
Wenn zusätzliche Parameter an die Regel übergeben werden sollen, werden diese 'Objekte' übergeben und der Syntax ist wie folgt:
<IsMaxOfferSumAllowed of { Kalkulator: [mein Kalkulator], Angebot: [mein Angebot] } >
Objekte werden mit { Name: Wert, Name2: Wert2, Name3... } angegeben.
ESRL wird verwendet, um Business-Regeln aufzustellen.
ESRL
Um diese Regeln zu definieren, wird folgender Syntax verwendet:
GIVEN Parameter1, Parameter2 (HAVE oder HAS) NameDerRegel OF
(Code)
Also zum Beispiel
GIVEN Wert1, Wert2 HAVE SUM OF [Wert1] + [Wert2]
Wenn mehrere Werte zurückgegeben werden sollen, können die Namen der Ausgabe Parameter nach dem Namen der Regel mit Doppelpunkt angegeben werden.
zum Beispiel
GIVEN a, b HAVE Rechteck: Umfang, Flaeche OF
{Umfang: (2 * ([a]+[b])), Flaeche: [a]*[b] }
Regeln bieten zusätzlich die Möglichkeit, mehrere Befehle hintereinander auszuführen.
Diese Blöcke werden mit START und END gekennzeichnet. Einzelne Befehle werden mit Semikolon voneinander getrennt. Der letzte Befehl endet also nicht mit Semikolon.
Regeln, die über mehrere Befehle verfügen, können mittels RETURN die weitere Ausführung der Regel frühzeitig beenden.
Zusätzlich ist es möglich sich eigene Variablen innerhalb der Regel zu definieren, um Werte wiederzuverwenden. Dazu muss man einfach einem Bezeichner einen Wert mittels := zuweisen.
Ein etwas komplexeres Beispiel könnte wie folgt aussehen:
GIVEN Wert HAS Beispiel OF
START
Teilwert := [Wert] / 2.5; // Wert durch 2,5 teilen
WHEN [Teilwert] > 10 THEN
RETURN "Wert ist zu groß";
rechteck := <Rechteck of { a: [Teilwert], b: [Wert] }>;
RETURN [rechteck.Umfang]
END
Bei Script-Tasks können gegebenenfalls freigegebene Business-Funktionen genauso aufgerufen werden wie andere Business-Regeln.
Attribute
value: (string [])
Gibt den Wert für die Berechnungsformel an.
Dieses Attribut / dieser Wert ist erforderlich.
target | setvar | setfont ( - target | setvar )
fromvar
Liest einen Wert aus einer Variablen, die mit setvar gesetzt wurde und übergibt den Wert an das target.
Attribute
name: (string [])
Enthält den Namen der Variable, aus welcher der Wert gelesen wird.
id: (string[])
Kann einen Wert enthalten, über den der Knoten eindeutig identifiziert werden kann.
from: (int [0])
Kann einen 0-Basierenden Index enthalten, von dem der Wert der Variable übernommen wird. Bei negativen Werten wird die Position vom Ende des Wertes aus berechnet, so dass -1 dem letzten Zeichen entspricht.
to: (int [-1])
Kann einen 0-Basierenden Index enthalten, bis zu dem der Wert der Variable übernommen wird. Bei negativen Werten wird die Position vom Ende des Wertes aus berechnet, so dass -1 dem letzten Zeichen entspricht.
lookup
lookup
Holt einen Wert aus einer Detail Tabelle und trägt diesen ein. Lookups können beliebig verschachtelt werden.
Beim letzten Lookup ist es erforderlich ein targetTarget zu definieren.
Attribute
name: (string [])
Der Feldname der Ursprungstabelle.
Dieses Attribut / dieser Wert ist erforderlich.
table: (string [])
Der Name der Lookup Tabelle.
Dieses Attribut / dieser Wert ist erforderlich.
lookupfield: (string [])
Das Feld in der Lookup Tabelle, welches den Wert von name enthält.
Dieses Attribut / dieser Wert ist erforderlich.
valuefield: (string [])
Das Feld in der Lookup Tabelle, dessen Wert übernommen werden soll.
Dieses Attribut / dieser Wert ist erforderlich.
db: ( {SOURCE | TARGET } [])
Gibt an, ob sich die Lookup Tabelle in der Quell- oder Zieldatenbank befindet.
Dieses Attribut / dieser Wert ist erforderlich.
lookuptyp: (string [])
Gibt optional den Typen des Lookupfields an, falls dieses erst gecastet werden muss.
id: (string[])
Kann einen Wert enthalten, über den der Knoten eindeutig identifiziert werden kann.
switch
switch
Leitet eine bedingte Übertragung vor.
Felder, die innerhalb eines Switchs stehen, werden immer kopiert!
Attribute
name: (string [])
Gibt den Feldnamen innerhalb der Zieltabelle, an der den Wert enthält, nachdem verzweigt werden soll.
Dieses Attribut / dieser Wert ist erforderlich.
trim: (bool [true])
Gibt an, ob der Wert vor dem Vergleich von Leerzeichen am Anfang und am Ende befreit werden soll.
id: (string[])
Kann einen Wert enthalten, über den der Knoten eindeutig identifiziert werden kann.
fromvar: (bool [false])
Gibt an, ob der Wert aus einer Variablen geladen wird statt aus einem Feld.
case
case
Eine Verzweigung für Switch Elemente
Attribute
value: (string [])
Enthält den Wert den das Switch Feld enthalten muss damit das untergeordnete Übertragungsfeld übertragen werden soll
regex: (bool [false])
Gibt an, ob es sich bei dem Wert in value um einen regulären Ausdruck handelt oder um einen Normalen String.
Auf Regex Case Zweige wird erst geprüft, wenn keiner der nicht-Regex-Zweige zum Erfolg führt
Reguläre Ausdrücke (RegEx / Regular Expressions)
Informationen zu Regulären Ausdrücken können Sie unter https://www.regular-expressions.info finden
default
default
Default Feld für switch und lookup Elemente
Die interne Übertragung wird ausgeführt, wenn kein case Element zutrifft
log
log
Schreibt einen Logeintrag oder erzeugt einen Fehler, der den Transfer abbricht mit einem bestimmten Text.
Attribute
text: (string [])
Enthält den Text, der geschrieben wird. Dieser Text kann auch Feldwerte der Quelldaten enthalten diese werden mit {FELDNAME} in den Text eingefügt.
iserror: (bool [false])
Gibt an, ob es sich um einen Fehler handelt oder um eine normal Log-Meldung.
id: (string[])
Kann einen Wert enthalten, über den der Knoten eindeutig identifiziert werden kann.
try
try
Enthält einen Befehl, der ggf. einen Fehler erzeugen könnte. Über den catch-Block kann ein weiterer Befehl hinterlegt werden, der im Fehlerfall ausgeführt wird.
Ein Fehler könnte zum Beispiel die Konvertierung eines Strings in ein Datum sein, die fehlschlägt (55.12.1999 -> Datum wird einen Fehler verursachen).
catch
catch
Enthält einen Befehl, der im Fehlerfall eines try-Blocks ausgeführt wird.
group
group
Kann mehrere Unterelemente beinhalten.
Dies ist zum Beispiel nützlich um in einem switch-case Fall mehrere Werte zu setzten.
setfont
setfont
Setzt die Schriftart um.
Attribute
name: (string [])
Der Name der Schriftart.
size: (float [])
Die Schriftgröße.
color: (color [Black])
Die Schriftfarbe.
style: (fontstyle [])
Der Schrifttyp (bold, italic, etc.)
id: (string[])
Kann einen Wert enthalten, über den der Knoten eindeutig identifiziert werden kann.
target
target
Gibt das Ziel eines Feldes oder einer Konstanten an.
Dieser Knoten darf nur genau einmal pro Knoten vorkommen.
Wenn mehrere Ziele definiert werden sollen, ist es erforderlich den übergeordneten Knoten erneut anzugeben.
Attribute
table: (string [])
Enthält den Namen der Zieltabelle.
Dieses Attribut / dieser Wert ist erforderlich.
field: (string [])
Gibt den Feldnamen der innerhalb der Zieltabelle an.
Dieses Attribut / dieser Wert ist erforderlich.
typ: (string [])
Gibt den Feldtypen des Zielfeldes an. Der String ist nach den Typendefinitionen, welche oben beschrieben wurden, zu setzten.
Dieses Attribut / dieser Wert ist erforderlich.
setvar
setvar
Schreibt den Übergebenen Wert in eine Variable. Dieser Wert kann mit fromvar wieder ausgelesen werden.
Attribute
name: (string [])
Enthält den Namen der Variable, in welcher der Wert gespeichert wird.
action: ((set, concat) [set])
Bestimmt, ob der Wert in der Variablen überschrieben werden soll oder ob der neue Wert hinten an vorhandenen Wert angehängt werden soll.
call
call
Ruft eine Methode in einer mit assembly angegebenen DLL auf.
Attribute
name: (string [])
Enthält den Namen der aufzurufenden Funktion.
parameter
parameter
Gibt den Wert eines Parameters zum Beispiel für assembly, execsql oder call Knoten an.
Attribute
id: (string [])
Gibt die ID des Parameters an.
Dieses Attribut / dieser Wert ist erforderlich.
value: (string[])
Gibt den Wert des Parameters an.
Dieses Attribut / dieser Wert ist erforderlich.
Feldtypen
Nachfolgend finden Sie die verschiedenen Feldtypen, welche in der XML-Datei möglich sind:
Abkürzung - Bedeutung
I - Integer (32 Bit)
S - Small - Integer (16 Bit)
F - Float / Double
D - DateTime / TimeStamp
M - Memo (Plaintext)
R - Memo (RichText)
H - Memo (HTML)
B - Blob
A|1 - Boolean (String der Länge 1)
A|X - String der Länge X
Allgemeiner Aufbau des XML Dokuments
Version 1.2
Das XML Format für den Abgleich zwischen Datenbanken sieht wie folgt aus:
-transfer
o logfile
o assembly
- parameter
o execsql
- parameter
o table
- field
- target | setvar | setfont ( - target | setvar )
- const
- target | setvar | setfont ( - target | setvar )
- autoinc
- target | setvar | setfont ( - target | setvar )
- dynamic
- target | setvar | setfont ( - target | setvar )
- expression
- target | setvar | setfont ( - target | setvar )
- fromvar
- target | setfont ( - target | setvar )
- group
- { field | const | autoinc | dynamic | lookup | switch | log | try | fromvar | call | skip | expression }
- [{ field | const | autoinc | dynamic | lookup | switch | log | try | fromvar | call | skip | expression } …]
- lookup
- { lookup | switch | target | setvar | log | try | group | field | skip | expression }
- [default]
- { field | const | autoinc | dynamic | lookup | switch | log | try | fromvar | group | call | skip | expression }
- switch
- case
- { field | const | autoinc | dynamic | lookup | switch | log | try | call | skip | expression }
- [case …]
- { field | const | autoinc | dynamic | lookup | switch | log | try | call | skip | expression }
- [default]
- { field | const | autoinc | dynamic | lookup | switch | log| try | fromvar | group | call | skip | expression }
- log
- try
- { field | const | autoinc | dynamic | lookup | switch | log | fromvar | group | call | skip | expression }
- catch
- { field | const | autoinc | dynamic | lookup | switch | log | try | fromvar | group | call | skip | expression }
- call
- parameter
- skip