Externe Datenquellen verwalten

Wichtig

Die Schnittstelle für externe Datenquellen für DMN Datenobjekte ist für Ihr On Premise-System auf Anfrage verfügbar. Falls Sie die Schnittstelle aktivieren möchten, wenden Sie sich bitte an das Signavio Support Team, das Sie unter support@signavio.com erreichen.

Im Signavio Decision Manager können Sie Glossareinräge zur Definition von Eingabewerten von Entscheidungstabellen verwenden.

Für die Datentypen Textliste und Hierarchie können Sie diese Definitionen über einen externen Service beziehen. you can set up external services to retrieve corresponding data objects.

Dieser Artikel erklärt, wie Sie einen solchen Service implementieren und konfigurieren können.

Architektur

Das folgende Diagram bietet eine Übersicht über die Systemarchitektur der Schnittstelle:

Überblick über die Systemarchitektur der Schnittstelle

Überblick über die Systemarchitektur der Schnittstelle

Die Komponente auf der linken Seite stellt den Signavio Decision Manager dar. Die rechte Seite repräsentiert den externen Service, der die gewünschten Datenquellen zur Verfügung stellt. Falls dies notwendig ist, konvertiert der externe Service die Daten zudem in das Datenformat, das vom Signavio-System akzeptiert wird.

Der externe Service kann in den folgenden Varianten aufgesetzt werden:

  1. Der Signavio Decision Manager greift direkt auf den Service zu. Hierfür ist es notwendig, dass der Service vom Signavio Decision Manager über HTTP(S) GET-Anfragen erreichbar ist. Zudem muss die entsprechende Antwort dem unten spezifizierten Datenformat entsprechen.
  2. Alternativ können Sie auf die Range Accessor Service Webanwendung, die von Signavio zur Verfügung gestellt wird, zurückgreifen. Hierbei können Sie die Klasse **AbstactExternalValueRange (mit Hilfe einer nicht-abstrakten Klasse) anpassen und den RangeServingServlet einrichten. Hierdurch können Sie bestehende Services einfach anpassen, da der Range Accessor Service die Konvertierung des Datenformats entsprechend vornehmen kann. Weitere Details folgen in den nächsten Abschnitten.

Datenformat

Der Signavio Decision Manager erwartet, dass die Antwort des externen Services der folgenden JSON-Struktur entspricht:

<response> := <enumResponse> | <hierarchyResponse> | [<enumItem>*]

<enumResponse> := { type: "enumeration", enumItems: [<enumItem>*] }
<enumItem> := { id:<String>, title:<String> }

<hierarchyResponse> := { type: "hierarchy", hierarchyItems: [<hierarchyItem>*] }
<hierarchyItem> := {id:<String>, title:<String>, children: [<hierarchyItem>*] }

Die Antwort ist entweder als enumeration (Auflistung) oder hierarchy (Hierarchy) deklariert und enthält Typdeklaration und Items.

Die folgenden Beispiele dienen als Referenzen für die Datenobjekte, die Ihr externer Service anbieten soll:

Beispiel, Auflistung:

{ type: "enumeration",
   enumItems:  [
      {id:"firstPlace", title:"Gold medal"},
      {id:"secondPlace", title:"Silver medal"},
      {id:"thirdPlace", title:"Bronze medal"}
   ]
}

Die Antwort ist ein JSON-Objekt mit einer Typdeklaration und einem JSON-Array von enumeration-Items. Jedes Item ist ein JSON-Objekt mit den Pflichtattributen id und title. Alle weiteren Attribute werden ignoriert.

Beispiel, Hierarchie:

{
  type: "hierarchy",
  hierarchyItems: [{
    id: "am",
    title: "America"
  }, {
    id: "eu",
    title: "Europe",
    children: [{
      id: "uk",
      title: "United Kingdom"
    }, {
      id: "de",
      title: "Germany",
      children: [{
        id: "berlin",
        title: "Berlin"
      }]
    }, {
      id: "fr",
      title: "France"
    }]
  }, {
    id: "as",
    title: "Asia"
  }]
}

Die Antwort ist ein JSON-Objekt mit einer Typdeklaration und einem JSON-Array von hierarchy-Items. Jedes Item ist ein JSON-Objekt mit den Pflichtattributen id und title und dem optionalen Attribut children.

children ist ein JSON-Array, das das selbe Format wie ein hierarchy-Objekt hat. Alle weiteren Attribute werden ignoriert.

Wichtig

Das id-Attribut darf keine Leerzeichen enthalten und das title-Attribut muss mit einem alphabetischen Buchstaben beginnen.

Range Accessor Service

Signavio stellt eine Webapplikation zur Verfügung, die entweder als Adapter eines bereits existierenden Services oder als eigenständige Datenquelle verwendet werden kann.

