阿里宜搭数据集成到金蝶云星空的技术案例分享
在企业信息系统的应用中,数据的高效集成与管理是关键所在。本次案例讨论的是如何将阿里宜搭平台的数据无缝对接到金蝶云星空,以实现薪金福利申请单(salary-薪金福利申请单)的自动化处理。
为了确保数据从阿里宜搭高效且准确地写入至金蝶云星空,我们采用了以下几种重要技术和方法:
-
接口调用与分页处理: 使用
/yida_vpc/form/searchFormDatas.json
API获取阿里宜搭中的表单数据时,需要考虑接口的数据分页和限流问题。通过优化请求策略并合理设置分页参数,保证大规模数据的顺利抓取。 -
自定义数据转换逻辑: 在进行两套系统间的数据传输过程中,不可避免地需要处理格式差异。我们设计了一套自定义的数据映射规则,将来自阿里宜搭的不同行字段转化为符合金蝶云星空存储要求的数据格式。
-
实时监控与日志记录: 在整个集成过程中,通过集中化监控系统追踪每一个API调用和任务状态,这不仅提高了故障发现效率,还能及时响应并解决异常情况。例如,当批量写入操作失败时,可以利用错误重试机制重新提交未成功的数据包,以确保不遗漏任何一条记录。
-
异常处理及告警机制: 集成过程中可能会遇到各种各样的问题,如网络延迟、接口超时等,我们配置了完善的告警机制,当检测到异常事件时,立即生成告警通知。同时,对可能发生的大批量错误设定自动重试策略,从而提升整体稳定性。
-
快速大批量写入性能优化: 为满足业务需求,大量来自阿里宜搭平台的数据需要快速写入到金蝶云星空,这就要求我们必须尽力提高吞吐量。在这一部分,我们主要依赖于batchSave API,并通过多线程技术来分担负载,实现更高效的数据导入过程。
本篇开头简要介绍了几个关键步骤及其背后的技术考量,为即将详细讨论的具体实施方案奠定基础。在后续内容中,我将针对每个部分逐步展开详细解析,以帮助读者更好理解其中涉及的一系列复杂操作。
调用阿里宜搭接口获取并加工数据
在轻易云数据集成平台的生命周期中,调用源系统接口是关键的第一步。本文将深入探讨如何通过阿里宜搭接口/yida_vpc/form/searchFormDatas.json
获取并加工数据,以实现薪金福利申请单的集成。
接口配置与请求参数
首先,我们需要配置元数据以调用阿里宜搭的API接口。以下是具体的元数据配置:
{
"api": "/yida_vpc/form/searchFormDatas.json",
"method": "POST",
"number": "title",
"id": "formInstId",
"pagination": {
"pageSize": 100
},
"idCheck": true,
"request": [
{"field":"appType","label":"应用ID","type":"string","describe":"示例:APP_PBKT0MFBEBTDO8T7SLVP","value":"APP_KFJOIBQ7VRMTDLQSLKQG"},
{"field":"systemToken","label":"应用秘钥","type":"string","value":"JR766WA1S5PON0QZXMNBZZKZKPGT1VMYM5OMKO"},
{"field":"userId","label":"管理员用户钉钉ID","type":"string","describe":"钉钉的userId","value":"16000443318138909"},
{"field":"language","label":"语言","type":"string","value":"zh_CN"},
{"field":"formUuid","label":"表单ID","type":"string","value":"FORM-MS666CB19SXQN3FW2AD37CVTR8I83Q0HA3TPKA"},
{"field":"currentPage","label":"当前页","type":"string","value":"{PAGINATION_START_PAGE}"},
{"field":"pageSize","label":"每页记录数","type":"string","value":"{PAGINATION_PAGE_SIZE}"},
{"field":"originatorId","label":"数据提交人工号","type":"string","describe":"用户钉钉ID"},
{"field":"createFrom","label":"创建开始时间","type":"string"},
{"field":"createTo","label":"创建结束时间","type":"string"},
{"field":"modifiedFrom","label":"修改开始时间","type":"string", "value": "{{LAST_SYNC_TIME|datetime}}"},
{"field":"modifiedTo","label":"修改结束时间", "type": "string", "value": "{{CURRENT_TIME|datetime}}"},
{
"field": "searchFieldJson",
"label": "条件",
"type": "object",
"children": [
{
"field": "selectField_kmpzgwcy",
"label": "类型",
"type": "string",
"value":["工资发放(月度)", "工资发放(临时)", "奖金发放", "福利申请", "活动经费", "其它"]
}
]
}
]
}
请求参数解析
- 应用ID (
appType
): 标识具体应用实例,示例值为APP_KFJOIBQ7VRMTDLQSLKQG
。 - 应用秘钥 (
systemToken
): 用于验证请求合法性,示例值为JR766WA1S5PON0QZXMNBZZKZKPGT1VMYM5OMKO
。 - 管理员用户钉钉ID (
userId
): 管理员用户的唯一标识,示例值为16000443318138909
。 - 语言 (
language
): 请求返回的数据语言,设置为中文(zh_CN
)。 - 表单ID (
formUuid
): 标识具体表单实例,示例值为FORM-MS666CB19SXQN3FW2AD37CVTR8I83Q0HA3TPKA
。 - 分页参数 (
currentPage
,pageSize
): 分别表示当前页码和每页记录数,通过占位符动态替换实际值。 - 时间过滤参数 (
createFrom
,createTo
,modifiedFrom
,modifiedTo
): 用于筛选特定时间段内的数据,其中modifiedFrom
和modifiedTo
分别使用上次同步时间和当前时间进行动态替换。 - 搜索条件 (
searchFieldJson
): 包含一个子字段,用于筛选特定类型的数据,如工资发放、奖金发放等。
数据请求与清洗
在发送POST请求后,我们会收到一个包含多个表单实例的数据集。接下来,需要对这些数据进行清洗和转换,以便后续处理。
- 数据格式化:确保所有日期字段统一格式,例如将所有日期转换为ISO8601标准格式。
- 字段映射:根据目标系统需求,将源系统字段映射到目标系统字段。例如,将阿里宜搭中的表单实例ID映射到目标系统中的唯一标识符。
- 去重处理:根据配置中的
idCheck
参数,对获取的数据进行去重处理,确保不会重复导入相同的数据。
实践案例
假设我们需要获取2023年10月1日至2023年10月31日之间提交的所有薪金福利申请单,并将其导入到目标系统。我们可以设置如下参数:
{
...
{"field": "createFrom", "value": "2023-10-01T00:00:00Z"},
{"field": "createTo", "value": "2023-10-31T23:59:59Z"}
}
发送请求后,我们会收到符合条件的表单实例列表。接下来,我们将这些数据进行清洗、转换,并写入目标系统。
通过上述步骤,我们成功完成了从阿里宜搭获取并加工薪金福利申请单数据的全过程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。
使用轻易云数据集成平台将薪金福利申请单数据转换并写入金蝶云星空API接口
在数据集成的生命周期中,ETL(提取、转换、加载)过程是至关重要的一环。本文将详细探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为金蝶云星空API接口所能够接收的格式,最终写入目标平台。
配置元数据
在进行ETL转换之前,首先需要配置好元数据。以下是针对金蝶云星空API接口batchSave
方法的元数据配置:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"request": [
{"field": "FBillNo", "label": "单据编号", "type": "string"},
{"field": "FCURRENCYID", "label": "币别", "type": "string", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}},
{"field": "FDATE", "label": "业务日期", "type": "string"},
{"field": "FBillTypeID", "label": "单据类型", "type": "string", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}},
{"field": "FCONTACTUNITTYPE", "label": "往来单位类型", "type": "string", "parser": {"name": "ConvertObjectParser",
![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T19.png~tplv-syqr462i7n-qeasy.image)