Kommunikation mit anderen Systemen

Gemäß des Grundkonzepts von Schleupen.CS 3.0 stehen alle Services und Business-Events zur Nutzung durch Externe bereit. Auch die Integration eigener CS 3.0-Bausteine (Länder und GP-Komponenten) durch Dritte ist konzeptionell vorgesehen und kann zur Verknüpfung von externen Systemen verwendet werden.

Zum Datenabgleich zwischen Schleupen.CS 3.0 und einem externen System für redundante Datenbestände kann die sogenannte Systemintegration verwendet werden. Für einen Datenabgleich muss dabei ein Mapping der unterschiedlichen Datenstrukturen beschrieben und die Systeme an die Systemintegration angebunden werden. Die besitzt bis auf spezielle Anknüpfungspunkte und Algorithmen die unter Makroarchitektur, Mikroarchitektur Geschäftsprozess-Komponenten und Mikroarchitektur Länder beschriebene Grundarchitektur.

Darüber hinaus bietet Schleupen.CS 3.0 erweiterte Mechanismen für die einfachere Nutzung von anderen Systemen an, die sogenannten privilegierten Schnittstellen. So zum Beispiel sehen wir die Marktkommunikation als eine privilegierte Schnittstelle an; sie besteht aus mehreren Bausteinen und verknüpft mehrere Marktteilnehmer (Lieferant, Netzbetreiber …) über den Austausch von Edifact-Nachrichten per automatisierter Mail-Kommunikation miteinander. Die Marktkommunikation besitzt bis auf spezielle Anknüpfungspunkte und Algorithmen die unter Makroarchitektur, Mikroarchitektur Geschäftsprozess-Komponenten und Mikroarchitektur Länder beschriebene Grundarchitektur. Die Besonderheiten von privilegierten Schnittstellen werden unten genauer beschrieben. Die meisten privilegierten Schnittstellen fußen auf synchronen REST-Schnittstellen, die unmittelbar ein Ergebnis liefern und / oder auf asynchronen REST-Schnittstellen, die synchron den auszuführenden Auftrag quittieren und bei Fertigstellung des Auftrags eine Callback-Schnittstelle zu einem späteren Zeitpunkt aufrufen und somit eine Antwort geben. 

All diese Integrationsszenarien werden im Folgenden genauer beschrieben.

Integration im Frontend

Die Dialogschritte und Dialogabläufe der durch Schleupen.CS bereitgestellten Frontends können einfach mithilfe des visuellen WebModelers angepasst werden. Diese Möglichkeit kann insbesondere zur Integration von externen Systemen verwendet werden. Hierzu gehört insbesondere:

  • Web-Anwendungen können als Link oder eigene Seite eingebunden werden.
  • Services können von Dialogseiten genutzt werden.

Die Umsetzung dieser Anforderungen ist in Benutzeroberflächen beschrieben.

Anbindung externer Services im UI

Da für diesen Lösungsweg derzeit nur WCF-Services verwendet werden können, kann man einen auch einen anderen Weg gehen, der im folgenden beschrieben wird.

Anbindung über Adapter-Service

Eine Möglichkeit des minimal-invasiven Anbindens eines externen Service ist, diesen über einen Adapter-Service wie folgt anzuschließen: 

Der Adapter-Service implementiert die Schleupen.CS-Schnittstelle, delegiert an die Original-Implementierung und ergänzt diesen durch einen Aufruf gegen das externe System. Dieser Adapter-Service wird dann automatisch im UI durch Registrierung in der Service Registry verwendet.

Dieses Vorgehen eignet sich natürlich nicht für alle Anwendungsfälle, kann aber an beliebigen Stellen in Schleupen.CS angewendet werden!

Integration im Reporting

3rd-Party-Services und Datenquellen sind im Reporting nutzbar. Hierzu wird in einem Birt Report eine Service Operation als Datenquelle angebunden und im Report verwendet:

Birt-Designer

Integration in Prozessen

Auch Geschäftsprozesse können bezüglich der Nutzung von Web-Services dritter Anwendungen erweitert werden. Auch in diesem Fall kann dies einfach mithilfe des WebModelers  erfolgen. Details hierzu finden sich unter Workflows und werden daher hier nicht weiter ausgeführt.

Anbindung externer Services in Workflows

Es können zudem eigene GP-Komponenten erstellt und integriert werden. Dies veranschaulicht folgende Abbildung:

Integration externer GP-Komponenten

Um ein Land oder eine GP-Komponente in Schleupen.CS zu installieren, muss ein sogenanntes DeploymentPackage erstellt werden. Hiervon gibt es verschiedene Typen. Ein Service-Package hat dabei folgende Grundgestalt:

