将公共类型的模型信息添加至报告

可以设计“商业智能报告工具”(BIRT) 报告以合并 EMF 和 UML 模型提供的所有类型的信息。对于报告中共同包括的某些类型的信息(例如,模型元素文档),您必须遵循特殊过程。本主题提供了有关添加大多数公共类型的信息的特定指示信息,并标识了必须添加至报告设计的对应元素。

关于此任务

一些报告设计元素依赖于定制 XPath 函数。有关编写和部署 XPath 函数的信息,请参阅主题“编写定制 XPath 函数”。要获取随 IBM® Rational® 产品提供且对于设计报告很有用的其他 XPath 函数的列表,请参阅主题“用于 EMF 和 UML 数据集的其他 XPath 函数”。

过程

下表包括有关将某些类型的模型信息添加至 BIRT 报告的特定指示信息:
要包括在报告中的信息 对应的报告设计元素
模型元素的文档
要将模型元素的文档添加至报告设计,请将以下列映射添加至数据集:
  • 名称:documentation
  • 表达式:getElementsWithStereotype(ownedComment, 'Default::Documentation')[1]/@body
  • 类型:String
请将动态文本元素而不是标签元素用于此列。使用动态文本时,报告中文档的格式化方式与文档在模型中时相同;使用标签时,将在报告中生成 HTML 标记。

IBM Rational 产品提供了 getElementsWithStereotype 函数。

应用于模型的概要文件的列表

要获取示例,请参阅“空白 UML 模型报告” (blankUMLModelReport.rptdesign) 中的“已应用的概要文件”数据集,可以从“报告资源管理器”视图访问该报告。

应用于元素的构造型的列表
创建具有下列特征的 UML 数据集:
  • 参数:element
  • 行映射:
    • 表达式:oclEvaluate(resolveURI($element), "self.getAppliedStereotypes()")
    • 类型:uml:Stereotype

在报告设计中使用该数据集时,请将参数值设置为模型元素的 URI。

直接存在于包中的类的列表
创建具有下列特征的 UML 数据集:
  • 参数:package
  • 行映射:
    • 表达式:oclQuery(resolveURI($package)/packagedElement, "self.oclIsKindOf(uml::Class)")
    • 类型:uml:Class

在报告设计中使用该数据集时,请将参数值设置为模型中包的 URI。

类中属性及其类型的列表

要获取示例,请参阅“空白 UML 模型报告” (blankUMLModelReport.rptdesign) 中的“类以及属性”数据集,可以从“报告资源管理器”视图访问该报告。

类中操作及其返回类型的列表

要获取示例,请参阅“空白 UML 模型报告” (blankUMLModelReport.rptdesign) 中的“类以及属性”数据集,可以从“报告资源管理器”视图访问该报告。

将操作列表包括在类中类似于将属性列表包括在类中,但是请使用操作来代替属性。

操作中的参数(“return”除外)及其类型的列表
创建具有下列特征的 UML 数据集:
  • 参数:operation
  • 行映射:
    • 表达式:oclQuery(resolveURI($operation)/ownedParameter, "self.direction <> ParameterDirectionKind::return")
    • 类型:uml:Parameter
  • 列映射:typeNametype/@nameString

在报告设计中使用该数据集时,请将参数值设置为模型中操作的 URI。

操作抛出的异常的列表
创建具有下列特征的 UML 数据集:
  • 参数:operation
  • 行映射:
    • 表达式:resolveURI($operation)/raisedException
    • 类型:uml:Type

在报告设计中使用该数据集时,请将参数值设置为模型中操作的 URI。

实现接口的所有类的列表
创建具有下列特征的 UML 数据集:
  • 参数:interface
  • 行映射:
    • 表达式:oclEvaluate(resolveURI($interface), "InterfaceRealization.allInstances()->select(i | i.supplier->includes(self))")
    • 类型:uml:InterfaceRealization
  • 列映射:
    • clientNameclient[1]/@name,String
    • clientURIgetURI(client[1])String

在报告设计中使用该数据集时,请将参数值设置为模型中接口的 URI。

类实现的所有接口的列表
创建具有下列特征的 UML 数据集:
  • 参数:class
  • 行映射:
    • 表达式:oclEvaluate(resolveURI($class), "InterfaceRealization.allInstances()->select(i | i.client->includes(self))")
    • 类型:uml:InterfaceRealization
  • 列映射:
    • supplierNamesupplier[1]/@nameString
    • supplierURIgetURI(supplier[1])String

在报告设计中使用该数据集时,请将参数值设置为模型中类的 URI。

