当需要若干相同数据集(除了细微的变化之外)时,可使用参数。要避免创建多个数据集,可创建使用参数来表示变体的单个数据集,并将该参数绑定至所更改值。
例如,可创建一个获取包中所有类的数据集(名为 $name),而不是具有一个获取包中所有类的数据集(名为 A)以及另一个获取包中所有类的数据集(名为 B)。然后,可将 $name 绑定至 A 和 B。这使数据集更简练且更可复用。
有关使用参数以及有关将值绑定至这些参数的其他信息,请参阅“BIRT 的字段指南”。
为 EMF 和 UML 模型设计报告时,可使用参数来连接数据集中的对象。根据对象之间的关系,可使用关键字来连接这些对象;当无法使用关键字时,可定义参数来连接这些对象。但是,当关键字会起作用时,也可使用参数。
可在不使用参数的情况下连接的对象
在下列情况下,不需要创建参数来连接对象:
进行连接时需要参数的对象
在这些情况下,必须使用参数,因为 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 数据集”。
在定义参数之后,可通过使用其内部名称(前加美元符号 ($))来在行映射和列映射查询中引用该参数。在“数据绑定”页面上将值绑定至数据集参数时,可使用参数显示名称。