<Package ...>
  <Artifact xmlns="urn://Schleupen.CS.PI.DP.Packaging_3.2">
    <Id>Schleupen.AS.MT.BIB.Services</Id> ...
  </Artifact>
  <DeploymentRoles xmlns="urn://Schleupen.CS.PI.DP.Packaging_3.2">
    <DeploymentRole>BusinessProcessServer</DeploymentRole>
  </DeploymentRoles>
  <Content>
    <ApplicationPool>...</ApplicationPool>
    ...
    <ServiceImplementationGroup>
      <Name>Bibliotheksverwaltung</Name>
    </ServiceImplementationGroup>
    ...
    <File>...</File>
    ...
    <ConfigService>...</ConfigService>
    <ServiceImplementation>
      <Interfaces><Interface>Schleupen.AS.MT.BIB.Benutzerkonten.BuecherAusleihenActivityService_3.3</Interface></Interfaces>
      <RelativeAddress>Schleupen.AS.MT.BIB.Benutzerkonten.BuecherAusleihenActivityService_3.3.BuecherAusleihenActivityService.svc</RelativeAddress>
      <Location>SystemUsages</Location>
    </ServiceImplementation>
    ...
    <ServiceInterface><Name>Schleupen.AS.MT.BIB.Benutzerkonten.BuecherAusleihenActivityService_3.3.wsdl</Name>
    ...
    </ServiceInterface>
  </Content>
</Package>

Integration in Services

Wie oben bereits beschrieben, können Services implementiert werden, die vorhandene Services zu einem neuen Service orchestrieren. Dies kann über Workflows wie im vorherigen Abschnitt erfolgen oder über implementierte Services, die synchron orchestrieren

Orchestrierung mit externem Service

Integration eigener Länder

3rd-Party-Komponenten können als „Länder“ in die Plattform integriert werden. Die konkrete Implementierung der dazu notwendigen Werkzeuge stellen wir auf Anfrage gerne zur Verfügung. Folgende Voraussetzungen sind hierfür zu erfüllen:

Integration externer Länder
  • Service-Package mit WCF-Webservices samt Registrierung in der Service-Registry und Informationen zur Erstellung der notwendigen Messaging-Artefakte
  • DB-Patches mit den für das Produkt notwendigen Datenbank-Objekten wie Tabellen, Views, Constraints, Schema und so weiter

Plugins

An Stellen, an denen die Funktionen eines Landes austauschbar sein sollen, kommen Plugins zum Einsatz. Die bekanntesten Beispiele sind

  • Archivierung
  • DSGVO-Manager
  • Systemintegration

Systemintegration

Die Systemintegration dient der Integration externer Systeme. Insbesondere ist hier der Abgleich der Datenbestände angedacht. Die Systemintegration ist hier detailliert beschrieben.

Privilegierte Schnittstellen

Privilegierte Schnittstellen (privilegiert bedeutet „bevorzugt“, „mit Sonderrechten versehen“) in Schleupen.CS 3.0 sind speziell ausgestaltete Schnittstellen, die insbesondere für Integrationsszenarien im Zusammenspiel mit externer Software oder Software von Drittanbietern geschaffen werden. Die Schnittstellen werden speziell für die Nutzung in definierten Anwendungskontexten maßgeschneidert (Prozess- und / oder Datenintegration). Diese Maßschneiderung erfolgt in der Regel sowohl technisch als auch fachlich.

Privilegierte Schnittstellen sind dann einfacher nutzbar, gesondert dokumentiert, mit einen Teil der Nutzer explizit erarbeitet, abgestimmt und beachten insbesondere Aspekte wie Sicherheit, Resilienz und Monitoring. Wichtig ist, dass derartige Schnittstellen eine höhere Stabilität aufweisen, d.h. länger sowohl semantisch als auch technisch kompatibel bleiben. Sie umfassen in der Regel mehrere technische Schnittstellen (z.B. mehrere Web-APIs) und bei Änderungen der Gesamt-Schnittstelle werden die Nutzer explizit informiert und eine neue Version der Schnittstellenspezifikation bereitgestellt.

Ein wichtiger Aspekt für die Erstellung von privilegierten Schnittstellen ist, dass die Nutzung durch Konsumenten dadurch deutlich vereinfacht wird, indem mehrere Serviceaufrufe zu einem gebündelt werden. Sie stellen somit eine sowohl technische als auch fachliche Fassade von Schleupen.CS 3.0 dar. Diese Fassaden sind keine Standard-Architektur-Bausteine wie Geschäftsprozesskomponenten und Länder, da sie eine andere Struktur aufweisen. Sie sind nicht Bestandteil von Schleupen.CS-Core.

