Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Die entsprechende Datei muss den Punkt Administration → Speicherverwaltung im Verzeichnis “OpenAPI” abgelegt werden. Zur Spezifikation von Webhooks wird derzeit das Custom-Property “x-event” verwendet. Diese Vorgehendweise wird voraussichtlich im Rahmen der nächsten Connect Server Versionen angepasst.

Vorgehensweise

Navigieren Sie zur Seite Connection Designer → Services und klicken Sie auf die Schaltfläche “Service hinzufügen”. Nun erscheint ein Fester zur Eingabe des Herstellers, des Produktnamens und der Version des Produkts bzw. der API. Geben Sie hier exakt dieselben Informationen ein, die Sie für die Benennung der OpenAPI-Datei verwendet haben und klicken Sie anschließend auf die Schaltfläche “OK”.

...

Im unteren Bereich des Editors befinden sich drei JSON Editoren. Der oberste mit der Beschriftung “JSON Schema für die Konfiguration“ definiert ein JSON Schema, welches die bei der Anlage einer Verbindung benötigten Konfigurationsfelder beschreibt. Im obigen Beispiel muss eine Anmeldung an ein SAP-System mit Conigma CCM erfolgen. Hierfür wird die Basis URI des entsprechenden Service, der SAP-Mandant, der SAP-Benutzer, das Passwort des SAP-Benutzers sowie die gewünschte Anmeldesprache benötigt. Hierbei sin sind alle Felder mit Ausnahme der Anmeldesprache verpflichtend. Ein entsprechendes JSON Schema für die Konfiguration kann z. B. folgendermaßen aussehen:

Code Block
languagejson
{
  "type": "object",
  "properties": {
    "baseUri": {
      "type": "string",
      "format": "uri",
      "title": "Base URI of HTTP service of the SAP system"
    },
    "sapClient": {
      "type": "string",
      "pattern": "[0-9]{3}",
      "title": "SAP client"
    },
    "sapUser": {
      "type": "string",
      "title": "SAP user"
    },
    "sapPassword": {
      "type": "string",
      "title": "SAP password"
    },
    "sapLanguage": {
      "type": "string",
      "pattern": "[A-Z0-9]",
      "default": "E",
      "title": "SAP language code"
    }
  },
  "required": [
    "baseUri",
    "sapClient",
    "sapUser",
    "sapPassword",
    "sapLanguage"
  ]
}

Nähere Informationen zu JSON Schema allgemein finden Sie unter folgendem Link:

...

Die folgenden beiden JSON Editoren definieren den für die API bereitgestellten Client bzw. den für die API bereitgestellten Server.

Als Client benötigt dieses Beispiel einen HTTP-Client (Klasse Http.Client.HttpClient). Der HTTP Client benötigt die Basis-URI des Service und bezieht diese mittels der JSON Path Expression $.connection.config.baseUri aus der Konfiguration der Connection. Für HTTP Anforderungen vom Typ POST, PUT und DELETE benötigt SAP ein CSRF-Token. Die entsprechende Funktionalität wird als Handler (Klasse Http.Client.Handlers.HttpCsrfTokenHandler) eingebunden. Da der Service eine Authentifizierung mittels Basic Authentication erfordert muss ein zusätzlicher Handler (Klasse Http.Client.Handlers.HttpBasicAuthenticationHandler) eingebunden werden. Dieser bezieht den Benutzernamen und das Passwort per JSON Path Expression aus der Konfiguration der Connection. Zuletzt wird noch ein Request Update Handler eingebunden (Klasse Http.Client.Handlers.HttpRequestUpdateHandler) welcher bei allen HTTP Anforderungen die Query-Parameter für den SAP-Mandant sowie die Anmeldesprache ergänzt.

Das optionale Attribut “httpPerformanceTestMethodName” spezifiziert den Namen einer Methode aus dem OpenAPI-Dokument, welche für Verbindungs- und Performancetests verwendet werden kann.

Code Block
languagejson
{
  "$class": "Http.Client.HttpClient",
  "$params": {
    "baseUri": "$.connection.config.baseUri",
    "handlers": [
      {
        "$class": "Http.Client.Handlers.HttpCsrfTokenHandler",
        "$params": {
          "tokenFetchMethodName": "ping",
          "headerName": "x-csrf-token",
          "renewValue": "fetch",
          "autoRenewOnGetRequest": true
        }
      },
      {
        "$class": "Http.Client.Handlers.HttpBasicAuthenticationHandler",
        "$params": {
          "user": "$.connection.config.sapUser",
          "password": "$.connection.config.sapPassword"
        }
      },
      {
        "$class": "Http.Client.Handlers.HttpRequestUpdateHandler",
        "$params": {
          "defaultQueryParameters": [
            {
              "key": "sap-client",
              "value": "$.connection.config.sapClient"
            },
            {
              "key": "langu",
              "value": "$.connection.config.sapLanguage"
            }
          ]
        }
      }
    ],
    "httpPerformanceTestMethodName": "ping"
  }
}

Als Server wird ein HTTP-Server (Klasse Http.Server.HttpServer) zur Verarbeitung der Webhooks benötigt. Zusätzliche HTTP-Handler kommen hier in diesem Beispiel nicht zum Einsatz.

Code Block
languagejson
{
  "$class": "Http.Server.HttpServer",
  "$params": {
    "handlers": []
  }
}