钉钉数据集成到金蝶云星空
在企业信息化管理过程中,实现高效的数据流转与处理是提升业务效率的重要环节。本次分享的案例是通过轻易云数据集成平台,将钉钉的数据无缝对接并写入到金蝶云星空。方案名称为“传给钉钉后,回传金蝶字段②”,该项目主要涉及高吞吐量的数据写入、实时监控和批量处理等核心技术要点。
首先,通过调用钉钉的API接口 topapi/processinstance/get
获取相关数据,这是确保不漏单的关键步骤。在此过程中,需要考虑如何定时可靠地抓取接口数据,处理分页和限流问题,以及实现自定义的数据转换逻辑,以适应不同系统间的数据结构差异。为了进一步保障数据质量,还需支持异常检测与告警机制,及时发现并解决潜在的问题。
接下来,将获取的数据快速写入到金蝶云星空中,这里使用的是其提供的API接口 batchSave
。为了应对大量数据批量集成过程中的性能瓶颈,我们配置了高级别的吞吐量控制,并通过集中监控系统实时跟踪任务状态和性能表现。此外,对于可能发生的异常情况,需要设计一套完善的错误重试机制以确保数据完整性和稳定性。
以上就是本次案例技术实施方案的一些关键细节,下面将详细解析各个步骤及具体实现手段。
调用钉钉接口topapi/processinstance/get获取并加工数据
在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用钉钉接口topapi/processinstance/get
,获取审批流数据并进行初步加工。
API接口配置与调用
首先,我们需要配置API接口的元数据。根据提供的元数据配置,我们可以看到以下关键信息:
- API路径:
topapi/processinstance/get
- 请求方法:
POST
- 唯一标识字段:
id
- 请求参数:
process_code
: 审批流的唯一码start_time
: 审批实例开始时间(Unix时间戳,单位毫秒)end_time
: 审批实例结束时间(Unix时间戳,单位毫秒)size
: 分页参数,每页大小,最多传20cursor
: 分页查询的游标
请求参数解析与设置
-
审批流的唯一码 (
process_code
):{"label":"审批流的唯一码","field":"process_code","type":"string","value":"PROC-BB90A28C-0800-4F37-A972-E23EA258CA09"}
该参数是固定值,用于指定具体的审批流程。
-
审批实例开始时间 (
start_time
):{"label":"审批实例开始时间。Unix时间戳,单位毫秒。","field":"start_time","type":"string","value":"_function ({LAST_SYNC_TIME}-(3600 * 24))* 1000"}
此参数使用了一个函数来计算,从上次同步时间减去一天,并转换为毫秒数。这确保了我们获取的是最近一天的数据。
-
审批实例结束时间 (
end_time
):{"label":"审批实例结束时间,Unix时间戳,单位毫秒","field":"end_time","type":"string","value":"{CURRENT_TIME}000"}
当前时间的Unix时间戳乘以1000,以毫秒为单位。
-
分页参数 (
size
):{"label":"分页参数,每页大小,最多传20。","field":"size","type":"string","value":"20"}
每次请求最多返回20条记录。
-
分页查询游标 (
cursor
):{"label":"分页查询的游标,最开始传0,后续传返回参数中的next_cursor值。","field":"cursor","type":"string"}
初始值为0,在后续请求中使用上一次响应中的
next_cursor
值。
数据请求与清洗
在完成上述配置后,通过轻易云平台发起API请求。以下是一个示例请求体:
{
"process_code": "PROC-BB90A28C-0800-4F37-A972-E23EA258CA09",
"start_time": "_function ({LAST_SYNC_TIME}-(3600 * 24))* 1000",
"end_time": "{CURRENT_TIME}000",
"size": "20",
"cursor": "0"
}
响应结果将包含多个字段,其中包括我们关注的数据和分页信息。例如:
{
"result": {
"list": [
{
"process_instance_id": "example_id_1",
"title": "Example Title",
// 更多字段...
},
// 更多记录...
],
"next_cursor": "12345"
}
}
数据加工与存储
获取到原始数据后,需要对其进行清洗和转换,以便后续处理。在轻易云平台中,可以通过自定义脚本或内置功能实现数据清洗。例如,将日期格式统一转换、过滤无效记录等操作。
最后,将处理后的数据写入目标系统(如金蝶),确保数据的一致性和完整性。在这个过程中,可以利用轻易云平台提供的数据转换功能,将不同系统间的数据格式进行适配。
通过以上步骤,我们成功地从钉钉获取了审批流数据,并进行了初步加工,为后续的数据处理奠定了基础。
利用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例
在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台实现这一过程。
1. 数据请求与清洗
首先,我们假设已经完成了数据请求与清洗阶段。此时,源平台的数据已经被提取并清洗完毕,准备进入下一步的数据转换与写入阶段。
2. 数据转换与写入
在这一阶段,我们需要将清洗后的数据转换为金蝶云星空API接口所能接收的格式,并通过API接口将数据写入目标平台。以下是具体的技术步骤和配置细节。
2.1 配置元数据
根据提供的元数据配置,我们需要设置以下参数:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "batchArraySave",
"rows": 1,
"rowsKey": "array"
},
"request": [
{
"field": "FID",
"label": "单据编号",
"type": "string",
"describe": "单据编号",
"value": "_findCollection find FID from f51027d3-8cfb-38e3-a878-a07730472b1c where FBillNo={{单据编号}}"
},
{
"field": "F_VAOJ_TDD",
"label": "是否同步钉钉",
"type": "string",
"describe": "单据类型",
"value": "已同步"
}
],
"otherRequest": [
{
"field": "FormId",
"label": "业务对象表单Id",
"type": "string",
"describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder",
"value": "CN_PAYAPPLY"
},
{
"field": "Operation",
"label": "执行的操作",
"type": "string",
"value": "BatchSave"
},
{
"field": “IsAutoSubmitAndAudit”,
“label”: “提交并审核”,
“type”: “bool”,
“value”: “false”
},
{
“field”: “IsVerifyBaseDataField”,
“label”: “验证基础资料”,
“type”: “bool”,
“describe”: “是否验证所有的基础资料有效性,布尔类,默认false(非必录)”,
“value”: “false”
},
{
“label”:“NeedUpDateFields”,
“field”:“NeedUpDateFields”,
“type”:“string”,
“value”:“F_VAOJ_TDD”,
“parser”:{“name”:“StringToArray”,“params”:“,”}
}
]
}
2.2 数据字段映射
在元数据配置中,我们定义了两个主要字段:
FID
:单据编号,通过SQL查询从数据库中获取。F_VAOJ_TDD
:是否同步钉钉,固定值为"已同步"。
此外,还有一些其他请求参数,如业务对象表单Id (FormId
)、执行操作 (Operation
)、是否自动提交并审核 (IsAutoSubmitAndAudit
) 等,这些参数确保了我们在调用API时能够正确地传递必要的信息。
2.3 API 调用
配置好元数据后,我们可以通过轻易云的数据集成平台发起API调用。以下是一个示例代码片段,用于展示如何通过HTTP POST方法调用金蝶云星空的batchSave
API:
import requests
import json
url = 'https://api.kingdee.com/batchSave'
headers = {'Content-Type': 'application/json'}
data = {
'FormId': 'CN_PAYAPPLY',
'Operation': 'BatchSave',
'IsAutoSubmitAndAudit': False,
'IsVerifyBaseDataField': False,
'NeedUpDateFields': ['F_VAOJ_TDD'],
'Model': [
{
'FID': '_findCollection find FID from f51027d3-8cfb-38e3-a878-a07730472b1c where FBillNo={{单据编号}}',
'F_VAOJ_TDD': '已同步'
}
]
}
response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
print('Data successfully written to Kingdee Cloud')
else:
print('Failed to write data to Kingdee Cloud:', response.text)
2.4 实时监控与日志记录
为了确保数据成功写入目标平台,我们可以利用轻易云提供的实时监控功能,查看每次API调用的状态和返回结果。此外,还可以设置日志记录,将每次操作的详细信息记录下来,以便后续排查和分析。
小结
通过上述步骤,我们成功地将源平台的数据经过ETL转换后,通过金蝶云星空API接口写入到目标平台。在这个过程中,充分利用了轻易云的数据集成能力,实现了不同系统间的数据无缝对接。