继承自一个类的所有类的列表 要获取示例,请参阅“UML 模型度量报告” (umlModelMetrics.rptdesign) 中的“子类”数据集。
一个类继承自的所有类的列表
创建具有下列特征的 UML 数据集:
  • 参数:class
  • 行映射:
    • 表达式:resolveURI($class)/superClass
    • 类型:uml:Classifier

在报告设计中使用该数据集时,请将参数值设置为模型中类的 URI。

与一个类具有直接关联的所有类的标准名称以及目标角色名称、可视性和多重性的列表
创建具有下列特征的 UML 数据集:
  • 参数:class
  • 行映射:
    • 表达式:oclQuery(resolveURI($class)/ownedAttribute, "Association.allInstances()->select(a|a.memberEnd->includes(self))->notEmpty()")
    • 类型:uml:Property
  • 列映射:
    • targetRoleName@nameString
    • visibility@visibilityString
    • multiplicityconcat(concat(@lower,".."), @upper)String

在报告设计中使用该数据集时,请将参数值设置为模型中类的 URI。

与参与者相关联的用例
创建具有下列特征的 UML 数据集:
  • 参数:actor
  • 行映射:
    • 表达式: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))")
    • 类型:uml:UseCase

在报告设计中使用该数据集时,请将参数值设置为模型中参与者的 URI。

与用例相关联的参与者
创建具有下列特征的 UML 数据集:
  • 参数:usecase
  • 行映射:
    • 表达式: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))")
    • 类型:uml:Actor

在报告设计中使用该数据集时,请将参数值设置为模型中用例的 URI。

对于类图,这是图中类的列表
创建具有下列特征的 UML 数据集:
  • 参数:diagram
  • 行映射:
    • 表达式:oclEvaluate(resolveURI($diagram), "self.children->select(c|c.element.oclIsKindOf(uml::Class))->collect(c|c.element)")
    • 类型:uml:Class

在报告设计中使用该数据集时,请将参数值设置为模型中图的 URI。

对于时序图,这是生命线的对象名和类型的列表
创建具有下列特征的 UML 数据集:
  • 参数:sequenceDiagram
  • 行映射:
    • 表达式:oclEvaluate(resolveURI($sequenceDiagram), "self.element.oclAsType(uml::Interaction).lifeline->collect(l|l.represents)")
    • 类型:uml:ConnectableElement
    列映射:
    • objectName@nameString
    • typeNametype/@nameString
在报告设计中使用该数据集时,请将参数值设置为模型中时序图的 URI。
对于时序图的每个生命线,这是转至该生命线的消息
创建具有下列特征的 UML 数据集:
  • 参数:lifeline
  • 行映射:
    • 表达式: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)")
    • 类型:uml:Message
  • 列映射:
    • messageName@nameString
    • signatureNamesignature/@nameString
在报告设计中使用该数据集时,请将参数值设置为模型的时序图中生命线的 URI。
对于时序图,这是仅顶级消息的列表

顶级消息是交互期间从门中发送的消息。

创建具有下列特征的 UML 数据集:
  • 参数:sequenceDiagram
  • 行映射:
    • 表达式:oclEvaluate(resolveURI($sequenceDiagram), "self.element.oclAsType(uml::Interaction).formalGate->collect(g|g.message)")
    • 类型:uml:Message
  • 列映射:
    • messageName@nameString
    • signatureNamesignature/@nameString
在报告设计中使用该数据集时,请将参数值设置为模型中时序图的 URI。
对于结构化分类器,这是端口列表
创建具有下列特征的 UML 数据集:
  • 参数:structuredClassifier
  • 行映射:
    • 表达式:resolveURI($structuredClassifier)/ownedPort
    • 类型:uml:Port
在报告设计中使用该数据集时,请将参数值设置为模型中结构化分类器的 URI。
对于端口,这是提供的接口的列表
创建具有下列特征的 UML 数据集:
  • 参数:port
  • 行映射:
    • 表达式:resolveURI($port)/provided
    • 类型:uml:Interface
在报告设计中使用该数据集时,请将参数值设置为模型中端口的 URI。
对于端口,这是所需接口的列表
创建具有下列特征的 UML 数据集:
  • 参数:port
  • 行映射:
    • 表达式:resolveURI($port)/required
    • 类型:uml:Interface
在报告设计中使用该数据集时,请将参数值设置为模型中端口的 URI。
对于活动图,这是分区列表

创建具有下列特征的 UML 数据集:
  • 参数:activityDiagram
  • 行映射:
    • 表达式:resolveURI($activityDiagram)/element/partition
    • 类型:uml:ActivityPartition
