Entfernte BIS-Schnittstellen

1                     Themenübersicht

Der Business Integration Service (BIS) steht auch über entfernte Aufrufe zur Verfügung. Angeboten wird die Datenimport- und Datenexport-Funktionalität des BIS. Ergänzend eine Suchfunktion, die zusammen im Folgenden als entfernter BIS bezeichnet werden. Der Datenimport und -export bietet eine vergleichbare Funktionalität wie der dateibasierte BIS. Die Suchfunktion arbeitet analog zu den Wertehilfen und Locatorsuchen der grafischen Benutzeroberfläche von Semiramis. Die Nutzdaten werden dabei jeweils direkt über das Netzwerk übertragen und nicht, wie beim dateibasierten BIS über den Knowledge Store.

Ab der Version Semiramis 4 stehen die entfernten BIS-Schnittstellen über CORBA als Kommunikations-Schnittstelle zur Verfügung. Um die entfernten BIS-Schnittstellen über CORBA zu verwenden, sind auch Kenntnisse über die CORBA-Schnittstelle von Semiramis erforderlich.

Ab der Version Semiramis 4.2 stehen die entfernten BIS-Schnittstellen auch über Web-Services als Kommunikations-Schnittstelle zur Verfügung. Um die entfernten BIS-Schnittstellen über Web-Services zu verwenden, sind auch Kentnisse über Web-Services-Schnittstelle von Semiramis erforderlich.

2                     Zielgruppe

  • Anwendungsentwickler
  • Technische Berater

3                     Beschreibung

Die Funktionalität der entfernten BIS-Schnittstellen ist über Hintergrund-Anwendungen in Semiramis realisiert, die entfernt aufgerufen werden. Damit sind diese von der konkreten Kommunikations-Schnittstelle unabhängig.

3.1               Funktionalität und Datenformate

Das Datenformat der Importdaten, Exportdaten und der Suchergebnisse ist XML. Als Codierung wird UTF-8 verwendet. Daher muss ein Client im Allgemeinen einen XML-Parser verwenden, um die Daten sinnvoll zu verwenden bzw. XML-Dokumente zu generieren.

Die Übertragung erfolgt im Falle der Verwendung von CORBA in Blöcken, die jeweils mit einem eigenen Aufruf der Hintergrund-Anwendung übertragen werden. Für den Import und Export ergeben die Blöcke zusammengesetzt das vollständige XML-Dokument. Die Import- und Export-XML-Dokumente können sehr umfangreich werden. Die Daten, die bei einem Aufruf über CORBA übertragen werden, müssen kurzzeitig im Hauptspeicher des Servers (und auch des Clients) stehen. Das ist auch der Grund, warum die XML-Dokumente nicht im Ganzen, sondern in Blöcken übertragen werden.

Im Falle der Benutzung von Web-Services zum Import oder Export werden die Daten in einem Block übertragen, da Web-Services ein zustandsloses Protokoll benutzen und somit eine Übertragung in meheren Blöcken nicht möglich ist. Dies kann bei großen Datenmengen den Application-Server stark belasten und erhebliche Leistungseinbussen verursachen. Die Web-Services-Schnittstelle ist daher nicht geeignet große Datenmengen zu transportieren.

Beim Import und Export ist das Format des XML-Dokuments dasselbe wie beim dateibasierten BIS und entspricht damit dem XML-Schema, das der BIS ebenfalls zur Verfügung stellt. Andere Datenformate, z.B. CSV, stehen über den entfernten BIS nicht zur Verfügung. Für den entfernten BIS gilt zusätzlich die Einschränkung, dass keine Attribute vom Typ BLOB übertragen werden können.

In der Suchfunktion werden bei CORBA die Suchergebnisse seitenweise übertragen, d. h. jede Seite ist ein eigener Block, der eine bestimmte Anzahl von Datensätzen vollständig enthält. Jede Seite eines Suchergebnisses ist ein eigenes XML-Dokument und kann im Gegensatz zum Ergebnis eines Export-Vorgangs daher einzeln geparsed werden. Das genaue Format, in dem Suchergebnisse zurückgegeben werden, ist im Abschnitt „Datenformat für die Suchergebnisse“ beschrieben.

Im Falle der Web-Services werden die Suchergebnisse nicht blockweise übertragen, da das benutzte Protokoll zustandslos ist.

Die Suchfunktion bietet darüber hinaus noch eine Existenzprüfung an, bei der nur ein einziger Datensatz zurückgegeben wird. Der Zweck dieser Schnittstelle besteht darin, einfach abfragen zu können, ob passend zu einer Suche mindestens ein Datensatz existiert. Wenn ein Datensatz vorhanden ist, werden seine Attribute nicht als XML-Dokument, sondern als Werte in einer Parameterliste zurückgegeben. Dadurch lassen sich sehr einfach entfernte Fremdschlüssel-Prüfungen realisieren.

3.2               Gemeinsamkeiten

Die Beschreibung der Schnittstellen für CORBA und Web-Services finden Sie in zugehörigen Dokumentationen CORBA-Schnittstelle bzw. Web-Services-Schnittstelle. Dieses Kapitel beschreibt die Teile der Schnittstellen, die beiden Kommunikationskanälen gemeinsam sind.

3.2.1          Datenformat für die Suchergebnisse

An folgendem Beispiel wird das Format der XML-Dokumente für Ergebnisseiten beschrieben der entfernten Schnittstelle für das Suchen beschrieben:.

<?xml version=”1.0″ encoding=”UTF-8″?>

<semiramis>

<SearchResultRow>

<guid>004076BF35F71E1080568464962B0000</guid>

