Incluindo informações sobre tipos de modelo comuns nos relatórios

É possível fazer o design de relatórios Business Intelligence Reporting Tools (BIRT) para incorporar todos os tipos de informações que os modelos EMF e UML fornecem. Para determinados tipos de informações comumente incluídas nos relatórios, como documentação de elemento de modelo, é necessário seguir procedimentos especiais. Este tópico fornece instruções específicas para incluir os tipos de informações mais comuns e identifica o elemento correspondente que deve ser incluído no design do relatório.
Antes de Iniciar
Por Que e Quando Desempenhar Esta Tarefa
Alguns elementos de design de relatório dependem das funções XPath customizadas. Para obter informações sobre a autoria e a implementação de funções XPath, consulte o tópico "Gravando Funções XPath Customizadas". Para obter uma lista de funções XPath adicionais fornecidas com o produto IBM® Rational e que são úteis para a criação de design de relatórios, consulte o tópico "Funções XPath Adicionais para Conjuntos de Dados EMF e UML"."
A tabela a seguir inclui instruções específicas para a inclusão de tipos de informações de modelo nos relatórios BIRT:
Informações a serem incluídas no relatório Elemento de design de relatório correspondente
Documentação para elementos de modelo
Para incluir a documentação para um elemento de modelo a um design de relatório, inclua o seguinte mapeamento da coluna no conjunto de dados:
  • Nome: documentation
  • Expressão: getElementsWithStereotype(ownedComment, 'Default::Documentation')[1]/@body
  • Tipo: String
Utilize um elemento de texto dinâmico para esta coluna, não um elemento de rótulo. Quando você utiliza o texto dinâmico, a documentação no relatório é formatada da mesma maneira que no modelo; ao utilizar um rótulo, as tags HTML são geradas no relatório.

A função getElementsWithStereotype está incluída com o produto IBM Rational.

Lista de perfis aplicados a um modelo

Para obter um exemplo, consulte Conjunto de Dados de Perfis Aplicados no Relatório de Modelo UML em Branco (blankUMLModelReport.rptdesign), que você pode acessar da visualização Explorador de Relatório.

Lista de estereótipos aplicados a um elemento
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: element
  • Mapeamento da Linha:
    • Expressão: oclEvaluate(resolveURI($element), "self.getAppliedStereotypes()")
    • Tipo: uml:Stereotype

Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de um elemento de modelo.

Lista de classes que estão diretamente em um pacote
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: package
  • Mapeamento da Linha:
    • Expressão: oclQuery(resolveURI($package)/packagedElement, "self.oclIsKindOf(uml::Class)")
    • Tipo: uml:Class

Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de um pacote no modelo.

Lista de atributos que estão em uma classe com seus tipos

Para obter um exemplo, consulte o conjunto de dados de Classes com Atributos no Relatório de Modelo UML em Branco (blankUMLModelReport.rptdesign), que você pode acessar da visualização Explorador de Relatório.

Lista de operações que estão em uma classe, com seus tipos de retorno

Para obter um exemplo, consulte o conjunto de dados de Classes com Atributos no Relatório de Modelo UML em Branco (blankUMLModelReport.rptdesign), que você pode acessar da visualização Explorador de Relatório.

A inclusão de uma lista de operações em uma classe é semelhante à inclusão de uma lista de atributos em uma classe, mas são utilizadas as operações, e não os atributos.

Lista de parâmetros (além de “return”) que estão em uma operação, com seus tipos
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: operation
  • Mapeamento da Linha:
    • Expressão: oclQuery(resolveURI($operation)/ownedParameter, "self.direction <> ParameterDirectionKind::return")
    • Tipo: uml:Parameter
  • Mapeamento da Coluna: typeName, type/@name, String

Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de uma operação no modelo.

Lista de exceções que uma operação lança
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: operation
  • Mapeamento da Linha:
    • Expressão: resolveURI($operation)/raisedException
    • Tipo: uml:Type

Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de uma operação no modelo.

Lista de todas as classes que implementam uma interface
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: interface
  • Mapeamento da Linha:
    • Expressão: oclEvaluate(resolveURI($interface), "InterfaceRealization.allInstances()->select(i | i.supplier->includes(self))")
    • Tipo: uml:InterfaceRealization
  • Mapeamento da Coluna:
    • clientName, client[1]/@name,, String
    • clientURI, getURI(client[1]), String

Ao utilizar o conjunto de dados no seu design de relatório, configure o valor de parâmetro para o URI de uma interface no modelo.

