2009-08-04 18 views
5

Sto cercando di incorporare JasperReports in un'app Web esistente per la segnalazione. La webapp si trova in cima a un database esistente che è antico e complesso, e in realtà non adatto a scrittori di report da utilizzare per scrivere report direttamente.JasperReports e origini dati personalizzate

Quello che voglio guardare è scrivere una sorta di wrapper attorno al nostro livello di accesso ai dati esistente (scritto per semplificarci la vita parlando con il già citato db antico). Qualcuno ha esperienza di scrittura di origini dati personalizzate per JasperResports, o di fare qualcosa di simile?

Aggiornato

Credo che probabilmente non era chiaro nella mia domanda - che è probabilmente perché le mie esigenze non sono chiare neanche. Voglio fornire in qualche modo che gli utenti finali possano utilizzare qualcosa come iReport per creare report sul database e quindi utilizzare JasperReportServer per pianificare/visualizzare i report. Tuttavia, il database è davvero, davvero antipatico e non è mai stato progettato per essere utilizzato in questo modo. Abbiamo uno strato di accesso attorno ad esso che la webapp usa per parlarci. Voglio tenere gli utenti finali lontani dal DB e l'idea di un'origine dati personalizzata che ha utilizzato il livello di accesso è sembrata una buona opzione. Tuttavia, ho trovato pochissima documentazione su come farlo. Forse è solo molto più facile di quanto io pensi che sia, e sto solo cercando di rendere troppo semplice una cosa troppo semplice.

Aggiornato

Grazie per le risposte. Non credo che il mio problema sia stato risolto, ma penso che le risposte abbiano contribuito a informare la fase dei requisiti.

risposta

3

modello Ogni JasperReports può avere due diverse fonti di dati. Uno lo sta collegando direttamente ad un database usando un driver jdbc o, nel tuo caso, fornendo una raccolta di java bean (POJO), di solito lista.

modello di JasperReports è simile a una definizione di metodo. Ha un nome, cioè oggetto JR e parametri compilati (origine dati e un elenco di parametri di input di alcuni dei più diffusi tipi Java).

Il mio suggerimento è quello di utilizzare lo strumento iReport. Apri un esempio che viene fornito con il pacchetto JasperReports, analizzalo e modificalo. Non è così complicato.

UPDATE

consentire ai clienti di authoring modelli JasperReports, la compilazione e l'aggiunta al classpath significa che avrete bisogno di aprire il vostro sistema troppo. Solitamente i clienti forniscono la descrizione di un report desiderato e gli sviluppatori creano l'origine dati e progettano il modello. JasperReports può avere parametri. Se questi parametri vengono esposti tramite gli utenti dell'interfaccia utente, è possibile modificare il comportamento dei report nel runtime.

Se avete veramente bisogno di consentire una maggiore flessibilità, quindi utilizzare le API fornite da JasperReports per i modelli di authoring. Potrei immaginare un semplice DLS per gli utenti avanzati per comunicare con il tuo sistema creando report on-fly.

+0

Non sapevo che avrebbero potuto avere più dati fonti. Il piano è utilizzare iReport per la creazione di report. Penso che quello che mi manca qui è di interrogare il mio livello di accesso, nessuno degli esempi che ho visto ha mostrato nulla a riguardo. Ho aggiornato la domanda. –

4

Jasper Reports consente di utilizzare una fonte di dati "JavaBean". Puoi caricare i tuoi dati in qualsiasi struttura di Java Bean e creare rapporti contro questo. Funziona bene.

vedere la sezione "sorgente di dati personalizzati" here.

+0

Grazie. Ho già visto questo bit e mostra solo un esempio di base.Penso di poter vedere come estrarre i vari parametri dal rapporto. Quello che non riesco a vedere è come presentare i campi disponibili all'autore del report. –

+1

Il modo in cui lo abbiamo fatto è creare un file jar con tutti i Java bean per i report in esso contenuti. Quindi aggiungi il file jar al percorso della classe in iReport. Abbiamo inserito la classe provider come mostrato nella Figura 3.5 nel link sopra. È passato un po 'di tempo, ma penso che sia così che ha funzionato. –

+0

@Jacob Schoen Ciao, mi chiedo se è possibile passare il parametro in bean java? Quindi possiamo elaborare alcune logiche di business, grazie. – coastline

Problemi correlati