Inhaltsverzeichnis

HowTo - Datenbank Integration (DB Adapter)

Der Datenbank Adapter erlaubt die direkte Integration von eBiss mit einer Datenbank

Einstieg

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:

  1. als BackendType den eBiss.DbAdapter.StandardReader aus (beachten Sie bei einer eBiss Version vor 3.5.2371) ) und
  2. dann wählen dann unter DocumentTypeName die von Ihnen erstellte Klasse 'eBiss.TypeLib.DbAdapter.SimpleSample' aus.

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.

Splitten von Nachrichten

Eine Aufteilung der Nachrichten nach einem Feldwert erreicht man durch das setzen der Attribute

auf dem gewünschten Feld.

Übersicht

Prozessautomation

Ein geeigneter Job kann analog der Beschrebung von Backend Integration angelegt werden.

DbAdapter Attribute

Attribute die auf DbAdapter Klassen gesetzt werden können sind unter DbAdapter Attribute beschrieben.

Beispiel für JOIN Attribut

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;
    }
1)
in eBiss Version vor der Version Version 3.5.237 (14.1.21) war es notwendig, den Job-Step einmal neu Auszuwählen
2)
Eine Aktivierung vom Trace über die Variable eBiss.DbAdapter.TraceSql erfolgt mit dem True