参数

外部参数在运行报表时从外部传递,可用作数据集中的条件。每个报表带区都可以使用全部的外部参数,因此外部参数在模板中可像数据集字段一样直接使用。在数据集的字段名与参数名相同时,数据集字段值优先,报表将使用数据集字段值。

外部参数可以由调用代码在通过 API 运行报表时传入。另外,当用户运行报表时,也会展示一个对话框,用来输入参数。后面这种情况需要在报表详情视图的 Parameters(参数) 标签页中定义外部参数。

parameters

点击 Create(新建) 后,展示 Report parameter(报表参数) 对话框。

report parameter

输入参数属性

Properties(属性) 标签页,可以定义参数的属性:

  • Name - 参数名称,在运行报表时这个名称显示在参数输入表单中。

  • Alias(别名) - 用于在数据集中访问的参数别名。

  • Type - 参数类型。

  • Hidden - 定义是否对用户隐藏此参数。

  • Required? - 是否为必需参数。

  • Default value - 定义用户未选择值的情况下将使用的默认参数值。

参数类型可以是基本的 StringNumberBoolean 类型或者时间类型,另外,也支持 Enumeration(枚举)EntityList of entities(实体列表) 参数类型。根据所选择的类型不同,需要额外配置不同的字段:

如果选择 Entity(实体)List of entities(实体列表) 类型:

  • Entity - 实体参数。

  • Entity selection view(实体选择视图) - 可选的视图标识符,用于选择实体实例。如果未指定视图,将使用通用的实体选择视图。

如果选择了 Enumeration(枚举) 类型:

  • Enumeration - 参数枚举类。

如果选择了时间类型(DateTimeDate and time):

  • Default date(time) is current(默认日期(时间)为当前日期时间) - 是否将当前时间戳用作默认参数值。

本地化

Localization(本地化) 标签页,可以定义不同语言环境的参数名。需要输入 locale_name = parameter_name 格式的本地化值,示例:

zh_CN = 书

参数转换

Transformation(转换) 标签页中可以定义处理参数的 Groovy 脚本,在报表使用参数之前先通过脚本处理。

Groovy 脚本应返回新的参数值。脚本中可以使用下列参数:

  • params - 参数的 map,可以通过别名 params 访问。

  • paramValue - 用于访问参数当前值。

  • dataManager - DataManager 类型的对象,提供 CRUD 功能。

  • metadata - Metadata 类型的对象,提供对应用程序元数据的访问。

  • applicationContext - org.springframework.context.ApplicationContext 类型的对象,提供对托管 bean 的访问。

示例:

return "%" + paramValue + "%"

还可以使用预定义的转换器为文本(String)参数添加通配符:

  • Starts with

  • Ends with

  • Contains

transformation

Validation(验证) 标签页中,可以使用 Groovy 脚本定义一些参数验证条件,请参阅下面的详细说明。

输入参数验证

可以验证输入参数和(或)定义参数交叉验证。

  1. Validation(验证) 标签页中通过选中 Validate(验证) 复选框为每个参数启用参数验证。验证逻辑由 Groovy 脚本指定。脚本应检查参数值,如果值无效,则调用 invalid() 方法。此方法会向用户显示一条给定的警告信息,提示用户参数验证失败。

    脚本中可以使用下列参数:

    • value - 用户输入的参数值。

    • applicationContext - org.springframework.context.ApplicationContext 类型的对象,提供对托管 bean 的访问。

    • currentAuthentication - io.jmix.core.security.CurrentAuthentication 类型的对象,关联当前认证用户。

    • dataManager - DataManager 类型的对象,提供 CRUD 功能。

    • metadata - Metadata 类型的对象,提供对应用程序元数据的访问。

    • invalid - Groovy 闭包,在脚本内部调用会使验证失败。

      validation
  2. 通过选中 Parameters(参数) 标签页的 Cross parameters validation(多参数交叉验证) 部分的 Validate(验证) 复选框,可以启用参数交叉验证。验证逻辑由 Groovy 脚本指定。这个脚本应检查参数值之间是否合乎逻辑,检查不通过时调用 invalid() 方法。此方法将向用户显示一条给定的验证失败警告信息。

    除了上面列出的变量之外,params 变量也会传递到脚本中以访问外部报表参数映射。

    cross parameter validation