EMF 和 UML 数据集中的参数

可在 EMF 和 UML 数据集中定义参数,在针对行映射和列映射的数据集查询中使用这些参数,然后在报告设计中将值绑定至这些参数。可使用参数来在通用数据集中创建变体,以便避免创建多个彼此几乎相同的数据集。还可使用参数来连接对象。

如何使用参数来在通用数据集中创建变体

当需要若干相同数据集(除了细微的变化之外)时,可使用参数。要避免创建多个数据集,可创建使用参数来表示变体的单个数据集,并将该参数绑定至所更改值。

例如,可创建一个获取包中所有类的数据集(名为 $name),而不是具有一个获取包中所有类的数据集(名为 A)以及另一个获取包中所有类的数据集(名为 B)。然后,可将 $name 绑定至 AB。这使数据集更简练且更可复用。

有关使用参数以及有关将值绑定至这些参数的其他信息,请参阅“BIRT 的字段指南”

如何使用参数来连接对象

为 EMF 和 UML 模型设计报告时,可使用参数来连接数据集中的对象。根据对象之间的关系,可使用关键字来连接这些对象;当无法使用关键字时,可定义参数来连接这些对象。但是,当关键字会起作用时,也可使用参数。

可在不使用参数的情况下连接的对象

在下列情况下,不需要创建参数来连接对象:

进行连接时需要参数的对象

在下列情况下,需要使用参数来连接对象:
  • 具有 1 对 * 多重性的关系,在此情况下,多重性为 1 的端不可导航
    " "
  • 具有 * 对 * 多重性的关系
    “ "

在这些情况下,必须使用参数,因为 EMF 和 UML 数据集不支持多重性大于 1 的列。此事实意味着,无法通过使用数据集中表示关系的另一端的列来表示多重性为 * 的可导航端。这些类型的关系在 EMF 和 UML 模型中很常见。

连接对象的技巧

可在数据集中使用参数来连接在模型中通过任何类型的关系来相关的两个对象。要使用参数来连接对象,可定义表示关系的可导航端的数据集,并针对它定义表示该关系的另一端上对象的参数。然后,在行映射查询中,可将此参数用作上下文,以从它导航至表示该数据集的行的对象。

例如,在表示类 Y 的数据集中,可定义表示类 X 的对象的参数 $X,然后指定其行映射查询为 XPath 表达式 $X\y。通过此方式,该数据集表示以特定方式与类型为 X 的上下文对象相关且类型为 Y 的对象。

数据集参数通过商业智能和报告工具 (BIRT) 支持的任何标量类型来类型化。例如,可定义字符串参数 $name,然后编写以下行映射 XPath 表达式:Class->ownedAttribute[@name=$name]

对象参数可由标量标识表示,可使用该标识来解析对象。在 EMF 和 UML 模型中,对象的唯一标识是其以字符串编码的 URI。因此,可选择 string 作为 URI 参数的类型,并在运行时将它们绑定至对象 URI 列。

如何定义参数

有关在创建数据集时定义参数的信息,请参阅主题“创建 EMF 数据集”和“创建 UML 数据集”。

还可将参数添加至现有的数据集。在数据集编辑器中,您从“查询参数”页面(而不是“参数”页面)开始,以针对 EMF 和 UML 数据集查询定义参数。可按如下方式使用这两个页面:
  • 使用“查询参数”页面来添加、除去和重命名参数以及对参数重新排序。此页面上的参数由参数的内部名称标识。该内部名称是在 XPath 表达式中使用的名称,因此它必须符合变量的 XPath 命名约定;它必须以字母或下划线 (_) 开头,并且可包含任何序列的字母、数字或下划线字符。在此页面上进行的更改还会显示在“参数”页面上。
  • 使用“参数”页面来完成参数的定义。指定显示名称(最初设置为内部名称)、类型(最初设置为 String)、方向(最初设置为 Input)以及要绑定至数据集参数的报告参数(如果有)的名称。

在定义参数之后,可通过使用其内部名称(前加美元符号 ($))来在行映射和列映射查询中引用该参数。在“数据绑定”页面上将值绑定至数据集参数时,可使用参数显示名称。

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

反馈