Lista de todas as interfaces que uma classe implementa
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: class
  • Mapeamento da Linha:
    • Expressão: oclEvaluate(resolveURI($class), "InterfaceRealization.allInstances()->select(i | i.client->includes(self))")
    • Tipo: uml:InterfaceRealization
  • Mapeamento da Coluna:
    • supplierName, supplier[1]/@name, String
    • supplierURI, getURI(supplier[1]), String

Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de uma classe no modelo.

Lista de todas as classes que herdam de uma classe Para obter um exemplo, consulte o conjunto de dados de Subclasses no Relatório de Métrica de Modelo UML (umlModelMetrics.rptdesign).
Lista de todas as classes da qual uma classe herda
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: class
  • Mapeamento da Linha:
    • Expressão: resolveURI($class)/superClass
    • Tipo: uml:Classifier

Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de uma classe no modelo.

Lista de todos os nomes completos de todas as classes com as quais uma classe tem uma associação direta, com o nome da função de destino, visibilidade e multiplicidade
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: class
  • Mapeamento da Linha:
    • Expressão: oclQuery(resolveURI($class)/ownedAttribute, "Association.allInstances()->select(a|a.memberEnd->includes(self))->notEmpty()")
    • Tipo: uml:Property
  • Mapeamento da Coluna:
    • targetRoleName, @name, String
    • visibility, @visibility, String
    • multiplicity, concat(concat(@lower,".."), @upper), String

Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de uma classe no modelo.

Casos de uso associados a um agente
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: actor
  • Mapeamento da Linha:
    • Expressão: 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))")
    • Tipo: uml:UseCase

Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de um agente no modelo.

Agentes associados a um caso de uso
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: usecase
  • Mapeamento da Linha:
    • Expressão: 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))")
    • Tipo: uml:Actor

Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de um caso de uso no modelo.

Para um diagrama de classe, uma lista de classes que estão no diagrama
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: diagram
  • Mapeamento da Linha:
    • Expressão: oclEvaluate(resolveURI($diagram), "self.children->select(c|c.element.oclIsKindOf(uml::Class))->collect(c|c.element)")
    • Tipo: uml:Class

Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de um diagrama no modelo.

Para um diagrama de seqüência, uma lista de nomes e tipos de objetos das linhas de vida
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: sequenceDiagram
  • Mapeamento da Linha:
    • Expressão: oclEvaluate(resolveURI($sequenceDiagram), "self.element.oclAsType(uml::Interaction).lifeline->collect(l|l.represents)")
    • Tipo: uml:ConnectableElement
    Mapeamento da Coluna:
    • objectName, @name, String
    • typeName, type/@name, String
Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de um diagrama de seqüência no modelo.
Para um diagrama de seqüência, para cada linha de vida, quais mensagens vão para essa linha de vida
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: lifeline
  • Mapeamento da Linha:
    • Expressão: 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)")
    • Tipo: uml:Message
  • Mapeamento da Coluna:
    • messageName, @name, String
    • signatureName, signature/@name, String
Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de uma linha de vida de um diagrama de seqüência no modelo.
Para um diagrama de seqüência, uma lista de somente mensagens de nível superior

As mensagens de nível superior são mensagens enviadas de portas na interação.

Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: sequenceDiagram
  • Mapeamento da Linha:
    • Expressão: oclEvaluate(resolveURI($sequenceDiagram), "self.element.oclAsType(uml::Interaction).formalGate->collect(g|g.message)")
    • Tipo: uml:Message
  • Mapeamento da Coluna:
    • messageName, @name, String
    • signatureName, signature/@name, String
Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de um diagrama de seqüência no modelo.
Para um classificador estruturado, uma lista de portas
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: structuredClassifier
  • Mapeamento da Linha:
    • Expressão: resolveURI($structuredClassifier)/ownedPort
    • Tipo: uml:Port
Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de um classificador estruturado no modelo.
Para uma porta, uma lista de interfaces fornecidas
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: port
  • Mapeamento da Linha:
    • Expressão: resolveURI($port)/provided
    • Tipo: uml:Interface
Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de uma porta no modelo.
Para uma porta, uma lista de interfaces necessárias
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: port
  • Mapeamento da Linha:
    • Expressão: resolveURI($port)/required
    • Tipo: uml:Interface
Ao utilizar o conjunto de dados no seu design de relatório, configure o valor do parâmetro para o URI de uma porta no modelo.
Para um diagrama de atividade, uma lista de partições

Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: activityDiagram
  • Mapeamento da Linha:
    • Expressão: resolveURI($activityDiagram)/element/partition
    • Tipo: uml:ActivityPartition
Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de um diagrama de atividade no modelo.
Para um diagrama de atividades, uma lista de armazéns de dados
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: activityDiagram
  • Mapeamento da Linha:
    • Expressão: oclEvaluate(resolveURI($activityDiagram), "self.element.oclAsType(uml::Activity).node->select(n|n.oclIsKindOf(uml::DataStoreNode))")
    • Tipo: uml:DataStoreNode
Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de um diagrama de atividade no modelo.
Para um diagrama de atividade, uma lista de buffers centrais cujos classificadores têm um estereótipo específico

