Ajouter des types courants d'informations de modèle aux rapports

Vous pouvez concevoir des rapports BIRT (Business Intelligence Reporting Tools) pour incorporer tous les types d'informations fournis par les modèles EMF et UML. Pour certaines catégories d'informations couramment incluses dans les rapports, telles que la documentation des éléments de modèle, vous devez suivre des procédures spéciales. Cette rubrique fournit des instructions spécifiques pour l'ajout des types les plus courants d'informations et identifie l'élément correspondant que vous devez ajouter à votre conception de rapport.
Avant de commencer
A propos de cette tâche
Certains éléments de conception de rapport dépendent de fonctions XPath personnalisées. Pour des informations sur la création et le déploiement de fonctions XPath, consultez la rubrique "Ecriture de fonctions XPath personnalisées". Pour la liste des fonctions XPath additionnelles qui sont livrées avec votre produit IBM® Rational et qui sont utiles à la conception de rapports, consultez la rubrique "Fonctions XPath supplémentaires pour les fichiers EMF et UML".
Le tableau suivant comprend des instructions spécifiques pour l'ajout des types d'informations des modèles à des rapports BIRT :
Informations à inclure dans le rapport Elément correspondant de la conception de rapport
Documentation pour des éléments du modèle
Pour ajouter la documentation d'un élément de modèle à une conception de rapport, ajoutez le mappage de colonne suivant au fichier :
  • Nom : documentation
  • Expression : getElementsWithStereotype(ownedComment, 'Default::Documentation')[1]/@body
  • Type : String
Utilisez un élément de texte dynamique pour cette colonne, et non pas un élément de libellé. Lorsque vous utilisez du texte dynamique, la documentation dans le rapport est formatée de la même façon que dans le modèle ; lorsque vous utilisez un libellé, des balises HTML sont générées dans le rapport.

La fonction getElementsWithStereotype est incluse dans le produit IBM Rational.

Liste des profils qui sont appliqués à un modèle

Pour un exemple, voir le fichier Profils appliqués dans le rapport de modèle UML vierge (blankUMLModelReport.rptdesign), auquel vous pouvez accéder à partir de la vue Explorateur de rapports.

Liste des stéréotypes qui sont appliqués à un élément
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : element
  • Mappage de ligne :
    • Expression : oclEvaluate(resolveURI($element), "self.getAppliedStereotypes()")
    • Type : uml:Stereotype

Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un élément de modèle.

Liste des classes qui sont directement dans un package
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : package
  • Mappage de ligne :
    • Expression : oclQuery(resolveURI($package)/packagedElement, "self.oclIsKindOf(uml::Class)")
    • Type : uml:Class

Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un package du modèle.

Liste des attributs qui sont dans une classe, avec leur type

Pour un exemple, voir le fichier des classes avec des attributs dans le rapport de modèle UML vierge (blankUMLModelReport.rptdesign), auquel vous pouvez accéder à partir de la vue Explorateur de rapports.

Liste des opérations qui sont dans une classe, avec leur type de retour

Pour un exemple, voir le fichier des classes avec des attributs dans le rapport de modèle UML vierge (blankUMLModelReport.rptdesign), auquel vous pouvez accéder à partir de la vue Explorateur de rapports.

L'inclusion d'une liste d'opérations dans une classe est similaire à l'inclusion d'une liste d'attributs dans une classe, mais vous utilisez des opérations au lieu d'utiliser des attributs.

Liste des paramètres (autres que les paramètres de retour) qui sont dans une opération, avec leur type
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : operation
  • Mappage de ligne :
    • Expression : oclQuery(resolveURI($operation)/ownedParameter, "self.direction <> ParameterDirectionKind::return")
    • Type : uml:Parameter
  • Mappage de colonne : nom_type, type/@name, String

Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'une opération du modèle.

Liste des exceptions émises par une opération
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : operation
  • Mappage de ligne :
    • Expression : resolveURI($operation)/raisedException
    • Type : uml:Type

Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'une opération du modèle.

Liste de toutes les classes qui implémentent une interface
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : interface
  • Mappage de ligne :
    • Expression: oclEvaluate(resolveURI($interface), "InterfaceRealization.allInstances()->select(i | i.supplier->includes(self))")
    • Type : uml:InterfaceRealization
  • Mappage de colonne :
    • clientName, client[1]/@name,, String
    • clientURI, getURI(client[1]), String

Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'une interface du modèle.

Liste de toutes les interfaces implémentées par une classe
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : class
  • Mappage de ligne :
    • Expression : oclEvaluate(resolveURI($class), "InterfaceRealization.allInstances()->select(i | i.client->includes(self))")
    • Type : uml:InterfaceRealization
  • Mappage de colonne :
    • supplierName, supplier[1]/@name, String
    • supplierURI, getURI(supplier[1]), String

Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'une classe du modèle.

