News combit Dev Blog

Brandneue Komponente: "combit.ReportServer.ClientApi"

Veröffentlicht: Dienstag, 24. Oktober 2017 | 2 Kommentar(e)
 
Wollten Sie schon immer Ihre List & Label Projekte und Datenprovider auf einen zentralen Webserver migrieren, um sie mit wenigen Zeilen Code auf ein Android oder iOS Tablet zu exportieren und anzuzeigen? Mit der neuen Version 23 haben wir gute Neuigkeiten für Sie!

Unsere Stand-Alone Server Reporting-Lösung combit Report Server (in der List & Label Enterprise Edition enthalten) bietet bereits seit einigen Jahren eine einfache Möglichkeit zur Integration in Ihre eigenen Anwendungen über die REST API. Die neue Assembly combit.ReportServer.ClientApi, die mit der Version 23 ausgeliefert wird, ermöglicht es Ihnen, viele (neue) Funktionen der Report Server API mit nur wenigen einfachen Zeilen C#/VB.NET Code zu nutzen. Die gesamte HTTP-Kommunikation wird intern verwaltet, so dass die Verwendung der REST-API so einfach wie mit jeder regulären. NET-Bibliothek wurde. Die Funktionen umfassen den Export von Berichten, das Hochladen neuer Berichtsprojekte, das Anlegen neuer Datenquellen, die Verwaltung des Servers und vieles mehr.

Die Beschreibung aller Funktionen der neuen Assembly würde weit über den Umfang dieses einleitenden Blogposts hinausgehen, also konzentrieren wir uns auf ein winziges Code-Beispiel, um Ihnen zu zeigen, wie einfach es jetzt ist, einen Bericht vom Server zu erhalten. Beachten Sie, dass fast alle Funktionen in dem umfangreichen Beispielprojekt, das mit der neuen Assembly mitgeliefert wird, demonstriert werden. Stellen Sie sich eine App vor, die Sie vielleicht schon mit List & Label entwickelt haben: Wir wollen dem Anwender eine Liste aller verfügbaren Berichte präsentieren und den ausgewählten Bericht als PDF-Datei speichern. Mit dem combit Report Server werden die Projektdateien und Datenquellen auf dem zentralen Server verwaltet, so dass zunächst eine Liste der verfügbaren Projekte geladen werden muss:


Bevor wir das tun können, müssen wir uns natürlich authentifizieren und mit dem Report Server verbinden:

var options = new ClientOptions()
{
    Authentication = new ApiTokenAuthentication("ApiClient123", "XXXXXXXX")
};

var serverUrl = "http://localhost/combitReportServer";
var reportServer = await ReportServer.ConnectAsync(serverUrl, options);


Nachdem wir die Verbindung zum Server hergestellt haben, können wir den Server nach einer Liste aller verfügbaren Berichtsvorlagen fragen, um die ListBox zu füllen:

var reportTemplates = await reportServer.ReportTemplates.GetAllAsync();
foreach (ReportTemplate report in reportTemplates)
{
    listBox.Items.Add(report);
}


Sobald der Benutzer auf den Button klickt, können wir den Export vorbereiten (z. B. einige Berichtsparameter definieren) und die PDF-Datei vom Server exportieren lassen.

var selectedReport = (ReportTemplate)listBox.SelectedItem;

// Prepare the export on the client
var preparedExport = reportServer.Exporter.PrepareExport(selectedReport.Id);
preparedExport.ReportParameters.Add("Year", 2017);

// Send the export job to the server
var exportResult = await preparedExport.ExportAsync();


Die einzige verbleibende Aufgabe besteht darin, die erzeugte PDF-Datei auf den Client herunterzuladen.

await exportResult.DownloadFilesAsync(@"C:\Reports");


Das war einfach:


Jetzt noch das Sahnehäubchen: Die combit.ReportServer.ClientApi Assembly ist

  • plattformunabhängig,
  • kompatibel mit .NET Classic und .NET Core (gebuildet gegen .NET Standard 1.3),
  • unterstützt die Verwendung von async/await und
  • kommt mit einem umfangreichen C#-Beispielprojekt und einer umfangreichen Dokumentation.


Wenn Sie bestehende List & Label Projekte Ihrer eigenen Anwendung samt deren Datenquellen automatisch auf den Report Server migrieren möchten, damit die Berichte von allen gängigen Betriebssystemen, Browsern und Geräten aus zugänglich sind, haben wir eine zweite neue Assembly für Sie:
combit.ListLabel.ReportServerIntegration.

Diese Bibliothek bietet Hilfsmethoden für das Hochladen von List & Label Projekten und deren Abhängigkeiten (z. B. Bilder, Drilldown-Projekte) und das Erstellen von Datenquellen auf dem Server mit den Ihnen bekannten Datenprovidern aus List & Label. Auch das erwähnte Beispielprojekt demonstriert diese Features.




Autor: Lukas Eckert
Software Entwickler

Lukas Eckert ist Softwareentwickler bei combit im Bereich Reporting Produkte. Er kam schon während seinem Studium der Angewandten Informatik in unser Team. In seiner Freizeit geht der ehemalige Globetrotter gerne in den Schweizer Alpen klettern.





Kommentare


combit - Jochen Bartlau
Die Vorlage würde in diesem Fall (z.B. im Desginer oder per Objektmodell) auf dem Client erzeugt und dann über die Hilfsklasse RepositoryImportUtil auf den Server geladen. Das Prinzip habe ich letztens auf Stackoverflow beschrieben: https://stackoverflow.com/questions/49299748/repositoryitem-from-listlabel-lst-file/49300709#49300709.

Beispiele für das Ändern und Importieren finden Sie auch im ClientApiSample (unter den .NET-Beispielen im ReportServer-Unterverzeichnis).
22.03.2018 07:44:48

Hoppe
Dazu habe ich ein Frage. Die Vorlagen liegen ja auf dem Server. Ich wähle ein Vorlage aus und über den Server wird mir ein Report erzeugt. Diese kann ich auf dem Client abspeichern z.B. als PDF. Soweit so gut. Wie sieht es aus, wenn ich eine Serverseitige Vorlage ändern oder eine neue Vorlage vom Client aus über den Server erstellen oder ändern will? Ist dies überhaupt möglich, wenn ja wie geht man da vor?
21.03.2018 18:20:57


Ergänzen Sie hier Ihren Kommentar
 
 
 
 
 

Lassen Sie sich über neue Kommentare zu diesem Blogbeitrag informieren


 
RSS
combit Dev BlogRSS
combit Entwicklerblog
Hier teilen wir Informationen über die Entwicklung unserer Softwareprodukte. Außerdem: Allgemeines über die Softwareindustrie.
Archiv
November 2018 (2)
Oktober 2018 (4)
September 2018 (4)
August 2018 (2)
Juli 2018 (2)
Juni 2018 (2)
Mai 2018 (1)
April 2018 (1)
März 2018 (1)
Februar 2018 (2)
Januar 2018 (1)
Dezember 2017 (1)
November 2017 (2)
Oktober 2017 (3)
September 2017 (3)
August 2017 (2)
Juli 2017 (2)
Juni 2017 (1)
Mai 2017 (2)
April 2017 (1)
März 2017 (1)
Ältere Blogposts
Einträge aus dem Zeitraum von März 2014 bis Februar 2017 finden Sie in unserem englischsprachigen Blog.
+49 (0) 7531 90 60 10