O estereótipo neste cenário é "Modelagem de Negócios::BusinessWorker"

Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: activityDiagram
  • Mapeamento da Linha:
    • Expressão: 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')))")
    • Tipo: uml:CentralBufferNode
Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de um diagrama de atividade no modelo.
Para obter um diagrama de atividade, uma lista de tipos nos fluxos de objeto
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: activityDiagram
  • Mapeamento da Linha:
    • Expressão: oclEvaluate(resolveURI($activityDiagram), "self.element.oclAsType(uml::Activity).edge->select(e|e.oclIsKindOf(uml::ObjectFlow))")
    • Tipo: uml:ObjectFlow
  • Mapeamento da Coluna:
    • sourceType, oclEvaluate(source, "self.oclAsType(uml::ObjectNode).type")/@name, String
    • targetType, oclEvaluate(target, "self.oclAsType(uml::ObjectNode).type")/@name, String

Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de um diagrama de atividade no modelo.

Para um diagrama de estado, uma lista de nomes de estado
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: statechartDiagram
  • Mapeamento da Linha:
    • Expressão: oclEvaluate(resolveURI($statechartDiagram), "self.element.oclAsType(uml::StateMachine).region->collect(r|r.subvertex)")
    • Tipo: uml:State
Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de um diagrama de estados no modelo.
Para um diagrama de estado, uma lista de transições para estados
Crie um conjunto de dados de UML com as seguintes características:
  • Parâmetro: state
  • Mapeamento da Linha:
    • Expressão: resolveURI($state)/outgoing/target
    • Tipo: uml:Vertex
Ao utilizar o conjunto de dados em um design de relatório, configure o valor de parâmetro para o URI de um estado no modelo.
Imagens de diagrama UML

Crie um conjunto de dados de UML com as seguintes características:

  • Mapeamento da Linha:
    • Expressão: //Diagram, por exemplo. Isso mapeia todos os diagramas do modelo.
    • Tipo: Diagram
  • Mapeamento da coluna: Defina uma coluna para a imagem do diagrama.
A consulta de mapeamento da coluna depende de qual método, entre os métodos a seguir, será utilizado para criar as imagens:
  1. Este método se destina apenas a relatórios HTML e outros relatórios com tamanho de página ilimitado e para imagens que podem ser reproduzidas por divisão em blocos.

    Exemplo: getDiagramHtmlImage(".", $genPath, $tileWidth, $tileHeight)

    Ao gravar uma definição de coluna com esta consulta, designe o nome e a string para o tipo.

    As imagens no relatório gerado têm o tamanho original do diagrama e a resolução completa, mas são divididos em blocos do tamanho especificado na consulta. Para obter informações adicionais sobre a função, consulte o tópico "Funções XPath Adicionais para Conjuntos de Dados de EMF e UML".

    Nota: Depois de definir o conjunto de dados, é possível criar um controle de Tabela no design de layout do relatório, ligá-lo ao conjunto de dados do diagrama e inserir um controle de Texto Dinâmico na linha de detalhe da tabela. Configure a expressão de texto row["image"]. Configure a largura e a altura do controle de texto como 100% do pai para que a imagem não fique cortada.
  2. Este método se destina a todos os formatos de relatório, especialmente os com tamanhos de página definidos como PDF e Microsoft® Word e para imagens que possam ser reproduzidas com uma resolução máxima.

    Exemplo: getDiagramImage(".", $maxResWidth, $maxResHeight)

    Ao gravar uma definição de coluna com esta consulta, designe o nome e o blob para o tipo.

    Para obter informações adicionais sobre a função, consulte o tópico "Funções XPath Adicionais para Conjuntos de Dados de EMF e UML".

    Depois de definir o conjunto de dados, é possível criar um controle de Tabela no design de layout do relatório, ligá-lo ao conjunto de dados do diagrama e inserir um controle de Imagem na linha de detalhe da tabela. Configure a imagem como Dinâmica e atribua um URI de row["image"]. Verifique se a largura e a altura do controle de imagem estão configurados como 100% do pai para que a imagem não fique cortada.

Para obter informações sobre a criação de design de relatórios, consulte o Guia de Campo para o BIRT.

O que Fazer Depois
Nota: Algumas informações, como links para a documentação do Eclipse ou para guias de desenvolvedor, estão disponíveis apenas a partir dos tópicos na ajuda do produto.

Feedback