Processeur de rapports

Le Processeur de rapports est un composant interne d'une instance de serveur de rapports qui traite des rapports mais également des modèles de rapport utilisés pour la génération d'états ad hoc.

Vue d'ensemble du traitement des rapports

Le traitement des rapports décrit une série d'étapes de traitement qui transforment les instructions statiques à l'intérieur d'une définition de rapport en un rapport rendu qui apparaît dans un format de présentation finale. Le diagramme suivant représente les étapes et les éléments de traitement des rapports.

Illustration du traitement d'un rapport

diagramme de traitement des rapports

Lors de l'accès à un rapport, que ce soit à la demande ou par transmission de type push, le serveur de rapports effectue un traitement de bout en bout ou renvoie un rapport traité au préalable, puis enregistré dans un format intermédiaire pour être affiché ultérieurement dans un format spécifique. Les paramètres d'exécution de rapport déterminent le résultat obtenu. Si un administrateur de serveur de rapports spécifie qu'un rapport doit faire l'objet d'un accès à partir du cache ou d'un instantané, le format intermédiaire est extrait de la base de données du serveur de rapports, puis un rendu est effectué pour l'affichage. Sinon, toutes les phases du traitement sont effectuées.

Demandes pour le traitement d'un rapport

Le processeur de rapports répond aux demandes suivantes :

  • Demande pour un rapport à la demande. L'ouverture par un utilisateur d'un rapport configuré pour s'exécuter à la demande déclenche le traitement de ce rapport sur le serveur de rapports. Le processeur de rapports récupère la définition de rapport, il envoie la demande de données à une extension pour le traitement des données, associe la définition de rapport aux données, envoie cette définition à une extension de rendu, puis retourne le rendu de rapport. Le traitement des rapports à la demande se produit également en réponse aux actions de l'utilisateur dans un rapport basé sur un modèle. Un utilisateur qui explore un chemin d'accès aux données dans un rapport basé sur un modèle déclenche une série de demandes pour des rapports générés interactifs temporaires.

  • Demande pour un rapport mis en cache. Le traitement pour les rapports mis en cache est une variation de création de rapports à la demande effectuée dans le service Web. L'ouverture par un utilisateur d'un rapport configuré pour s'exécuter à partir d'une copie mise en cache déclenche le traitement si la copie mise en cache a expiré. Dans ce cas, le rapport est à nouveau traité avant d'être rajouté au cache, puis il est envoyé au navigateur de l'utilisateur.

  • Demande du processeur de planification et de livraison. Le traitement des rapports planifiés est lancé par le serveur de rapports et s'exécute en arrière-plan. Tout accès par transmission de type push au traitement et à la remise des rapports est conduit à travers les planifications et événements gérés par le processeur de planification et de livraison du serveur de rapports. À la réception de la demande, le processeur de rapports récupère la définition de rapport, il envoie la demande de données à une extension pour le traitement des données, associe la définition de rapport aux données, puis stocke le rapport compilé dans la base de données du serveur de rapports.

Étapes du traitement des rapports

Durant l'exécution d'un rapport, le serveur de rapports procède en trois étapes : le traitement du rapport, le traitement des données et le rendu. Le traitement des données et le traitement du rapport sont réalisés sur une définition de rapport, ce qui donne un rapport au format intermédiaire. Les rapports au format intermédiaire sont ensuite rendus dans un format d'affichage spécifique.

Récupération de la définition de rapport

Le traitement d'un rapport commence par la définition d'un rapport publié. Une définition de rapport contient une ou plusieurs requêtes, des informations de mise en page ainsi que des références de code ou des expressions. Le processeur de rapports obtient la définition de rapport auprès de la base de données du serveur de rapports, il initialise les paramètres et les variables contenus dans les expressions et effectue divers traitements préliminaires en vue de préparer le rapport pour les données. L'extension pour le traitement des données se connecte ensuite à la source de données pour récupérer les informations requises.

Traitement des données

Le traitement des données se produit sur un serveur de bases de données. Si le rapport extrait des fichiers de données statiques ou des documents XML, le traitement des données peut être limité à l'obtention de ces fichiers et au retour des données au serveur de rapports.

Fusion des données et mise en page dans un format intermédiaire

Une fois ces données retournées, elles sont fusionnées avec les informations de mise en page dans la définition du rapport afin de créer un rapport dans un format intermédiaire, lequel peut être enregistré de façon à accélérer l'extraction ou dirigé vers une extension de rendu qui le traite dans un format que l'utilisateur peut afficher. Les données sont traitées par ligne pour chaque section. Les sections comprennent l'en-tête et le pied de page du rapport, les en-têtes et pieds de page de groupe, ainsi que les détails. Les fonctions et expressions d'agrégation sont également traitées à ce stade.

Un rapport configuré pour s'exécuter en tant qu'instantané ou qui est conservé dans un historique de rapport est toujours stocké dans un format intermédiaire qui inclut les données ainsi que les informations de mise en page incluses dans le rapport lors de l'enregistrement du format intermédiaire.

Le serveur de rapports peut utiliser le format intermédiaire de diverses façons. Les fonctionnalités de mise en cache, d'instantanés et d'historique de rapport utilisent toutes des rapports stockés au format intermédiaire. Le format intermédiaire est portable. Il peut être rendu dans n'importe quel format d'exportation pris en charge et déployé sur le serveur de rapports.

Notes

Le format intermédiaire est un format d'application interne. Pour utiliser un rapport dans ce format dans une application personnalisée, vous devez utiliser des interfaces de programmation qui créent ou extraient des instantanés.

Rendu du rapport

Une fois le rapport au format intermédiaire, les rapports peuvent être rendus dans un format de présentation. Un rapport rendu est compilé dans un assembly CLR (Common Language Runtime) et sont exécutés sur le serveur de rapports.

Durant l'étape de rendu, l'extension de rendu pagine le rapport et traite les expressions qui ne peuvent pas l'être durant l'étape d'exécution. Le rendu du rapport est ensuite effectué dans le format approprié au périphérique.

Traitement des modèles et rapports générés interactifs

Les rapports peuvent utiliser des modèles de rapport en guise d'interface pour les sources de données sous-jacentes. Les modèles spécifient les métadonnées et contiennent les références aux sources de données partagées qui définissent la connexion aux données. Le traitement du modèle se produit sur le serveur de rapports dès que les actions suivantes sont effectuées par un utilisateur :

  • exploration d'un modèle dans le Générateur de rapports ;

  • demande de données pour le modèle lors de l'élaboration d'un rapport dans le Générateur de rapports ;

  • recherche de rapports générés interactifs enregistrés sur un serveur de rapports.

Le traitement des rapports générés interactifs est similaire au traitement des définitions de rapport, si ce n'est que les rapports ne proviennent pas des définitions de rapport publiées sur le serveur mais qu'ils se créent automatiquement à partir de modèles. Le traitement des données est initialisé par le biais du modèle afin de récupérer les informations voulues.