<name>Dr.</name>

<deleteTime>

<date>16.12.2003</date>

<timeOfDay>17:50:58.304</timeOfDay>

</deleteTime>

</SearchResultRow>

</semiramis>

Das Beispiel enthält eine Ergebnisseite mit einer Zeile. Diese Zeile ist das Element SearchResultRow. Weitere Ergebniszeilen würden direkt auf dieses Element folgen.

Die Elemente unterhalb von SearchResultRow sind die Ergebnisspalten. Der Name des Elements ist der Attributname aus der OQL-Suche (guid, name). Der Wert des Elements ist entsprechend der Attributwert. Das Format der Attributwerte ist vom Datentyp des Attributes abhängig und ist im nächsten Abschnitt beschrieben.

Attribute von bestimmten Datentypen werden komplex dargestellt, sodass ihr XML-Element im XML-Dokument aus einem oder mehreren Unterelementen besteht. Dies ist dann der Fall, wenn in der Übersicht im nächsten Abschnitt für den Datentyp dokumentiert ist, dass die Rückgabe aus „Spalten“ besteht. Ein Beispiel im oben stehenden XML-Dokument ist das Attribut deleteTime.

Welche Ergebnisspalten in jeder Zeile auftreten, hängt von der verwendeten OQL-Suche ab. Im Allgemeinen ist es sinnvoll, für eine entfernt aufzurufende Suche eine eigene OQL-Suche anzulegen.

3.2.2          Datentypen in der Suche

Die nachfolgend aufgeführten Datentypen werden als Eingrenzungs- bzw. Rückgabeparameter unterstützt. Dabei kann sowohl für die Eingrenzung als auf für die Rückgabe festgelegt werden, ob die Angaben in einem benutzerspezifischem oder in einem technischen Format erfolgen sollen. Es sind beim benutzerspezifischen Format jeweils Beispiele für die Strings angegeben. Die konkreten Strings hängen dabei von den Benutzereinstellungen ab. Das technische Format ist immer von den Benutzereinstellungen unabhängig.

Für die komplexen Datentypen, die als „nicht unterstützt“ aufgeführt sind, besteht immer auch die Möglichkeit, die Suche so zu definieren, dass die Einzelattribute (z.B. der Betrag der Fremdwährung) als Eingrenzungs-, bzw. Rückgabeparameter verwendet werden kann. Einzig die direkte Verwendung des komplexen Typs ist ggfs. nicht unterstützt.

Datentyp Eingrenzung Rückgabe
benutzerspezifisch technisch benutzerspezifisch technisch
Boolean “wahr“, „falsch“ „true“, „false“, „“ “wahr“, „falsch“ „true“, „false“
Valueset wie technisch „1, 2, 3“ sortiert Zwei Spalten „1“, „Text“ Zwei Spalten „1“, „Konstante“
Guid Hexadezimal Hexadezimal Hexadezimal Hexadezimal
Byte „100“ „100“ „100“ „100“
Short „1.000“ „1000“ „1.000“ „1000“
Int wie Short wie Short wie Short wie Short
Long wie Short wie Short wie Short wie Short
Decimal „1.000,1“ „1000.1“ „1.000,1“ „1000.1“
String „text“ „text“ „text“ „text“
Char wie String wie String wie String wie String
CisAttribute-TimeStamp „heute, „+1“, „28.12.2003 17:15:23“ „[@today]“, „+1[D]“, „28#12#2003 17#15#23#000“ Drei Spalten

„28.12.2003“,

„17:15:23“

„GMT“

Zwei Spalten, Millisekunden seit 1.1.1970 GMT und Identifizierer der Zeitzone
CisObject-TimeStamp wie CisAttributeTimeStamp wie CisAttributeTimeStamp wie CisAttributeTimeStamp wie CisAttributeTimeStamp
CisAttribute-Date wie CisAttributeTimeStamp ohne Zeitanteil wie CisAttributeTimeStamp ohne Zeitanteil wie CisAttributeTimeStamp ohne Zeitanteil wie CisAttributeTimeStamp ohne Zeitanteil
CisObjectDate wie CisAttributeDate ohne Zeitanteil wie CisAttributeDate ohne Zeitanteil wie CisAttributeDate wie CisAttributeDate
Time Stamp wie CisAttributeTimeStamp ohne Zeitzone wie CisAttributeTimeStamp ohne Zeitzone wie CisAttributeTimeStamp ohne Zeitzone wie CisAttributeTimeStamp ohne Zeitzone
Domestic
Amount
nicht unterstützt nicht unterstützt Drei mal zwei Spalten
„1.233,44“ „EUR“
nicht unterstützt
Foreign
Amount
nicht unterstützt nicht unterstützt Zwei Spalten „1.123,44, „EUR“ nicht unterstützt
Quantity nicht unterstützt nicht unterstützt Zwei Spalten „1.234,44“, „cm“ nicht unterstützt
Duration wie Quantity wie Quantity wie Quantity wie Quantity
PointInTime wie Time Stamp wie Time Stamp Eine Spalte: Inhalt des Attributes value des PointInTime, z.B.  „28.12.2003“ Eine Spalte: Inhalt des Attributes value des PointInTime, z.B. „28#12#2003“

 

Hinweis:
Für Zahlen und Strings ist möglich, mehrere Werte anzugeben und Bereiche zu verwenden. Hierzu wird die Selection-String-Syntax verwendet, die in der Dokumentation Programmier-Schnittstellen für den Datenaustausch im Abschnitt „Format für Selection Strings“ beschrieben ist.

Czy ten artykuł był pomocny?