Liste de toutes les classes qui héritent d'une classe Pour un exemple, voir le fichier Sous-classes dans le Rapport de métriques de modèle UML (umlModelMetrics.rptdesign).
Liste de toutes les classes dont une classe hérite
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : class
  • Mappage de ligne :
    • Expression : resolveURI($class)/superClass
    • Type : uml:Classifier

Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'une classe du modèle.

Liste des noms qualifiés complets de toutes les classes avec lesquelles une classe a une association orientée, avec le nom de rôle cible, la visibilité et la multiplicité
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : class
  • Mappage de ligne :
    • Expression : oclQuery(resolveURI($class)/ownedAttribute, "Association.allInstances()->select(a|a.memberEnd->includes(self))->notEmpty()")
    • Type : uml:Property
  • Mappage de colonne :
    • targetRoleName, @name, String
    • visibility, @visibility, String
    • multiplicity, concat(concat(@lower,".."), @upper), String

Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'une classe du modèle.

Cas d'utilisation associés à un acteur
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : actor
  • Mappage de ligne :
    • Expression : oclEvaluate(resolveURI($actor), "Association.allInstances()->select(a|a.endType->includes(self) and a.endType->select(t|t.oclIsKindOf(uml::UseCase))->notEmpty())->collect(a|a.endType->select(t|t <> self))")
    • Type : uml:UseCase

Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un acteur du modèle.

Acteurs associés à un cas d'utilisation
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : usecase
  • Mappage de ligne :
    • Expression : oclEvaluate(resolveURI($usecase), "Association.allInstances()->select(a|a.endType->includes(self) and a.endType->select(t|t.oclIsKindOf(uml::Actor))->notEmpty()) ->collect(a|a.endType->select(t|t <> self))")
    • Type : uml:Actor

Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un cas d'utilisation du modèle.

Pour un diagramme de classes, une liste des classes qui sont dans le diagramme
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : diagram
  • Mappage de ligne :
    • Expression : oclEvaluate(resolveURI($diagram), "self.children->select(c|c.element.oclIsKindOf(uml::Class))->collect(c|c.element)")
    • Type : uml:Class

Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un diagramme du modèle.

Pour un diagramme de séquence, une liste des noms et des types d'objets des lignes de vie
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : sequenceDiagram
  • Mappage de ligne :
    • Expression : oclEvaluate(resolveURI($sequenceDiagram), "self.element.oclAsType(uml::Interaction).lifeline->collect(l|l.represents)")
    • Type : uml:ConnectableElement
    Mappage de colonne :
    • objectName, @name, String
    • typeName, type/@name, String
Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un diagramme de séquence du modèle.
Pour un diagramme de séquence, pour chaque ligne de vie, les messages qui vont à cette ligne de vie
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : lifeline
  • Mappage de ligne :
    • Expression : oclEvaluate(resolveURI($lifeline), "self.coveredBy->select(c|c.oclIsKindOf(uml::MessageOccurrenceSpecification))->select(m|m.oclAsType(uml::MessageOccurrenceSpecification).event->any(true).oclIsKindOf(uml::ReceiveOperationEvent))->collect(m|m.oclAsType(uml::MessageOccurrenceSpecification).message)")
    • Type : uml:Message
  • Mappage de colonne :
    • messageName, @name, String
    • signatureName, signature/@name, String
Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'une ligne de vie provenant d'un diagramme de séquence du modèle.
Pour un diagramme de séquence, une liste des messages du plus haut niveau

Les messages du plus haut niveau sont les messages envoyés depuis des portes sur l'interaction.

Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : sequenceDiagram
  • Mappage de ligne :
    • Expression : oclEvaluate(resolveURI($sequenceDiagram), "self.element.oclAsType(uml::Interaction).formalGate->collect(g|g.message)")
    • Type : uml:Message
  • Mappage de colonne :
    • messageName, @name, String
    • signatureName, signature/@name, String
Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un diagramme de séquence du modèle.
Pour un discriminant structuré, une liste de ports
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : structuredClassifier
  • Mappage de ligne :
    • Expression : resolveURI($structuredClassifier)/ownedPort
    • Type : uml:Port
Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un discriminant structuré du modèle.
Pour un port, une liste des interfaces fournies
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : port
  • Mappage de ligne :
    • Expression : resolveURI($port)/provided
    • Type : uml:Interface
Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un port du modèle.
Pour un port, une liste des interfaces requises
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : port
  • Mappage de ligne :
    • Expression : resolveURI($port)/required
    • Type : uml:Interface
Lorsque vous utilisez le fichier dans votre conception de rapport, définissez la valeur du paramètre avec l'URI d'un port du modèle.
Pour un diagramme d'activité, une liste de partitions

Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : activityDiagram
  • Mappage de ligne :
    • Expression : resolveURI($activityDiagram)/element/partition
    • Type : uml:ActivityPartition
Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un diagramme d'activité du modèle.
Pour un diagramme d'activité, une liste de magasins de données
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : activityDiagram
  • Mappage de ligne :
    • Expression : oclEvaluate(resolveURI($activityDiagram), "self.element.oclAsType(uml::Activity).node->select(n|n.oclIsKindOf(uml::DataStoreNode))")
    • Type : uml:DataStoreNode
Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un diagramme d'activité du modèle.
Pour un diagramme d'activité, une liste de mémoires tampons centrales dont les discriminants ont un stéréotype particulier

