钉钉数据集成到金蝶云星空:修改下推的付款单③
在企业信息系统对接中,如何高效、可靠地实现不同平台间的数据流动,是成功实施数据集成项目的重要课题。本次案例分享聚焦于“修改下推的付款单③”的具体技术方案,通过使用轻易云数据集成平台,将钉钉的审批流程实例数据集成到金蝶云星空中,并实现稳定、高效的数据同步。
数据获取与处理 - 钉钉接口调用
首先,我们需要从钉钉系统获取审批流程实例的数据。通过调用topapi/processinstance/get
API,可以精确取得所需的数据信息。该过程面临分页和限流问题,这要求我们设计一个稳健的抓取策略,采用定时任务机制可靠地从钉钉接口批量提取数据,避免漏单现象。
数据转换与映射 - 适应金蝶云星空结构
由于钉钉输出的数据格式与金蝶云星空所需格式不一致,在进行写入操作前,需要自定义一套转换逻辑。在此过程中,可视化的数据流设计工具显得尤为重要,它使得复杂的数据转化过程变得更加直观且便于管理。同时,为了确保输入到金蝶云系统中的每条记录均准确无误,我们还要开启实时监控功能,对整个处理过程进行追踪和日志记录。
批量写入 - 金蝶云星空API交互
最终,经过清洗、校验和转换后的数据将通过batchSave
API批量写入到金蝶云星空里。在这个步骤中,高吞吐量的数据写入能力确保大量数据信息能快速进入目标系统,提高整体效率。此外,当遇到网络波动或意外错误时,还需具备完善的异常处理机制,包括错误重试及明确告警,保证业务连续性和平稳运行。
调用钉钉接口topapi/processinstance/get获取并加工数据
在数据集成的生命周期中,调用源系统接口是关键的第一步。本文将详细探讨如何通过轻易云数据集成平台调用钉钉接口topapi/processinstance/get
来获取并加工数据。
接口概述
钉钉接口topapi/processinstance/get
用于获取指定业务流程实例的详细信息。该接口采用POST方法请求,主要参数包括业务ID(business_id),这是我们需要获取的单据编号。
元数据配置解析
根据提供的元数据配置:
{
"api": "topapi/processinstance/get",
"method": "POST",
"number": "business_id",
"id": "单据编号",
"idCheck": true
}
我们可以得出以下关键信息:
- API路径:
topapi/processinstance/get
- 请求方法:POST
- 业务ID字段:business_id
- 单据编号字段:单据编号
- ID校验:启用
数据请求与清洗
在实际操作中,首先需要构建请求体,并确保业务ID(business_id)的准确性和唯一性。以下是一个示例请求体:
{
"process_instance_id": "your_business_id"
}
轻易云平台会根据元数据配置自动生成并发送该请求。返回的数据通常包含多个字段,我们需要对其进行清洗和筛选,以提取有用的信息。例如:
{
"process_instance": {
"title": "付款申请",
"create_time": "2023-10-01T12:00:00Z",
"finish_time": null,
...
}
}
在这个过程中,我们可能只需要特定字段,如title
、create_time
等。因此,需要编写清洗规则来过滤和转换这些字段。
数据转换与写入
清洗后的数据需要进一步转换,以符合目标系统的要求。例如,将时间格式从UTC转换为本地时间,或者将字段名称映射到目标系统的字段名称。
假设目标系统要求的数据格式如下:
{
"document_title": "付款申请",
"created_at": "2023-10-01 20:00:00"
}
我们可以使用轻易云平台提供的数据转换功能,将原始数据进行相应的映射和格式化处理:
def transform_data(data):
return {
"document_title": data["process_instance"]["title"],
"created_at": convert_utc_to_local(data["process_instance"]["create_time"])
}
def convert_utc_to_local(utc_time):
# 假设时区为东八区
local_time = datetime.strptime(utc_time, "%Y-%m-%dT%H:%M:%SZ") + timedelta(hours=8)
return local_time.strftime("%Y-%m-%d %H:%M:%S")
通过上述代码,可以将原始数据转换为目标系统所需的格式。
实践案例
假设我们需要集成一个付款单审批流程。首先,通过调用钉钉接口获取审批实例详情,然后对返回的数据进行清洗和转换,最后写入目标系统。
-
调用接口:
response = requests.post( url="https://oapi.dingtalk.com/topapi/processinstance/get", headers={"Content-Type": "application/json"}, data=json.dumps({"process_instance_id": business_id}) ) data = response.json()
-
清洗数据:
cleaned_data = { "title": data["process_instance"]["title"], "create_time": data["process_instance"]["create_time"] }
-
转换数据:
transformed_data = transform_data(cleaned_data)
-
写入目标系统:
target_system.write(transformed_data)
通过上述步骤,可以实现从钉钉获取审批实例详情,并将其加工后写入目标系统的完整流程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。
利用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是关键步骤之一。本文将详细探讨如何利用轻易云数据集成平台将源平台的数据进行ETL转换,并通过金蝶云星空API接口将其写入目标平台。
数据请求与清洗
首先,我们需要从源系统中提取所需的数据。假设我们已经完成了数据请求与清洗阶段,接下来我们将重点放在数据转换与写入阶段。
数据转换
在数据转换过程中,我们需要根据目标平台的要求对数据进行格式化和处理。以下是元数据配置示例,它定义了如何将源数据字段映射到金蝶云星空API所需的字段:
{
"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 b91e58dd-b358-385e-a6e9-58ae2b8c37ff where FBillNo={Number}"
},
{
"field": "F_VAOJ_HKSX",
"label": "货款属性",
"type": "string",
"describe": "单据类型",
"value": "_function case '{{货款属性}}' when '成品' then 'CP' else 'FL' end"
},
{
"label": "备注",
"field": "FREMARK",
"type": "string",
"value": "{title}-{{收款人(公司名称)}}-{{备注}}"
},
{
"label": "单据编号",
"field": "FBillNo",
"type": "string",
"value": "{business_id}"
}
],
...
}
数据写入
在完成数据转换后,我们需要将处理后的数据通过金蝶云星空API接口写入目标平台。以下是如何配置和调用API接口的详细步骤:
-
配置API接口:
api
:batchSave
,表示批量保存操作。method
:POST
,HTTP请求方法。idCheck
:true
,表示检查ID是否存在。operation
: 定义具体操作方法和参数,如batchArraySave
。
-
映射字段:
FID
: 单据编号,通过查询获取。F_VAOJ_HKSX
: 货款属性,通过条件判断赋值。FREMARK
: 备注信息,组合多个字段生成。FBillNo
: 单据编号,直接从业务ID获取。
-
其他请求参数:
FormId
: 金蝶业务对象表单ID,例如AP_PAYBILL
。Operation
: 执行的操作类型,例如BatchSave
。IsAutoSubmitAndAudit
: 是否自动提交并审核,布尔值。IsVerifyBaseDataField
: 是否验证基础资料有效性,布尔值。
-
调用API: 使用配置好的元数据,通过轻易云平台的可视化界面或编程方式调用金蝶云星空的API接口,实现数据的批量保存。
{
...
// 调用API时发送的JSON请求体
{
"_modelName":"AP_PAYBILL",
"_data":{
"_array":[
{
"_key":"batchArraySave",
"_value":[
{
"_key":"FID",
"_value":"123456"
},
{
"_key":"F_VAOJ_HKSX",
"_value":"CP"
},
...
]
}
]
}
}
}
通过上述步骤,我们可以高效地将源平台的数据经过ETL转换后写入到金蝶云星空系统中,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,还确保了数据的一致性和准确性。