Lorsque les entreprises de logiciels pour développer des projets, des rapports est devenu un élément indispensable. Les besoins en constante évolution des clients de rapports, la recherche et le développement de clients quelque chose ne sont pas satisfaits, le développement secondaire ou complètement réécrits occurrences communes. section Rapports caractéristiques complexes, couplée à une logique métier complexe, a besoin d'un peu de changement, nous avons besoin de passer plus de temps pour ajuster et améliorer, les coûts de développement élevés, il est difficile de maintenir en cas de changement de personnel. Impossible de régler rapidement des fonctionnalités de reporting, l'ensemble du cycle de développement devient plus, les cas graves peuvent conduire à un retard de livraison du projet. Sélectionnez peut être ajustée dynamiquement, la formation rapide d'outils de reporting exigent des rapports peuvent résoudre les rapports de projet le plus rapide.
des outils de reporting Fan Ying peuvent rapidement créer, générer des rapports, et peut être un paquet entier, l'ensemble du projet en tant que module, les appels de code de projet interne à l'aide de projet d'intégration modulaire, le projet peut également être intégré comme un service de système de rapports distincts.
Lorsque le système de rapports en tant que service séparé, divisé en outils de conception de la voile et l'excédent des rapports pour montrer les deux parties, la partie de la conception est une conception de ligne distincte, intégrée selon que les besoins réels du concepteur. Designer est responsable des rapports de conception, modèle conçu puis montrer par la distribution d'arrière-plan. Le spectacle principal est d'obtenir une partie intégrante du contenu de l'émission du rapport, puis intégré.
Ying Fan rapports en tant que service de système distinct, fournit les méthodes suivantes d'intégration:
Une authentification unique
Passer à travers l'écran de connexion de requête HTTP, l'utilisateur de connexion à l'affichage de l'interface correspondante. demandes détaillent comme suit: http: // IP: 8099 / EFReport / loginWithoutPage account = demo et mot de passe = 123?
En second lieu, obtenir l'utilisateur d'intégrer SessionId
Obtenez SessionID de l'utilisateur, puis utilisez SessionId pour obtenir une bonne répartition de la page show de rapport pour l'interface de présentation finale pour l'intégration du projet.
1. Get sessionid, le code sont les suivantes:
public String getAuth () throws Exception {
Chaîne sessionid = null;
1 // Créer HttpClient
CloseableHttpClient client = HttpClients.createDefault ();
// 2, les paramètres de demande de paquet
Liste <BasicNameValuePair> Liste = new ArrayList <BasicNameValuePair> (2);
// « demo » est le nom d'utilisateur réel
list.add (nouveau BasicNameValuePair ( "commande", "demo"));
// chiffrement symétrique, « 123 » est le compte « démo » du mot de passe réel, « 123456789ABCDEFG » valeur clé de chiffrement symétrique. valeur KEY "123456789ABCDEFG" doit être 16 bits, cela doit être compatible avec les webapps CLÉS ROOT \ WEB-INF \ classes \ documents application.properties dans le AES.KEY
list.add (nouveau BasicNameValuePair ( "certificat", AES.encrypt ( "123", "123456789ABCDEFG")));
// 3, les paramètres de conversion
UrlEncodedFormEntity réfé = new UrlEncodedFormEntity (liste, "UTF-8");
4 // Création HttpPost
HttpPost post = new HttpPost ( "http: // IP: 8099 / EFReport / authentification");
post.setHeader ( "Accepter", "text / plain; charset = UTF-8");
// 5, définissez les paramètres
post.setEntity (réfé);
// 6, requête d'exécution
CloseableHttpResponse resp = client.execute (post);
// 7, obtenir physique
entité HttpEntity = resp.getEntity ();
// 8, revenir dans l'entité de données
Chaîne result = EntityUtils.toString (entité, "UTF-8");
si (.equals "OK" de (résultat)) {
En-tête [] = têtes resp.getHeaders ( "Set-Cookie");
String str = têtes [0] .getValue ();
sessionid = str.substring (0, str.indexOf ( ""));
}
// 9, fermé
resp.close ();
retour sessionid;
}
2. sessionId acquis pour obtenir l'utilisateur en cours peut afficher un aperçu du nom du rapport.
// Obtenir la première étape sessionid
Chaîne global_session_id = getAuth ();
Demande l'adresse suivante: "http: // IP: 8099 / EFReport / r_menu; <% = global_session_id%>", renvoie les données au format JSON.
La figure suivante montre la manière décrite ci-dessus, l'interface renvoie les données, le menu des rapports utilisateur format JSON arbre.
3. En acquérant le sessionid, le nom du modèle, les paramètres, l'utilisateur obtient en cours peut afficher un aperçu du contenu du rapport. Demander l'adresse suivante:
"http: // IP: 8099 / EFReport / r_report; <% = global_session_id%> file = <% = URLEncoder.encode ("日期参数"
"UTF-8")%> & params ="
Modèle avec les paramètres de demande réelles comme suit:
"http: // IP: 8099 / EFReport / r_report; <% = global_session_id%> file = <% = URLEncoder.encode ("日期参数»,
"UTF-8")%> & params = <% = URLEncoder.encode ( "param1 = 10/01/2016; param2 = 01/05/2018",
"UTF-8")%> »
Le montre la figure ci-dessous au moyen d'une requête avec des paramètres, l'interface de retour.
Troisièmement, sauter l'autorisation intégrée directement
Reporting Services pour obtenir la clé publique, jeton d'accès par l'algorithme, puis obtenir l'utilisateur actuel peut afficher un aperçu du rapport obtenu par le jeton, le nom du modèle, les paramètres.
1. Obtenir la clé publique
Demande à l'adresse suivante: "http: // IP: 8099 / EFReport / thirdSys / getPublic"
2. Obtenir jeton
Obtenez le temps de l'ordinateur et l'heure GMT, en utilisant l'algorithme RSA, le jeton.
public String getToken () throws Exception {
// Obtenez le nombre actuel de millisecondes
les données de chaînes de caractères = String.valueOf (System.currentTimeMillis ());
// et la clé publique jeton en utilisant l'algorithme de RSA pour obtenir le temps, la partie rouge du public pour l'accès
Chaîne encryptData = RsaUtils.encrypt (données, RsaUtils.getPublicKey ( "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDmVtO9QRTBBVUzDzhtSU9aVjv46dlQUiMGZRt9uz0h / T1Ty6X2nF1on0EG7fUgg3yU + XepD / AQlZFzLtpuI7TPhA67CoecmhRhCdUHN4u6FOGhQjyNl9PPL1gYF4YwW94BX5HPKg1nOdpmkkB / pdJ5cpobjYD0R0xgelmG1nkRWQIDAQAB"));
retourner encryptData;
}
3. Obtenir les rapports régionaux
Par nom du modèle Acquise jeton, l'acquisition des paramètres rapporte l'utilisateur actuel peut afficher un aperçu.
La demande réelle http suit comme:
http: // IP: 8099 / EFReport / rapport / file = checksheet <% = URLEncoder.encode ( "日期 参数", "UTF-8")%> & params = & token = <% = getToken ()%>
Modèle avec les paramètres de demande réelles comme suit:
http: // IP: 8099 / EFReport / rapport / file = checksheet <% = URLEncoder.encode ( "日期 参数", "UTF-8")%> & params = <% = URLEncoder.encode ( "param1 = 2016- 1-10; param2 = 01/05/2018" , "UTF-8")%> & token = <% = getToken ()%>
Le montre la figure ci-dessous au moyen d'une requête avec des paramètres, l'interface de retour.
http: // IP: 8099 / EFReport / rapport / checksheet file =% E6% 97% A5% E6% 9C% 9F% E5% 8F% 82% E6% 95% et B0 params = param1% 3D2016-1-10% 3Bparam2 % 3D2018-05-01 & token = JyraKnXWLabFB / 5FYL13wJVhWBjcyAPkgtDySdcZ3xJHqKm7lekK0rbDw7WZ3ISUTcvAIaD4PJX9ynaFX8RDThU8gWow12uiBgmiC49iv2dIByd7vHMR / ml2YChEXs5wc5pxL + 1iWxcFlybgX8szjfV0lxlDsa3hwJiLReVbkys =
Quatrièmement, le modèle public
1. Définissez le public modèle
La nécessité d'intégrer le modèle, la gestion des modèles en arrière-plan, modifier le modèle, si la propriété publique est réglé sur « Oui. »
2. Obtenez la zone du rapport
Nom du modèle, les paramètres, obtenir un rapport. http demande fait suite que:
http: // IP: 8099 / EFReport / rapport / file = checksheet <% = URLEncoder.encode ( "日期 参数", "UTF-8")%> & params =
Modèle avec les paramètres de demande réelles comme suit:
http: // IP: 8099 / EFReport / rapport / file = checksheet <% = URLEncoder.encode ( "日期 参数", "UTF-8")%> & params = <% = URLEncoder.encode ( "param1 = 2016- 1-10; param2 = 01/05/2018" , "UTF-8")%>
Le montre la figure ci-dessous au moyen d'une requête avec des paramètres, l'interface de retour.
http: // IP: 8099 / EFReport / rapport / checksheet file =% E6% 97% A5% E6% 9C% 9F% E5% 8F% 82% E6% 95% et B0 params = param1% 3D2016-1-10% 3Bparam2 % 3D2018-05-01
voile surplus sur plusieurs outils de reporting fournissent une manière intégrée, permet d'intégrer rapidement le contenu du rapport conformément aux besoins réels du projet pour répondre aux besoins d'information du projet.