3.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
Tip
|
可以使用
|