In jedem Fall muss der Output mit dem oben spezifizierten Datenformat übereinstimmen. Die Beispielanwendung Signavio Range Accessor Service enthält (unter anderem) die folgenden relevanten Dateien und Ordner:

  • RangeServingServlet.java (com/signavio/rangeservice/servlet)

    Diese Klasse antwortet auf HTTP(S) GET Anfragen mit von der URL abhängigen Beispiel-Datenobjekten. Ersetzen Sie die Referenzen zu ExampleEnumValueRange und ExampleHierarchyValueRange mit Ihrer eigenen Implementierung der abstrakten Klasse AbstractExternalValueRange.

  • AbstractExternalValueRange.java (com/signavio/rangeservice/conversion/) Diese abstrakte Klasse muss erweitert werden und in der Klasse RangeServingServlet.java registriert werden, um einen eigen Service zu implementieren.Die einzige zu implementierende Methode ist:

    public byte[] getValues(HttpServletRequest req) throws JsonProcessingException {...} Die Methode gibt eine byte[]-Repräsentation von AbstractRangeExchange zurück und kann anschließend in RangeServingServlet.java verwendet werden. Optional kann die Klasse zudem ein generelles Anwendungsfall-spezifisches Setup implementieren.

  • Die Unterklassen im Beispiel-Subpackage dienen als Referenzbeispiele für die Implementierung von Auflistungs- und Hierarchieprovidern. Die Klasse ExampleEnumValueRange gibt eine statische Liste deutscher Bundesländer zurück. Die Klasse instantiiert EnumRangeExchange aus der Länderliste und gibt die entsprechende bye[]-Repräsentation zurück. Die Klasse ExampleHierarchyValueRange verwendet eine bereits korrekt formatierte JSON-Datei, erstellt eine Instanz von HierarchyRangeExchange aus der Datei und gibt die entsprechende bye[]-Repräsentation zurück. Die Dateien dienen als Beispiele und können bei Bedarf gelöscht werden. Vergessen Sie nicht, die entsprechenden Referenzen RangeServiceStartup ebenfalls zu entfernen.

  • AbstractRangeExchange.java (com/signavio/rangeservice/util/exchange/)

    Diese Klasse repräsentiert das vom Signavio-System akzeptierte Datenformat. Die Klasse verwendet die Jackson-Bibliothek, um ein JSON-zu-Java Objekt-Mapping vorzunehmen. Details zur Bibliothek sind unter https://github.com/FasterXML/jackson verfügbar. Entsprechend der beiden akzeptierten Datenstrukturen gibt es die Unterklassen HierarchyRangeExchange und EnumRangeExchange.

Bemerkung

Um einen reibungslosen Ablauf zu garantieren, sollten keine weiteren Dateien und Ordner geändert, gelöscht oder verschoben werden, da diese zu Kompilierung- oder Laufzeit benötigt werden.

Externe Datenquellen in Signavio hinzufügen

Ein externer Service muss in Signavio registriert werden, damit er verwendet werden kann. Öffnen Sie unter Setup den Dialog Notationen/Attribute verwalten und wählen Sie das Tab Glossar aus. Wählen Sie nun den Link externe Datenquellen verwalten im Beschreibungstext aus:

Klicken Sie auf den Link um den Verwaltungsdialog für externe Services zu öffnen.

Klicken Sie auf den Link um den Verwaltungsdialog für externe Services zu öffnen.

Klicken Sie nun auf Hinzufügen:

Klicken Sie auf "Hinzufügen" um einen neuen Service zu registrieren.

Klicken Sie auf “Hinzufügen” um einen neuen Service zu registrieren.

Ein Service besteht aus seinem Namen, seiner unique URL und seiner Cache-Konfiguration:

  • Name Der Name wird im Signavio Glossar als Label verwendet.
  • URL Das Parameter gibt die URL an, gegen die die HTTP(S) GET-Anfrage gesendet wird, um die externen Daten zu erhalten.
  • Cache Es ist möglich, die Daten temporär zwischenzuspeichern. Falls die Caching aktiviert ist, wird der referenzierte Service für das konfigurierte Zeitintervall nicht kontaktiert und statt dessen auf die vorkonfigurierten Werte zugegriffen. Wir empfehlen Caching zu aktivieren, da ansonsten jeder Ladevorgang des Glossars eine Anfrage an den externen Service auslöst. Falls der externe Service nicht Verfügbar ist, bricht das Signavio-System die Anfrage nach einem Timeout ab.

Klicken Sie auf Hinzufügen um die Registrierung des neuen Services abzuschließen:

Unter Externe Datenquellen referenzieren erfahren Sie, wie Sie bei der Datenmodellierung im Glossar externe Services referenzieren können.