Comment intégrer des projets logiciels des outils de reporting

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.

 

Publié 39 articles originaux · a gagné les éloges 1 · vues 10000 +

Je suppose que tu aimes

Origine blog.csdn.net/efreport/article/details/105117921
conseillé
Classement