1. 概述
数据同步性能能够帮忙您实现数据源之间的数据同步,实用于各零碎数据整合、查问与报表分流、BI 软件、实时数据仓库等多种业务场景。本文将介绍通过明道云 API 实现数据同步成果的具体流程,帮忙您疾速把握明道云 API 的应用办法及数据同步治理要领。
正式开始学习之前,咱们先要理解以下信息:
* 同步计划概览
介绍数据同步性能应用的 API、计划概述,以及配置步骤。
* 非关系型数据类型映射关系解析
因为不同的数据库反对的数据类型不一样,数据类型无奈齐全对应。明道云利用自身是由零代码搭建生成的,应用 MongoDB 非关系型数据库来存储数据。因而, 在应用 API 获取后果数据并写入明道云利用里时,须要进行后果解析。
目前,在明道云里有三种实现利用数据主动同步的计划:
- 工作表事件推送(工作流应用 webhook 调用对方接口实时推送 举荐)
- API 数据抽取(动静获取工作表配置解析字段释义或界面设置字段别名)
- 数据库直连数据抽取(仅公有部署反对 详情点击查看)
- 性能个性接口配置
API 数据同步配置自动化计划详情请参见以下步骤:
- 接口根底名词释义
基于企业受权的接口须要的 Appkey,与 Sign 参数的传递、工作表的 Appkey Sign 可能不统一。所以,咱们依照以下指引别离获取正确的接口和签名。 - 企业接口 AppKey 信息获取形式
进入明道云零碎 – 组织治理 – 其余 – 组织密钥,获取企业受权凋谢接口密钥。 - 工作表接口 AppKey 信息获取形式
参考下图,进入利用 – API 开发文档,找到你须要的 AppKey。 - 如何取得企业接口签名?
- 进入明道云零碎 – 组织治理 – 其余 – 组织密钥,获取企业受权凋谢接口密钥对信息。
- 获取以后 Unix 工夫戳(精度为毫秒),此工夫戳在调用数据接口过程中须要传递。
- 将密钥对当中的 AppKey、SecretKey 和此 Unix 工夫戳进行依照键值对参数的形式拼接为字符串,如:AppKey=value1&SecretKey=value2&Timestamp=value3。各个参数要以 & 拼接。
-
将拼接的字符串用 SHA256 加密,并进行 BASE64 编码即可失去签名。
2. 计划步骤
1)获取利用列表
简要形容:获取整个组织下的所有利用
申请 URL:{Host}/v1/open/app/getByProject
申请形式:GET
参数:
申请示例
$
{Host}/v1/open/app/getByProject?timestamp=1618837301125&pro
jectId=449abe0c-e014-4836-8b60-
d868c217599c&appKey=ak&sign=x&accountId=id
返回数据阐明
App 实体
// 胜利
{
"data": [{
"appId":"string",
"name":"string",
"iconUrl":"string",
"color":"string"
}],
"error_code":1,
"success": true
}
// 失败
{
"error_msg": "谬误形容",
"error_code": 10101, // 状态码 非 1 为失败,"success": false
}
2)获取利用受权信息
简要形容:依据取利用的列表循环 APPID 获取利用的受权信息
申请 URL:{Host}/v1/open/app/getAppAuthorize
申请形式:GET
参数:
申请示例
$
{Host}/v1/open/app/getAppAuthorize?timestamp=1618837301125&
projectId=449abe0c-e014-4836-8b60-
d868c217599c&appKey=ak&sign=x&appId=id
返回数据阐明
Authorize 实体
// 胜利
{
"data": [{
"projectId": "string",
"appId": "string",
"appKey": "string",
"sign": "string",
"type": 1
},],
"error_code":1,
"success": true
}
// 失败
{
"error_msg": "谬误形容",
"error_code": 10101, // 状态码 非 1 为失败,"success": false
}
3)获取利用信息
简要形容:获取利用的分组,工作表以及视图信息
申请 URL:{Host}/v1/open/app/get
申请形式:GET
参数:
// 胜利返回
{
"data": {
"projectId": "网络 id",
"appId": "利用 id",
"name": "利用名称",
"iconUrl": "图标地址",
"color": "图标色彩",
"desc": "利用形容",
"sections": [{
"sectionId": "利用分组 id",
"name": "分组名称",
"items": [{
"id": "工作表 id",
"name": "工作表名称",
"type": 0,
"iconUrl": "工作表图标地址",
"status": 1
}]
}]
},
"error_code": 1,
"success": true
}
4)获取工作表构造信息
简要形容:获取工作表的字段 (别名) 释义,程序中按别名或中文名进行报错读取
申请 URL:{Host}/v2/open/worksheet/getWorksheetInfo
申请形式:POST
参数:
// 胜利返回
{
"data": {
"worksheetId": "5dfc7f11be4eea00015b955a",
"name": "汇总",
"views": [
{
"viewId": "视图 ID",
"name": "视图名称"
}
],
"controls": [
{
// 以下只列出常用字段属性信息,其余返回值可疏忽
"controlId": "控件",
"controlName": "控件名称",
"type": 控件类型,
"options": [{"key": "1","value": "选项一","index": 1,"isDeleted": false,"color": "#2196F3","score": 0.0}],// 只有选项才有此字段返回
"alias":"别名",
}
]
},
"success": true,
"error_code": 1
}
5)获取工作表数据
简要形容:分页获取工作表记录,根据上述字段别名或中文名进行本地数据库字段比对组装数据
申请 URL:{Host}/v2/open/worksheet/getFilterRows
申请形式:POST
参数:
// 胜利返回
{
"data": {
"rows": [
{
"rowid": "记录 ID",
"ctime": "创立工夫",
"caid": {
"accountId": "创建人 id",
"fullname": "创建人",
"avatar": "创建人头像地址",
"status": 0
},
"ownerid": {
"accountId": "拥有者 id",
"fullname": "拥有者",
"avatar": "拥有者头像地址",
"status": 0
},
"utime": "最初批改工夫",
"控件 id": "值",
"控件 id": "选项 1",
// 等等....,
"allowdelete": true,
"关联表": "[\"3c04eb09-5e52-4dfd-8068-a2cc5a91d7c8\"]"// 关联表返回是显示被关联记录的 id
}
],
"total": 总条数,
},
"success": true,
"error_code": 1
}
最初,依据返回的 total 计算页面数,循环调用接口获取数据写入到数据库内,再定时设置下次工作触发工夫。这样就实现了数据自动化同步了。
3. 筛选器阐明
为了满足数据查问需要,明道云对查问数据增加了筛选器对象的设计公布。它反对数据查问、关联数据条件查问等场景。
// 以下是一个规范的筛选器的数据结构
[
{
"controlId": "control1",
"dataType": 6,
"spliceType": 1,
"filterType": 13,
"value": "2"
}
]
1)字段阐明
2)FilterTypeEnum
3)DateRangeEnum
4)非凡 AccountID
5)示例
//1. 工夫控件:筛选类型只能为(工夫是 工夫不是 工夫在范畴内 工夫不在范畴内 早于 晚于 为空 不为空)。//1.1 工夫在范畴 2022-02-28 00:00:00 至 2022-03-03 23:59:59 内:[{"controlId":"工夫控件","dataType":16,"spliceType":1,"filterType":31,"dateRange":18,"dateRangeType":1,"maxValue":"2022-03-03 23:59:59","minValue":"2022-02-28 00:00:00","values":[]}]
//1.2 工夫是指定日期:2022-03-01 14:30:04
[{"controlId":"工夫控件","dataType":16,"spliceType":1,"filterType":17,"dateRange":18,"dateRangeType":1,"value":"2022-03-01 14:30:04","values":[]}]
//1.3 工夫晚于本月
[{"controlId":"工夫控件","dataType":16,"spliceType":1,"filterType":33,"dateRange":7,"dateRangeType":1,"values":[]}]
//2. string 类型控件:筛选类型只能为(蕴含 不蕴含 结尾为 结尾为 是 不是 为空 不为空)//2.1 文本蕴含 A 字段
[{"controlId":"文本控件","dataType":2,"spliceType":1,"filterType":1,"values":["A"]}]
//2.2 文本是 A 字段
[{"controlId":"文本控件","dataType":2,"spliceType":1,"filterType":2,"values":["A"]}]
//3. 数值 金额 公式 筛选类型只能为(= ≠ > < ≥ ≤ 在范畴内 不在范畴内 为空 不为空)//3.1 在范畴 1 -101
[{"controlId":"数值金额控件","dataType":6,"spliceType":1,"filterType":11,"maxValue":101,"minValue":1}]
//3.2 数值 金额 公式 大于 1
[{"controlId":"数值金额控件","dataType":6,"spliceType":1,"filterType":13,"dateRange":0,"dateRangeType":1,"value":"1"}]
//4. 单条关联表控件配置查问:筛选类型只能(关联控件是 关联控件不是 为空 不为空)//4.1 单条关联表控件 配置【是】查问
[{"controlId":"单条关联表控件","dataType":29,"spliceType":1,"filterType":24,"values":["关联表记录的 id"]}]
//5. 多条关联表控件配置查问 筛选类型只能(蕴含 不蕴含 为空 不为空)//5.1 多条关联表控件 配置【是】查问
[{"controlId":"多条关联表控件","dataType":29,"spliceType":1,"filterType":24,"values":["关联表记录的 id"]}]
//6. 成员字段 筛选条件 只能为(是 不是 为空 不为空)[{"controlId":"成员","dataType":26,"spliceType":1,"filterType":2,"dateRange":0,"dateRangeType":1,"values":["用户 id"]}]
//7. 拥有者 创建者 筛选条件 只能为(是 不是 为空 不为空 惯例用户 内部用户)//7.1 拥有者是指定用户
[{"controlId":"ownerid","dataType":26,"spliceType":1,"filterType":2,"dateRange":0,"dateRangeType":1,"values":["用户 id"]}]
//7.2 拥有者是惯例用户
[{"controlId":"ownerid","dataType":26,"spliceType":1,"filterType":41,"dateRange":0,"dateRangeType":1}]
//8. 附件筛选条件 只能是(为空 不为空)//8.1 附件 有
{"controlId": "附件控件","dataType": 14,"spliceType": 1,"filterType": 8,"value": 1}
//8.2 附件 无
{"controlId": "附件控件","dataType": 14,"spliceType": 1,"filterType": 7,"value": 1}
4. 参考文档
- 明道云企业开发受权接口阐明
- 明道云工作 API
- 工作表 API 筛选器阐明