乐趣区

关于前端:应用数据同步自动化指导文档

1. 概述

数据同步性能能够帮忙您实现数据源之间的数据同步,实用于各零碎数据整合、查问与报表分流、BI 软件、实时数据仓库等多种业务场景。本文将介绍通过明道云 API 实现数据同步成果的具体流程,帮忙您疾速把握明道云 API 的应用办法及数据同步治理要领。

正式开始学习之前,咱们先要理解以下信息:

* 同步计划概览
介绍数据同步性能应用的 API、计划概述,以及配置步骤。

* 非关系型数据类型映射关系解析
因为不同的数据库反对的数据类型不一样,数据类型无奈齐全对应。明道云利用自身是由零代码搭建生成的,应用 MongoDB 非关系型数据库来存储数据。因而, 在应用 API 获取后果数据并写入明道云利用里时,须要进行后果解析。

目前,在明道云里有三种实现利用数据主动同步的计划:

  1. 工作表事件推送(工作流应用 webhook 调用对方接口实时推送 举荐)
  2. API 数据抽取(动静获取工作表配置解析字段释义或界面设置字段别名)
  3. 数据库直连数据抽取(仅公有部署反对 详情点击查看)
  4. 性能个性接口配置
    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 筛选器阐明
退出移动版