在报告设计中使用该数据集时,请将参数值设置为模型中活动图的 URI。
对于活动图,这是数据存储器列表
创建具有下列特征的 UML 数据集:
  • 参数:activityDiagram
  • 行映射:
    • 表达式:oclEvaluate(resolveURI($activityDiagram), "self.element.oclAsType(uml::Activity).node->select(n|n.oclIsKindOf(uml::DataStoreNode))")
    • 类型:uml:DataStoreNode
在报告设计中使用该数据集时,请将参数值设置为模型中活动图的 URI。
对于活动图,这是其分类器具有特定构造型的中央缓冲区的列表

此方案中的构造型是“Business Modeling::BusinessWorker”

创建具有下列特征的 UML 数据集:
  • 参数:activityDiagram
  • 行映射:
    • 表达式: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')))")
    • 类型:uml:CentralBufferNode
在报告设计中使用该数据集时,请将参数值设置为模型中活动图的 URI。
对于活动图,这是对象流中类型的列表
创建具有下列特征的 UML 数据集:
  • 参数:activityDiagram
  • 行映射:
    • 表达式:oclEvaluate(resolveURI($activityDiagram), "self.element.oclAsType(uml::Activity).edge->select(e|e.oclIsKindOf(uml::ObjectFlow))")
    • 类型:uml:ObjectFlow
  • 列映射:
    • sourceTypeoclEvaluate(source, "self.oclAsType(uml::ObjectNode).type")/@nameString
    • targetTypeoclEvaluate(target, "self.oclAsType(uml::ObjectNode).type")/@nameString

在报告设计中使用该数据集时,请将参数值设置为模型中活动图的 URI。

对于状态图,这是状态名称列表
创建具有下列特征的 UML 数据集:
  • 参数:statechartDiagram
  • 行映射:
    • 表达式:oclEvaluate(resolveURI($statechartDiagram), "self.element.oclAsType(uml::StateMachine).region->collect(r|r.subvertex)")
    • 类型:uml:State
在报告设计中使用该数据集时,请将参数值设置为模型中状态表图的 URI。
对于状态图中的状态,这是状态转换列表
创建具有下列特征的 UML 数据集:
  • 参数:state
  • 行映射:
    • 表达式:resolveURI($state)/outgoing/target
    • 类型:uml:Vertex
在报告设计中使用该数据集时,请将参数值设置为模型中状态的 URI。
UML 图的图像

创建具有下列特征的 UML 数据集:

  • 行映射:
    • 表达式:例如,//Diagram。此表达式将映射模型中的所有图。
    • 类型:Diagram
  • 列映射:为图像定义列。
列映射查询依赖于下列方法中用来创建图像的方法:
  1. 此方法仅适用于 HTML 报告和其他具有无限制页大小的报告,并适用于可以通过分割成多个平铺部分来呈现的图像。

    示例:getDiagramHtmlImage(".", $genPath, $tileWidth, $tileHeight)

    编写具有此查询的列定义时,请指定名称并指定 string 作为类型。

    所生成报告中的图像具有图的原始大小和完整的分辨率,但是将按查询中指定的大小分割成多个平铺部分。有关该函数的其他信息,请参阅“EMF 和 UML 数据集的其他 XPath 函数”主题。

    注: 定义该数据集后,可以在报告布局设计中创建“表”控件,将控件绑定该至图数据集,并在表的详细信息行中插入“动态文本”控件。设置文本表达式 row["image"]。将文本控件的宽度和高度设置为父代的 100%,以便不会截短图像。
  2. 此方法适用于所有报告格式,尤其是那些具有已定义页大小的格式(例如,PDF 和 Microsoft Word),并适用于可以使用最大分辨率呈现的图像。

    示例:getDiagramImage(".", $maxResWidth, $maxResHeight)

    编写具有此查询的列定义时,请指定名称并指定 blob 作为类型。

    有关该函数的其他信息,请参阅“EMF 和 UML 数据集的其他 XPath 函数”主题。

    定义该数据集后,可以在报告布局设计中创建“表”控件,将控件绑定该至图数据集,并在表的详细信息行中插入“图像”控件。将图像设置为“动态”并指定 URI 为 row["image"]。确保将图像控件的宽度和高度设置为父代的 100%,以便不会截短图像。

有关设计报告的信息,请参阅 BIRT 的字段指南

下一步做什么

注: 某些信息(例如与 Eclipse 文档或开发者指南的链接)只能从随产品安装的帮助主题中获取。

反馈