Der Datenbank Adapter erlaubt die direkte Integration von eBiss mit einer Datenbank
Als Einsteig sollen hier Daten aus einer einfachen und flachen Tabelle 'DbAdapterTest' ausgelesen werden.
Die notwendige Struktur zum Auslesen der Tabelle 'DbAdapterTest' definieren Sie im Typ-Bibliotheken (oder im .Net Code) wie beschrieben in Struktur zum Lesen der Tabelle 'DbAdapterTest' und erstellen die DLL, am besten auch direkt im Type Editor.
In eBiss verwenden Sie den JobStep BackendObjectRetrieverEx und wählen:
Definieren sie im Job Step oder am Systempartner die Variablen Datenbank Connection String. Beispiele für die Variablen finden Sie in dem eBiss Installationsverzeichnis z.B. für den SQL-Server unter:
Oder unter demselben Namen beim Job-Step 2), s.a. DB Adapter - Variablen .
Das war's schon, Job laufen lassen und die Daten sind in eBiss. Weitere Beispiele z.B., filtern nach Datum, schreiben eines Lese-Marker, etc. folgen.
Eine Aufteilung der Nachrichten nach einem Feldwert erreicht man durch das setzen der Attribute
auf dem gewünschten Feld.
Ein geeigneter Job kann analog der Beschrebung von Backend Integration angelegt werden.
Attribute die auf DbAdapter Klassen gesetzt werden können sind unter DbAdapter Attribute beschrieben.
Will man im DbAdapter beispielsweise zu jeder Position jeweils noch Informationen aus einer zweiten Tabelle mit hinzuholen, kann das unter Umständen zu ganz vielen einzelnen Selects führen. Im Falle eines Kunden wird zu jeder PRICAT Position jeweils 4 Konditionssätze noch hinzuselektiert, was zu 82000 Selects für einen PRICAT führt.
Mit dem Join Attribut ist es möglich, einen zusätzlichen Select zu umgehen und direkt auf die Daten zuzugreifen. Man kann dieses Join Attribut auch mehrmals anwenden und so mehrere Fremdwerte direkt mit dem Join in den aktuellen Datensatz mit einbeziehen. Dies wirkt sich positiv auf die Performance aus.
Beispiel: Der 2. Join wird mit dem Alias „JT“ mit ausgeführt. Unten verweist also das Feld JoinFieldContent auf den ersten Join, das Feld DoubleJoinFieldContent auf den 2. Join.
[Join("JoinTable", "JoinTable.Id = HeaderTable.[Key]")] [Join("JoinTable", "JoinTable.Id = HeaderTable.[Key]", Alias = "JT2")] public class HeaderRecord : IMapObjectItem { [PrimaryKey(PrimaryKeyType.Counter, "Counters", "Name = 'HeaderTable' and @Name = @Name ", "Current_Val")] [MapFrameDocumentNumber] [ReadMarker(ReadMarkerType.StatusTable, "StatusTable", true)] public int Key; public string Name; [ReadMarker(ReadMarkerType.CheckUpdate, 0, 1)] public decimal TestDecimal; [ReadMarker(ReadMarkerType.Timestamp), Where("< $LastExecutionStartDate")] public DateTime ReadTimestamp = new DateTime(1900, 1, 1); [MapExternalName("JoinTable.JoinFieldContent")] public string JoinFieldContent; [MapExternalName("JT2.JoinFieldContent")] public string DoubleJoinFieldContent; public DateTime? NullableDateTimeTest; [MapListType(typeof(DetailRecord)), MapExternalName("DetailTable")] public ArrayList Details; }