数据源配置详解

窗口组件渲染依赖的数据一般需要设置数据源来获得。不同类型的组件,要求的数据格式有所不同。另一方面,开发者提供的数据来源方式也可能有所不同,但大部分情况应来自关系数据。设置窗口组件时,会在需要的时候调出数据源设置面板,对该组件要求的数据进行绑定设置。

各类型数据源设置方法说明

关系数据库(最常用)

[参考]数据源配置详解  - 图1

【特别说明】SQL 支持下面几种内容
  1. SELECT F1, F2, ...
  2. FROM report_$CURR_YEAR$ -- <-- $变量$ 做标识符(表名字,段名)
  3. WHERE id = @12-USER_ID@ -- <-- @变量@
  4. AND url = @12-IMAGE@.url -- <-- @变量@ 表达式(JSON结构)
  5. AND field = #@2-RESULT@.data.split(',')
  6. .map(function(s) { return s.replace(/\s/g, ''); }).join(':')# -- <-- #JavaScript 表达式#

SQL 返回的 JSON 格式统一为:

  1. {
  2. rows:[{...}, {...}, ...], // 数据行集合,是一个对象数组。
  3. paged: false, // 是否分页了。
  4. page: 1, // 当前页号(组件发起分页请求,才有此字段)
  5. rowNum: 15, // 每页数量(组件发起分页请求,才有此字段)
  6. records: 12352 // 总记录数(组件发起分页请求,才有此字段)
  7. }

变量数据

[参考]数据源配置详解  - 图2

静态数据

[参考]数据源配置详解  - 图3

自定义 http(get) 接口

[参考]数据源配置详解  - 图4

如何开发自定义接口请参考文档 《自定义后台接口》。任何类型的组件发起自定义接口请求时,都会携带标准查询参数 criteria,帮助自定义接口开发者合理完成数据查询逻辑,不需要时可以忽略。criteria 的 JSON 结构如下:

  • countRecords {boolean} [optional] 是否要统计记录数,默认 false
  • paged {Boolean} [optional] 是否分页,默认 false
  • page {Number} [optional] 页号
  • rowNum {Number} [optional] 每页行数
  • sortBy {String} [optional] 排序字段
  • format {String} [optional] 数据返回格式: object | array 默认 object
  • params {Object}[optional] 指定参数,覆盖由系统自动捕获的参数上下文。
  • metaData {Boolean} [optional] 是否要求结果集中包含描述数据特征的元数据,默认 false
  • filters {Object}`[optional] 过滤器,例:
  1. {
  2. "groupOp": "OR", // 条件运算: OR | AND
  3. "groups": [ // 条件组,相当于 SQL 条件加括号,可以递归地定义下去。
  4. {
  5. "groupOp": "OR",
  6. "rules": [
  7. {
  8. "field": "birth_place",
  9. "op": "eq",
  10. "data": "浙江"
  11. }
  12. ],
  13. "groups": []
  14. }
  15. ],
  16. "rules": [ // 条件数组,每个元素是一个单独的条件
  17. {
  18. "field": "id", // 字段
  19. "op": "eq", // 操作,取值含义对照:
  20. // eq 等于, ne 不等于, lt 小于, le 小于等于, gt 大于, ge 大于等于, bw 以开头, bn 不以开头,
  21. // ew 以结尾, en 不以结尾, cn 包含, nc 不包含, nu 为空, nn 不为空, in 在集合中, nn 不在集合中
  22. "data": 1 //数据
  23. },
  24. {
  25. "field": "id",
  26. "op": "eq",
  27. "data": 2
  28. }
  29. ]
  30. }

【在自定义接口中获取标准查询参数示例】:

  1. module.exports = function(req, res) {
  2. // criteria 是一个JSON 字符串,需要转换成 JSON 结构
  3. var criteria = JSON.parse(req.query.criteria);
  4. // 获取参数
  5. var params = criteria.params || {};
  6. var name = params['11-NAME'];
  7. // 获取请求过滤条件
  8. var filters = criteria.filters || {};
  9. var rule = (filters.rules || [])[0] || {};
  10. var data = rule.data;
  11. ...
  12. res.send(...);
  13. }

jsonp

[参考]数据源配置详解  - 图5

http

[参考]数据源配置详解  - 图6