Neue Anbindung an Microsoft Flow für den Report Server

Microsoft Flow erlaubt es Ihnen, basierend auf diversen Auslösern, eigene Abläufe und Workflows zu definieren. Dazu stehen weit über 200 Dienste wie z.B. Office 365, Facebook, WordPress usw. zur Verfügung, die in den Workflows (genannt Flows) miteinander interagieren können. Diese Dienste bieten neben Aktionen auch Auslöser an, wie zum Beispiel wenn eine Datei erstellt wird (auf Google Drive, DropBox oder auch auf alternativen Diensten wie z.B. box) oder wenn eine eMail empfangen wird. Jeder Flow hat einen Auslöser und ggf. mehrere Aktionen. Dieser Artikel beschreibt, wie man den combit Report Server mit Microsoft Flow verbinden kann.


Abbildung 1: Beispiel Workflow, der nach einer HTTP Anfrage einen zuvor exportierten Bericht per eMail verschickt und ihn danach in der Cloud speichert.

Und so geht’s:

  • Sie benötigen mindestens Version 24 des combit Report Server
  • Die REST API Ihres Report Servers aktivieren (Verwaltung > Erweiterte Einstellungen > REST API aktivieren)
  • Einen Benutzer vom Typ „API-Konto mit Token“ im Report Server anlegen.
  • Eigenen Custom connector mit Micosoft Flow erstellen
  • Lokales Datengateway (On-premises data gateway) installieren, falls der ReportServer in Ihrem Intranet läuft

Lokales Datengateway einrichten (erforderlich, falls der Report Server NICHT im Internet erreichbar ist)

Das lokale Datengateway fungiert als Brücke, da es eine schnelle und sichere Datenübertragung zwischen lokalen Daten (Daten außerhalb der Cloud) und den Power BI-, Microsoft Flow-, Logic Apps- und PowerApps-Diensten bereitstellt.

Durch die REST API des combit Report Server können Sie nun aus Microsoft Flow den Report Server im eigenen Netzwerk anbinden.

Ein Custom Connector für den Datengateway (bei anderen Plattformen auch Service genannt) verbindet sich mit der REST API des Report Servers.

Abbildung 2: Laufendes lokales Datengateway.

Eigenen Connector erstellen