Privilegierte Schnittstellen als Fassade des Kerns von Schleupen.CS 3.0
Privilegierte Schnittstellen sind Fassaden zu CS 3.0

Die vereinfachte Nutzung wird auch durch Kapselung technischer Details wie das Verbergen der Systemstruktur erreicht: Möchte man Services von Schleupen.CS 3.0 direkt nutzen, so benötigt man ein SessionToken zur Ausführung um einen Systemstrukturelement-Knoten zu adressieren und damit den Datenkontext für den Service zu bestimmen. Dieses SessionToken muss den Services von Schleupen.CS 3.0 durch den Aufrufer mitgegeben werden. Derartige Interna werden bei privilegierten Schnittstellen verborgen, da diese eine gewisse Komplexität in der Nutzung mit sich bringen. Um das Wissen der Systemstruktur nicht nach außen zu exponieren und diese zu kapseln, gleichzeitig aber nicht zu viel an Flexibilität zu verlieren, kann ein Mapping von Mandanten des externen Systems zur Schleupen.CS Systemstruktur konfiguriert werden. Als Nutzer der privilegierten Schnittstelle muss dann lediglich der Mandant des externen Systems in alle Schnittstellen mitgegeben werden. Die Implementierung der privilegierten Schnittstellen routet dann zum zugeordneten Systemstrukturelement.

Systemstruktur-Mandant-Mapping

Die von außen aufgerufene Schnittstelle operiert auf Systemebene der Systemstruktur. Hier ist das Mapping in der zugeordneten Datenbank konfiguriert. Nach der Ermittlung des Ziel-Systemstrukturelement-Knotens wird das SessionToken für die weiteren Aufrufe erzeugt und bei den Aufrufen den unterliegenden Services mitgegeben.

Für privilegierte Schnittstellen werden Sicherheitsaspekte wie Authentifizierung, Autorisierung und Verfügbarkeit wie 24/7 bei der Definition der jeweiligen Schnittstelle explizit festgelegt. Auch ist es ideal, wenn diese möglichst separat betrieben werden können, um diese von Schleupen.CS 3.0 abschotten zu können. Derzeit erfolgt der Zugriff auf die privilegierten Schnittstellen per VPN-Tunnel, die Authentifizierung per http-Basic-Authentifizierung oder per OpenID Connect.

Da privilegierte Schnittstellen auch Resilienzmechanismen wie Retries, Circuit Breaker etc. unterstützen, haben diese viel mit API-Gateways gemeinsam.

Eine privilegierte Schnittstelle setzt sich im allgemeinen aus synchronen und asynchronen Bestandteilen zusammen. Diese werden im Folgenden betrachtet.

Synchrone Fassade

Eine synchrone Fassade arbeitet für den Nutzer blockierend, d.h. dass der aufrufende Thread blockiert wird, bis eine Antwort zurückgegeben wurde. Diese Fassade ruft Services der GP-Komponenten und Länder auf, indem der Aufruf nach CS 3.0 synchron delegiert wird.

Synchrone privilegierte Schnittstelle

Eine synchrone Fassade wird verwendet, wenn Daten gelesen werden sollen oder Daten einfach persistiert werden, also keine lang laufenden Prozesse ausgeführt werden. Dabei muss der Nutzer resilientes Verhalten - beispielsweise Retrys bei Timeout - selber implementieren.

Die Schnittstellen sind i.A. als REST-Schnittstellen ausgeprägt (genauer: Web-APIs). In dieser wird der Mandant des externen Systems angegeben, was intern wie oben beschrieben gemappt wird.

Beispiel der Schnittstellen-Signatur: 

Die privilegierte Schnittstelle Redispatch verbindet Schleupen.CS mit Redispatch-Systemen unterschiedlicher Hersteller. Der Endpunkt zur Übergabe abrechnungsrelevanter Ausfallarbeit hat folgende Gestalt:

http://<server>:<port>/Schleupen/Schleupen.CS.RD.RDK.REST.Services/RD/RDK/RedispatchEmpfangActivityService _3.1.svc/<RedispatchMandant>

Wie hieran ersichtlich ist, wird der Mandant in der URL angegeben. Der Aufruf muss per POST erfolgen, wobei die Nutzdaten als JSON-Objekt übergeben werden. Details: siehe Redispatch-Spezifikation.

Aufbau

