generare dinamicamente i rapporti in Pentaho e trattare con le definizioni di report negozio nel database
-
10-10-2019 - |
Domanda
Sto sviluppando un'applicazione segnalazione in cui un utente può selezionare (e ordinare) le relazioni da una lista di 100 rapporti e chiedere un rapporto maestro. Questo rapporto maestro conterrà tutti i report selezionati nell'ordine esatto e con una tabella di contenuti che elencano i rapporti inclusi nel report master. I rapporti disponibili per l'utente di selezionare (che potrebbe essere 100s) sono memorizzati nel database.
Le mie domande sono: -
- Per generare il report master con le segnalazioni degli utenti selezionati, l'unica soluzione che posso vedere è utilizzando l'API di reporting Engine per generare un rapporto dinamico in cui devo aggiungere le segnalazioni degli utenti selezionati come sottoreport. E 'questo il diritto e il modo più semplice per affrontare questo problema? Qualcuno ha campioni di utilizzo API di reporting del motore soprattutto ai sottoreport iniettata in rapporto Maestro?
- Dato che io sono la memorizzazione dei rapporti nel db (blob), sto cercando di trovare un modo per generare i miei rapporti sub con un InputStream piuttosto che un URL, come specificato nella
ResourceManager.createDirectly(url, MasterReport.class)
, ma non hanno avuto successo fino ad ora. Come faccio a generare rapporti da definizioni memorizzati nel database? Ci dovrebbe essere una certa astrazione delle risorse.
Soluzione
Leggi i report in un byte-array e quindi utilizzare il metodo ResourceManager.createDirectly come al solito. Che risolverà il tuo problema di analizzare i rapporti.
È possibile li analizzare direttamente in sottoreport utilizzando
ResourceManager.createDirectly (byte, SubReport.class)
Queste subreports può quindi essere aggiunto al report master come sottoreport bande. se si desidera che i report selezionati per iniziare in una nuova pagina, assicurarsi di impostare il "pagebreak-prima" stile sulla relazione-header del sottoreport.
V'è un'astrazione risorsa: Si chiama "LibLoader" ed è possibile creare i propri ResourceLoaders che fare con il problema di ottenere i dati dal vostro database come prime-flussi in modo che le implementazioni ResourceFactory in grado di interpretare / analizzare il grezzo -data.
Ma ogni database è progettato in modo diverso e, quindi, si come system integrator devono scrivere il codice colla per esso. Abbiamo solo in grado di offrire le interfacce.