Wenn man einen Report Server betreibt, der auch im Internet erreichbar ist (z.B. https://myserver.com/combitReportServer) muss man sich seinen eigenen Custom Connector erstellen und benötigt das lokale Datengateway nicht.

  1. Auf der Microsoft Flow Seite unter Data auf Custom Connector klicken.

2. Auf die Schaltfläche + Create custom connector klicken, danach Import an OpenAPI file


3. Die Datei openapiflow.json herunterladen. Diese beinhaltet die Definition einiger API-Funktionen der Report Server REST API.

4. Auf Import klicken und die openapiflow.json auswählen. Danach einen Namen für den Connector festlegen und auf Continue drücken.

5. Icon und Farbe festlegen. Adresse des Report Servers angeben und falls die Adresse (z.B. https://localhost/rs24) nur im Intranet (also nicht von außen) verfügbar ist, das Häckchen bei Connect via on-premises data gateway setzen.

6. Mit „Create connector“ wird nun der Connector erstellt.
Die Reiter Security, Definition und Test sind nicht mehr relevant und Sie können direkt Ihren eigenen Flow erstellen.

Da die Authentifizierung bei jeder Aktion individuell geschieht, hat der Custom Connector selbst in Microsoft Flow keine Authentifizierungsart (Authentication Type auf none setzen)

Eigenen Flow erstellen

  1. Create from blank klicken

2. Nochmals Create from blank klicken

3. Beliebigen Trigger (Auslöser des Wokflows) hinzufügen (hier z.B.  When a HTTP request is received)

4. + New step klicken

5. Auf den Reiter Custom gehen und den Connector auswählen, den sie zuvor erstellt haben.

6. Aktion „Get Export of a Report Template“ auswählen

7. Nur bei einer Verbindung mit lokalem Datengateway erforderlich

8. Alle erforderliche Felder ausfüllen (siehe Hinweise für Informationen zu IDs)

9. Save und ggf. Test drücken

Beispiel-Workflow 1: Export einer Berichtsvorlage und anschließendes abspeichern auf Google Drive / Dropbox:

Der Report Server könnte das Speichern auch direkt selbst durchführen. Da die Ablage eines Reports jedoch eine sehr häufig gestellte Anforderung ist, haben wir dies in diesem Workflow als Beispiel mit Hilfe von Microsoft Flow realisiert.

  1. Einen beliebigen Trigger hinzufügen (hier HTTP Request)
  2. Die Aktion „Get Export of a Report Template“ hinzufügen
  3. Verbindung mit ihrem Gateway herstellen
  4. IDs für den Export angeben
    • Hierbei werden eindeutige IDs verwendet. Diese IDs (z.B. A0BCB71A-BA65-45C597F3-1282D9C7C126) können Sie aus der URL rauskopieren, diese steht stets ganz am Ende der Adresse:
      • Für die ExportProfileID das Exportprofil zum Bearbeiten öffnen http://www.report-server.com/combitReportServer/ExportConfig/Edit/A0BCB71A-BA65-45C5-97F3-1282D9C7C126
      • Für die TemplateID die Berichtsvorlage zum Bearbeiten öffnen http://www.report-server.com/combitReportServer/Template/Edit/DA023397-2AEB-417B-9BF9-07DB248D7E96 
  5. Bei Dateiprovider:
    • File content => Add dynamic content
    • Expression Tab
    • Folgenden Ausdruck einfügen: base64ToBinary(body(‚Get_Export_of_a_Report_Template‘)[‚$content‘])

Wichtig:  Bitte die Ausdrücke nicht einfach in das Feld selbst eintragen, sondern rechts in den Expression / Ausdruck Tab

6. Trigger ausführen => Testen!

Beispiel-Workflow 2: Versenden des Berichts per eMail

Führen sie hierfür Schritt 1-5 von Beispiel-Workflow 1 aus.

Danach + New Step:

Anlagen Inhalt (Ausdruck): base64ToBinary(body(‚Get_Export_of_a_Report_Template‘)[‚$content‘])

Anlagen Inhaltstyp (Ausdruck): body(‚Get_Export_of_a_Report_Template‘)[‚$content-type‘]

Sobald das Exportprofil geändert wird ändert sich auch der Content-Type und auch die Dateiendung.

Beispiel-Workflow 3: Ausführen eines geplanten Berichts

Hierfür benötigt man nur die ID des Geplanten Berichts und die Zugangsdaten des API-Nutzers.

Hinweis: Für die TaskID den Geplanten Berichten zum Bearbeiten öffnen http://www.report-server.com/combitReportServer/Task/Edit/AC039DF1-EFB6-4181-A002-171463480E0F


Die Geplanten Berichte und deren Aktionen können dann im Report Server definiert werden. Microsoft Flow erhält beim Ausführen eines geplanten Berichts nicht den Export des Berichts selbst.

Hinweise:

  • Statt body(‚Get_Export_of_a_Report_Template‘) am Besten den vorgefertigten Button nehmen, da die Aktion u.U. nicht ‚Get_Export_of_a_Report_Template‘ heißt:

Erklärungen:

IDs
Im Artikel werden eindeutige IDs verwendet. Diese IDs (z.B. A0BCB71A-BA65-45C597F3-1282D9C7C126) können Sie aus der URL rauskopieren, diese steht stets ganz am Ende der Adresse:

  • Für die TaskID den Geplanten Berichten zum Bearbeiten öffnen http://www.report-server.com/combitReportServer/Task/Edit/AC039DF1-EFB6-4181-A002-171463480E0F
  • Für die ExportProfileID das Exportprofil zum Bearbeiten öffnen http://www.report-server.com/combitReportServer/ExportConfig/Edit/A0BCB71A-BA65-45C5-97F3-1282D9C7C126
  • Für die TemplateID die Berichtsvorlage zum Bearbeiten öffnen http://www.report-server.com/combitReportServer/Template/Edit/DA023397-2AEB-417B-9BF9-07DB248D7E96 
  • Ausdruck: base64ToBinary(body(‚Get_Export_of_a_Report_Template‘)[‚$content‘]) 

Beim Export einer Berichtsvorlage via REST API wird der fertige Bericht (PDF, DOCX, etc.) mit Base64 kodiert und wie folgt von der REST API zurückgegeben:

Der Ausdruck konvertiert die übertragene Datei aus Base64 zurück, welche im Body der Aktion Get_Export_of_a_Report_Template als $content hinterlegt ist.

Die vorgefertigten Funktionen base64ToBinary und body werden von Microsoft Flow bereitgestellt (es gibt noch viele weitere um Daten zu verarbeiten):

Fazit

Nach der Konfiguration des Custom Connectors und mithilfe dieser Beispiel-Workflows können Sie nun das Exportieren bzw. Erzeugen von Berichten in Ihre Flows integrieren. Sei es das Hochladen auf einen beliebigen Cloud-Server oder das allgemeine Verarbeiten eines Berichts.

Darüber hinaus wird der Report Server in der nächsten Version auch Flows über WebHooks auslösen können.

Empfohlene Artikel

Schreibe einen Kommentar