Subreports: Eine beliebte Möglichkeit, um Datenquellen-übergreifend Berichte zu erstellen
Bei der Verwendung von Subreports in JasperReports ist in den meisten Fällen die Datenquelle im Hauptreport und im Subreport dieselbe Datenquelle, weshalb mit $P{REPORT_CONNECTION} die Verbindung übergeben wird.
Interessanter, wenn auch seltener, sind die Subreports, die andere Datenquellen einbinden. So kann Datenfusion im Reporting auf Basis der Quellsysteme ohne zusätzliche Datenextraktionen realisiert werden.
JNDI als Datenquelle
Innerhalb des Jasperreports Servers sollte grundsätzlich mittels JNDI auf Datenbanken zugegriffen werden. Dies kann in einer Connection-Expression wie folgt erreicht werden:
((javax.sql.DataSource)(new javax.naming.InitialContext()) .lookup("java:comp/env/jdbc/sugarcrm")).getConnection()
Diese Lösung hat den Nachteil, dass die Verbindungseinstellungen nicht über das Repository von Jaspersoft verwaltet werden.
Die JNDI-Verbindungseinstellungen können mit folgendem Code-Fragment ermittelt werden:
((com.jaspersoft.jasperserver.api.metadata.jasperreports.domain .JndiJdbcReportDataSource) (com.jaspersoft.jasperserver.api.engine.jasperreports.util .RepositoryUtil.getThreadRepositoryContext().getRepository()) .getResource(null,"/analysis/datasources/SugarCRMDataSourceJNDI")).getJndiName()
Im Gesamtbild ergbit sich daraus folgender Ausdruck für die Connection-Expression:
((javax.sql.DataSource)(new javax.naming.InitialContext()) .lookup("java:comp/env/" + ((com.jaspersoft.jasperserver.api.metadata.jasperreports.domain .JndiJdbcReportDataSource) (com.jaspersoft.jasperserver.api.engine.jasperreports.util .RepositoryUtil.getThreadRepositoryContext().getRepository()) .getResource(null, "/analysis/datasources/SugarCRMDataSourceJNDI")) .getJndiName())).getConnection()
MongoDB
Neben relationalen Datenquellen (JDBC/JNDI) können auch Key-Value-Stores und Datenquellen aus dem Bereich von NoSQL angebunden werden. Der folgende Screenshot zeigt dies am Beispiel von MongoDB:
new com.jaspersoft.mongodb.connection.MongoDbConnection(„mongodb://127.0.0.1:27017/xxx“, „username“, „password“)
TIBCO.Jaspersoft stellt mit Version 6.2 Treiber für u.a. MongoDB und Hadoop Spark bereit.
Domain
Domains können mittels “Virtual Datasource” mehrere unterschiedliche Datenquellen einbeziehen. Dies wird mit JBoss TEIID realisiert. Damit können alle Vorteile von Domains (z.B. row-based und column-based security) auch auf heterogenen Datenquellen realisiert werden.