4.1.3. Groovy 数据集
Groovy 数据集是通过执行 Groovy 脚本而生成的。该脚本返回 List<Map<String, Object>> 类型的对象。此列表的每个元素都是 Map<String, Object> 类型的对象 - 对应于一个数据集记录。
以下对象将被传递到脚本中:
-
dataManager- 提供 CRUD 功能的com.haulmont.cuba.core.global.DataManager类型的对象。例如:def book = dataManager.load(Book.class).id(bookId).view("book.edit").one; -
metadata-com.haulmont.cuba.core.global.Metadata类型的对象,提供对应用程序元数据的访问。例如:def metaClass = metadata.getClassNN('sec$User') -
params- 外部报表参数 map。以下是获取参数值的示例:def active = params['active'] -
parentBand- 父带区是com.haulmont.yarg.structure.BandData类型的对象。此对象允许通过调用getParameterValue()方法获取父带区字段值,例如:def groupId = parentBand.getParameterValue('groupId') -
persistence-com.haulmont.cuba.core.Persistence类型的对象,允许获取数据源。默认情况下,使用主数据存储。要使用其它数据存储,请将其名称作为参数传递给
getDataSource()方法:def sql = new Sql(persistence.getDataSource('myStore')) def rows = sql.rows('select e.name from SEC_GROUP e') -
security-com.haulmont.cuba.core.global.Security类型的对象,用于检查用户对系统中不同对象的访问权限。例如:if (security.isEntityOpPermitted(Book.class, EntityOp.READ) { ... } -
timeSource- 用于获取当前时间的com.haulmont.cuba.core.global.TimeSource类型的对象。例如:def currentDate = timeSource.currentTimestamp() -
transactional- 将一个应该在新事务中执行的闭包作为参数的方法。当前的EntityManager成为闭包参数。例如:transactional { em -> def query = em.createQuery('select g from sec$Group g') ... }下面是一个 Groovy 脚本的示例,该脚本通过父带区输出的组和
active外部参数提取用户:def result = [] transactional { em -> def query = em.createQuery('select u from sec$User u where u.group.id = ?1 and u.active = ?2') query.setParameter(1, parentBand.getParameterValue('groupId')) query.setParameter(2, params['active']) query.resultList.each { user -> result.add(['userLogin': user.login, 'userName': user.name]) } } return result -
userSession- 与当前通过身份验证的用户关联的com.haulmont.cuba.security.global.UserSession类型的对象。例如:def user = userSession.currentOrSubstitutedUser -
userSessionSource-com.haulmont.cuba.core.global.UserSessionSource类型的对象,用于获取当前用户会话对象。例如:def locale = userSessionSource.locale
|
可以使用
|