1.概述数据同步功能可以帮助您实现数据源之间的数据同步,适用于各种系统的数据集成、查询报表分发、BI软件、实时数仓等多种业务场景。本文将介绍通过明道云API实现数据同步效果的具体过程,帮助您快速掌握明道云API的使用方法和数据同步管理的要领。在正式开始学习之前,我们需要了解以下信息:*同步方案概述介绍数据同步功能使用的API、方案概述、配置步骤。*非关系数据类型映射关系分析因为不同的数据库支持不同的数据类型,数据类型不能完全匹配。明道云应用本身是零代码构建生成,使用MongoDB非关系型数据库存储数据。因此,在使用API??获取结果数据写入明道云应用时,需要进行结果分析。目前明道云中实现应用数据自动同步的方案有3种:worksheet事件推送(workflow使用webhook调用对方接口实时推送推荐)API数据提取(动态获取worksheet配置分析字段定义或接口设置字段别名)数据库直连数据提取(仅私有部署支持详情,点击查看)功能特性接口配置API数据同步配置自动化解决方案详见以下步骤:接口基本名词定义基于企业授权接口必填Appkey,andSignparametertransfer,work表的AppkeySign可能不一致。因此,我们遵循以下准则分别获取正确的接口和签名。如何获取企业接口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&projectId=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)获取应用授权信息简要说明:获取应用授权信息请求URL:{Host}/v1/open/根据循环APPID获取的应用列表app/getAppAuthorize请求方法:GET参数:请求示例${Host}/v1/open/app/getAppAuthorize?timestamp=1618837301125&projectId=449abe0c-e014-4836-8b60-d868c217599c&appKey=ak&sign=x&appId=id返回数据说明授权实体//成功{"data":[{"projecttId":"string","appId":"string","appKey":"string","sign":"string","type":1},],"error_code":1,"success":true}//failure{"error_msg":"errordescription","error_code":10101,//状态码不为1表示失败,"success":false}3)获取应用的简要描述information:获取应用组、工作表和视图信息请求URL:{Host}/v1/open/app/get请求方法:GET参数://成功返回{"data":{"projectId":"networkid","appId":"应用程序id","name":"应用程序名称","iconUrl":"图标URL","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":"summary","views":[{"viewId":"viewID","name":"视图名称"}],"controls":[{//下面只列出公共字段属性信息,其他返回值可以忽略"controlId":"control","controlName":"controlname","type":控件类型,"options":[{"key":"1","value":"Option1","index":1,"isDeleted":false,"color":"#2196F3","score":0.0}],//只有optionsThisfieldreturns"alias":"alias",}]},"success":true,"error_code":1}5)获取工作表数据的简要说明:根据别名或中文名称分页获取工作表记录上面的字段进行本地数据库字段比较,组装数据请求URL:{Host}/v2/open/worksheet/getFilterRows请求方法:POST参数://成功返回{"data":{"rows":[{"rowid":"recordID","ctime":"创建时间","caid":{"accountId":"创建者id","fullname":"创建者","avatar":"创建者头像地址","状态":0},"ownerid":{"accountId":"所有者ID","fullname":"Owner","avatar":"所有者头像地址","status":0},"utime":"最后修改时间","Controlid":"Value","Controlid":"Option1",//Wait....,"allowdelete":true,"Associationtable":"[\"3c04eb09-5e52-4dfd-8068-a2cc5a91d7c8\"]"//关联表返回是显示关联记录的id}],"total":记录总数,},"success":true,"error_code":1}最后根据返回的total计算页数,调用接口循环获取数据写入数据库中,定时设置下一个任务的触发时间,实现数据自动同步。3.FilterDescription为了满足数据查询需求,明道云在查询数据中增加了filter对象的设计发布。支持数据查询、关联数据条件查询等场景。//下面是一个标准的filter数据结构[{"controlId":"control1","dataType":6,"spliceType":1,"filterType":13,"value":"2"}]1)Fielddescription2)FilterTypeEnum3)DateRangeEnum4)SpecialAccountID5)Example//1.时间控制:过滤器类型只能是(timeistimenottimeinrangetimeisnotinrange早于晚于空且不为空)。//1.1时间在2022-02-2800:00:00到2022-03-0323:59:59范围内:[{"controlId":"timecontrol","dataType":16,"spliceType":1,"filterType":31,"dateRange":18,"dateRangeType":1,"maxValue":"2022-03-0323:59:59","minValue":"2022-02-2800:00:00","values":[]}]//1.2时间为指定日期:2022-03-0114:30:04[{"controlId":"TimeControl","dataType":16,“spliceType”:1,“filterType”:17,“dateRange”:18,“dateRangeType”:1,“value”:“2022-03-0114:30:04”,“values”:[]}]//1.3时间晚于本月[{"controlId":"timecontrol","dataType":16,"spliceType":1,"filterType":33,"dateRange":7,"dateRangeType":1,“价值观”:[]}]//2。string类型控件:过滤类型只能是(包括但不包括开头和结尾,是否为空)//2.1text包含A字段[{"controlId":"textcontrol","dataType":2,"spliceType":1,"filterType":1,"values":["A"]}]//2.2text为A字段[{"controlId":"TextControl","dataType":2,"spliceType":1,"filterType":2,"values":["A"]}]//3。数值量公式的过滤类型只能是(=≠≠><≥≤范围内,不在范围内,为空或不为空)//3.11-101[{"controlId":"数值量控件","dataType":6,"spliceType":1,"filterType":11,"maxValue":101,"minValue":1}]//3.2大于1的数值量公式[{"controlId":"Numericalamountcontrol","dataType":6,"spliceType":1,"filterType":13,"dateRange":0,"dateRangeType":1,"value":"1"}]//4.单关联表控件配置查询:filtertypeonly(关联控件是关联控件不为空或为空)//4.1单关联表控件配置【是】Query[{"controlId":"单关联表控件","dataType":29,"spliceType":1,"filterType":24,"values":["关联表记录的id"]}]//5.多个关联表控件只能配置查询过滤类型(包含或不包含为空不为空)//5.1多关联表控件配置【是】查询[{"controlId":"多关联表控件","dataType":29,"spliceType":1,"filterType":24,"values":["关联表记录的id"]}]//6.成员字段过滤条件只能是(不管是否为空)[{"controlId":"member","dataType":26,"spliceType":1,"filterType":2,"dateRange":0,"dateRangeType":1,"values":["userid"]}]//7.ownercreator过滤条件只能for(是否为空,普通用户externaluser)//7.1owner为指定用户[{"controlId":"ownerid","dataType":26,"spliceType":1,"filterType":2,"dateRange":0,"dateRangeType":1,"values":["userid"]}]//7.2owner为普通用户[{"controlId":"ownerid","dataType":26,"spliceType":1,"filterType":41,"dateRange":0,"dateRangeType":1}]//8。附件过滤条件只能是(是否为空)//8.1附件有{"controlId":"AccessoryControl","dataType":14,"spliceType":1,"filterType":8,"value":1}//8.2AttachmentsNone{"controlId":"AttachmentControl","dataType":14,"spliceType":1,"filterType":7,"value":1}4.参考文档明道云企业开发授权接口说明明道云工作APIWorksheetAPIFilter说明
