说明:
本示例中的代码和截图可能和您现在手中的版本不同,但操作思路一样。
特别说明:以下举例的例子要自己代码,是写死的数据的代码,请根据自己实际业务编写代码只是
作为参考
,不能直接调用使用
一、概述
表单或者列表部分数据是通过第三方接口(RESTfull风格、Web Service)获取数据,通过配置和编写代码平台的输入、输出参数的中间转换适配。达到第三方接口的数据兼容。转换成平台识别的数据,给下拉、单选、多选、自定义对话框、关联数据等提供数据来源
二、 操作步骤
特别说明:以下举例的例子要自己代码,是写死的数据的代码,请根据自己实际业务编写代码只是
作为参考
,不能直接调用使用
以下例子都以该接口http://192.168.3.230:15100/iform/platform/v3/service/demo/query 为例了【post类型接口】
1.服务配置管理
在服务管理配置,例如下图:
2. 数据集
在数据配置,选择服务配置管理,例如下图:
3. 数据模版
在数据模版配置过程
1)接口数据参数处理
特别说明:以下举例的例子要自己代码,是写死的数据的代码,请根据自己实际业务编写代码只是
作为参考
,不能直接调用使用
示例中的代码维护在:CommonScript.java类中
【输入参数数据处理】:cscript.defaultResfulInput(params)
params参数必须是这个参数
`params`是个Map对象,包含以下内容:
`query` 查询数据
`page` 分页数据
【输出参数数据处理】cscript.defaultResfulOutput(data)
data参数必须是这个参数
`data`是个JSON的String,需要根据实际数据进行解析
2)查询字段配置
根据实际情况配置,例如:ibps平台,是数据库表的字段,name_
,最后输出格式Q^name_^SL
所以标识(name) 填写name_
,也是上节输入参数(接收字段)一致
3)显示字段配置
根据实际情况配置,一般都是输出的结果集包含,例如:name
(区分大小写,必须跟结果集一致)
4)过滤条件
该功能暂不支持
5)返回字段
根据实际情况配置,参考【显示字段配置】
6)排序字段
根据实际情况配置,参考【查询字段配置】
7)最终预览效果
4、表单控件效果
具体参考[数据模版-表单控件]
1) 单选和多选、下拉配置步骤和效果
1—)数据模版配置-值来源
2-)表单配置
选择值来源
配置字段
最终效果
2)关联数据控件配置步骤和使用效果
类似【单选和多选、下拉】配置
3)自定义对话框配置步骤和使用效果
类似【单选和多选、下拉】配置,只是类型配置成对话框
4) 文本框获取值配置步骤和效果( 暂不支持)
三、 脚本编写
特别说明:以下举例的例子要自己写代码,是写死的相关数据的代码,请根据自己实际业务编写代码只是
作为参考
,不能直接调用使用
,请勿直接使用,否则引起错误自行承担
1、输入参数数据处理脚本编写
参考示例:
/**
* 输入参数数据处理脚本
* @param params
* @return
*/
@SuppressWarnings("unchecked")
public Map<String,Object> defaultResfulInput(Map<String,Object> params) {
///获取查询数据【固定参数】
Map<String, Object> querys = (Map<String, Object>) params.get("query");
Map<String, Object> page = (Map<String, Object>) params.get("page");
Map<String,Object> map = new HashMap<String, Object>();
Map<String,String> header = new HashMap<String, String>();
// 设置请求头,**目前写死token**,实际根据获取外部的token
header.put("X-Authorization-access_token", "9b4f99b0012e11ea842692c3dee51b7e");
map.put("header",header);
//构建查询
JSONArray parameters = new JSONArray();
for(Map.Entry<String, Object> entry : querys.entrySet()){
JSONObject param = new JSONObject();
param.accumulate("key", "Q^"+entry.getKey()+"^SL").accumulate("value",entry.getValue());
parameters.add(param);
}
JSONObject body = new JSONObject();
body.accumulate("parameters",parameters);
//构建分页
JSONObject requestPage = new JSONObject();
requestPage.accumulate("pageNo", page.get("pageNo"));
requestPage.accumulate("limit", page.get("pageSize"));
body.accumulate("requestPage",requestPage);
//构建排序
body.accumulate("sorts",new JSONArray() );
map.put("body",body.toString());
map.put("bodyType","json");
return map;
}
根据接口输入参数,需要返回实际的参数
输入(接受)参数params
是个Map对象,包含以下【固定参数】:
query
查询数据
page
分页数据
返回值是个Map(Map类型) Map的key包含以下【固定参数】
(这个需要分析你们接口请求类型,是post、get的方法,输入参数(body,query))bodyType
form、json等[如果是post类型建议传入]body
json字符串query
查询的键值对header
请求头
2、 输出参数数据处理脚本编写
参考示例:
public List<?>defaultResfulOutput(String data ) {
List<Map<String, Object>> result = new ArrayList<Map<String,Object>>();
JSONObject json = JSONObject.fromObject(data);
JSONObject dataJson =JsonUtil.getJSONobject(json, "data");
JSONArray dataResult = JsonUtil.getJSONArray(dataJson, "dataResult");
JSONObject pageResult = JsonUtil.getJSONobject(dataJson, "pageResult");
//数据处理
if(JsonUtil.isNotEmpty(dataResult)) {
for (Object obj : dataResult) {
Map<String, Object> map = new HashMap<String, Object>();
JSONObject dataResultJson = (JSONObject) obj;
for (Iterator<?> iter = dataResultJson.keys(); iter.hasNext();) {
String key = (String) iter.next();
map.put(key, JsonUtil.getString(dataResultJson, key));
}
result.add(map);
}
}
//分页处理
if(JsonUtil.isNotEmpty(pageResult)) {
Integer pageNo = JsonUtil.getInt(pageResult, "pageNo");
int limit = JsonUtil.getInt(pageResult, "limit");
int totalCount = JsonUtil.getInt(pageResult, "totalCount");
PageResult page = new PageResult(pageNo,limit,totalCount);
result =new PageList<Map<String, Object>>(result,page);
}
return result;
}
根据提供接口的返回结果,返回list(如果包含分页数据则返回PageList)
-输入参数:data
是个JSON的String,需要根据实际数据进行解析
-返回值是个List
类型 ,返回列表数据,如果包含分页数据则返回PageList
最后编辑:hugh 更新时间:2024-11-25 19:17