Jede privilegierte Schnittstelle besitzt eine eigenes Service- und Datenmodell, da sie mit dem Kern von Schleupen.CS überschneidende Begrifflichkeiten verwenden (vgl. Kanonisches Modell) die meist nicht von Schleupen definiert werden. Diese Typen finden sich in den gesonderten Schnittstellen-Dokumentationen wieder. Zudem wird mit separaten Servicemodellen der notwendigen höheren Stabilität von privilegierten Schnittstellen Rechnung getragen. Auch Services unterschiedlicher privilegierter Schnittstellen können sich in Ihrer Funktionalität überschneiden, da diese jeweils für einen Nutzungskontext ausgerichtet sind.

Jede privilegierte Schnittstelle hat ein eigenes Servicemodell

Das folgende Diagramm zeigt die innere Struktur des Templates einer synchronen Fassade einer privilegierten Schnittstelle. Diese ist ein separat deploybarer Baustein, der REST-Services bereitstellt und obige Schnittstellenbeschreibungen implementiert. Er beinhaltet intern das Systemstruktur-Mandant-Mapping das in einer DB auf Systemebene persistiert ist. Mithilfe des Service CreateSessionTokenActivityService des Service Bus wird ein SessionToken erzeugt und in die synchronen Aufrufe der Services von Schleupen.CS Core mitgegeben.

Standard-Aufbau und Kontext einer privilegierten Schnittstellen (blau)

Asynchrone Fassade

Bei einer asynchronen Fassade wird der Client nur für die Übergabedauer blockiert und stößt die serverseitige Verarbeitung an. Die Übergabe erfolgt hierbei an die Systemintegration (Schleupen.CS.SI_Systemintegration), da diese ein geeignetes Monitoring, Skalierung und Lastverteilung bietet. Die Antwort an den Aufrufer erfolgt über Callback-REST-Schnittstellen und eine Korrelations-ID. Diese Korrelations-ID ist notwendig, damit der initiierende Aufrufer die Antwort der Anfrage zuordnen kann (siehe hierzu bspw. https://www.enterpriseintegrationpatterns.com/CorrelationIdentifier.html).

Asynchrone Fassaden verwenden intern die Systemintegration

Asynchrone Fassaden kommen insbesondere zur Anwendung, wenn Schleupen.CS-Prozesse angestoßen werden, die langlaufend sind.

Ein Beispiel einer asynchronen privilegierten Schnittstelle ist in SMGWA beschrieben!

Aufbau

Das folgende Diagramm zeigt die Default-Struktur einer privilegierten Schnittstelle mit synchronen und asynchronen Bestandteilen. Diese ist ein separat deploybarer Baustein, der REST-Services bereitstellt und obige Schnittstellenbeschreibungen implementiert. Er beinhaltet für den synchronen Fassadenteil wie die synchrone Fassade intern das Systemstruktur-Mandant-Mapping. Im asynchronen Fall ruft die privilegierte Schnittstelle die Systemintegration auf, die mithilfe des SI-Adapters auf die Typen der Schnittstelle des Landes mappt, die Requests als sogenannte Demands zwischenpuffert und schlussendlich an das Land den passenden Request zustellt. Um eine Antwort an das aufrufende externe System zu geben, erfolgt die Kommunikation der Rückrichtung ebenfalls über die Systemintegration, wobei im SI-Adapter im Schritt des "Schreibens" unter Zuhilfenahme des Mappings der Callback-Service aufgerufen wird.

Der Baustein Systemintegration wird verwendet, da hierdurch automatisch Resilienzmechanismen, Monitoring etc. zur Verfügung stehen!

Standard-Aufbau und Kontext der privilegierten Schnittstellen (blau) mit synchronen und asynchronen Bestandteilen

Datei-Schnittstellen?

Häufig werden - auch heute noch - Datei-Schnittstellen zum Austausch zwischen Systemen verwendet. Diese sind im Allgemeinen in Schleupen.CS nicht vorgesehen. Hierfür gibt es u.a. folgende Gründe:

  • Generell sind Datei-Schnittstellen breiter und unsicherer. Auch Mechanismen wie OpenID Connect können nicht genutzt werden.
  • Reilienz-Mechnismen müssen manuell nach-codiert werden, was Kosten-intensiv, nicht Standardisiert und fehlerträchtig ist.
  • Eine Monitoring, das auf Metriken basiert ist in der Regel nicht gegeben.

Bietet beispielsweise Fremd-Software lediglich einen Export an, so werden im Rahmen der Individualisierung im Projektgeschäft mitunter Adapter erstellt, die diese Datei-Schnittstelle nutzen und die Schleupen.CS 3.0-Services bedienen.

Cookie Consent mit Real Cookie Banner