Le stéréotype de ce scénario est "Business Modeling::BusinessWorker"

Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : activityDiagram
  • Mappage de ligne :
    • Expression : oclEvaluate(resolveURI($activityDiagram), "self.element.oclAsType(uml::Activity).node->select(n|n.oclIsKindOf(uml::CentralBufferNode))->select(c|c.oclAsType(uml::CentralBufferNode).type.isStereotypeApplied(c.oclAsType(uml::CentralBufferNode).type.getApplicableStereotype('Business Modeling::BusinessWorker')))")
    • Type : uml:CentralBufferNode
Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un diagramme d'activité du modèle.
Pour un diagramme d'activité, une liste des types dans les flux d'objets
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : activityDiagram
  • Mappage de ligne :
    • Expression : oclEvaluate(resolveURI($activityDiagram), "self.element.oclAsType(uml::Activity).edge->select(e|e.oclIsKindOf(uml::ObjectFlow))")
    • Type : uml:ObjectFlow
  • Mappage de colonne :
    • sourceType, oclEvaluate(source, "self.oclAsType(uml::ObjectNode).type")/@name, String
    • targetType, oclEvaluate(target, "self.oclAsType(uml::ObjectNode).type")/@name, String

Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un diagramme d'activité du modèle.

Pour un diagramme d'état, une liste des noms d'état
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : statechartDiagram
  • Mappage de ligne :
    • Expression : oclEvaluate(resolveURI($statechartDiagram), "self.element.oclAsType(uml::StateMachine).region->collect(r|r.subvertex)")
    • Type : uml:State
Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un diagramme d'état du modèle.
Pour un état d'un diagramme d'état, une liste des transitions vers des états
Créez un fichier UML avec les caractéristiques suivantes :
  • Paramètre : state
  • Mappage de ligne :
    • Expression : resolveURI($state)/outgoing/target
    • Type : uml:Vertex
Lorsque vous utilisez le fichier dans une conception de rapport, définissez la valeur du paramètre avec l'URI d'un état du modèle.
Images d'un diagramme UML

Créez un fichier UML avec les caractéristiques suivantes :

  • Mappage de ligne :
    • Expression : //Diagram, par exemple. Ceci mappe tous les diagrammes depuis le modèle.
    • Type : Diagram
  • Mappage de colonne : Définissez une colonne pour l'image du diagramme.
La requête de mappage de colonne dépend de la méthode qui, parmi les méthodes suivantes, a été utilisée pour créer les images :
  1. Cette méthode est pour les rapports HTML et pour les autres rapports ayant une taille de page illimitée seulement, et pour les images qui peuvent être affichées par division en mosaïques.

    Exemple : getDiagramHtmlImage(".", $chemin_génération, $largeur_mosaïque, $hauteur_mosaïque)

    Lorsque vous écrivez une définition de colonne avec cette requête, attribuez le nom et le type string.

    Les images du rapport généré ont la taille d'origine du diagramme et la résolution maximale, mais elles sont divisées en mosaïques de la taille spécifiée dans la requête. Pour plus d'informations sur la fonction, consultez la rubrique "Fonctions XPath supplémentaires pour les fichiers EMF et UML".

    Remarque : Après avoir défini le fichier, vous pouvez créer un contrôle Table dans la conception de présentation du rapport, le lier au fichier du diagramme et insérer un contrôle Texte dynamique dans la ligne des détails de la table. Définissez l'expression de texte à row["image"]. Définissez la largeur et la hauteur du contrôle Texte à 100% du parent, de façon à ce que l'image ne soit pas recoupée.
  2. Cette méthode s'applique à tous les formats de rapport, en particulier à ceux avec des tailles de page définies, telles que PDF et Microsoft® Word, et aux images qui peuvent être affichées avec une résolution maximale.

    Exemple : getDiagramImage(".", $largeur_résolution_maximale, $hauteur_résolution_maximale)

    Lorsque vous écrivez une définition de colonne avec cette requête, attribuez le nom et le type blob.

    Pour plus d'informations sur la fonction, consultez la rubrique "Fonctions XPath supplémentaires pour les fichiers EMF et UML".

    Après avoir défini le fichier, vous pouvez créer un contrôle Table dans la conception de présentation du rapport, le lier au fichier du diagramme et insérer un contrôle Image dans la ligne des détails de la table. Définissez l'image à Dynamique et attribuez un identificateur URI row["image"]. Assurez-vous de définir la largeur et la hauteur du contrôle Image à 100% du parent, de façon à ce que l'image ne soit pas recoupée.

Pour des informations sur la conception de rapports, voir le Guide pratique de BIRT.

Que faire ensuite
Remarque : Certaines informations, telles que les liens vers la documentation Eclipse ou vers les guides destinés aux développeurs, ne sont accessibles qu'à partir des rubriques de l'aide interne au produit.

Vos commentaires