2015-06-28 14 views
7

Possiedo Jasper Reports Server (installato su www.example.com) e un'applicazione Java/JSP separata (installata su www.example.net) e sto perseguendo diverse opzioni per generare report.Comunicazione tra Jasper e un'altra applicazione

Opzione 1 (soluzione di lavoro corrente)

La mia soluzione di lavoro corrente è che l'utente accede l'applicazione Java/JSP, e seleziona un rapporto. L'applicazione crea una rappresentazione XML del report, che consente di risparmiare come fileNameXML e allora poi lo invia al Jasper Reports Server utilizzando il codice come il seguente:

 <IFRAME height="600" width="1000" src="https://www.example.com/jasperserver/flow.html? 
    _flowId=viewReportFlow&standAlone=true&_flowId=viewReportFlow& 
    ParentFolderUri=%2Freports& 
    reportUnit=%2Freports%2FExample_Report_2&j_username=user& 
    j_password=password& 
net.sf.jasperreports.xml.source=https://www.example.net/<%=fileNameXML%>">        
    </IFRAME> 

(Si noti che, anche se mi passa un nome utente e password nella URL, la sicurezza non è compromessa in quanto il filenameXML viene creata usando String fileName = UUID.randomUUID().toString() + fileExt;)

Opzione 2

mi connetto Jasper Reports Server direttamente al database di SQL Server su www.example.net, e produco riporta in questo modo. Lo svantaggio di questo approccio è che (a) avrei bisogno di impostare tutti gli utenti in Jasper Reports (b) Avrei bisogno di passare i parametri in un modo attento alla sicurezza in modo che ogni utente possa accedere solo ai propri dati (c) ho solo l'accesso al database, e non i calcoli della mia applicazione

My Ideal Soluzione

Tuttavia mi piacerebbe davvero essere in grado di accedere ai calcoli della mia applicazione tramite Jasper, e la registrazione di bypass nella mia domanda.

Un vantaggio di questo è che la mia applicazione non ha ancora un accesso mobile adeguato e gli utenti possono scaricare l'app Jasper Mobile Application e accedere ai report da lì.

Ciò comporterebbe i seguenti:

  1. utente accede Jasper
  2. seleziona User rapporto
  3. Jasper chiama la mia applicazione con determinati parametri
  4. applicazione crea file XML
  5. applicazione restituisce un link a questo file
  6. Jasper mostra report

Qual è il modo migliore per raggiungere questo obiettivo?

risposta

0

Penso che il modo migliore per farlo è quello di:.

  • creare un URL nella tua app che è accessibile in qualsiasi momento e non richiede la registrazione in Se stai usando Primavera o qualsiasi altro quadro, affermando sarebbe bello come potrei mostrarti come farlo.

Ci sono molti modi per scuoiare questo gatto. Fammi sapere quali tecnologie stai utilizzando e forse possiamo iniziare da lì. Abbiamo implementato il requisito che stai avendo in questo momento.

Grazie.

+0

Ho down-votato perché questa risposta è troppo vaga – gordon613

+0

Come stai gestendo il tuo login/sessione di monitoraggio? Ancora una volta, il concetto, dal momento che è un concetto, è vago. E stai chiedendo un approccio al problema che è quello che sto cercando di capire se funziona per te. Se dovessi implementarlo, usando Spring. Avrei un Interceptor che controlla le richieste di URL che arrivano nella mia app. Se premo un URL specifico, ad esempio "myApp/getCalculations", ignorerò la funzionalità di login/session checking e fornirò al richiedente tutte le informazioni di cui ha bisogno, magari attraverso un oggetto serializzato, una stringa, json, ecc (qualunque sia il richiedente capisce). Saluti! – Miki

+0

Grazie per la risposta. Diciamo che creo un URL che esegue i calcoli (e ignora il login come suggerisci), come suggeriresti che jasper comunichi con questo URL. Specificamente come lo chiamerebbe, e come riceverebbe i dati XML che questo URL produrrebbe? – gordon613