钉钉数据集成到金蝶云星空:salary-新薪金单(非工资)V4.0方案分享
在企业信息系统的建设中,数据流动和处理的效率至关重要。如何实现钉钉与金蝶云星空之间的数据无缝对接,一直是各大企业面临的重要课题。本案例将聚焦于“salary-新薪金单(非工资)V4.0”方案,通过高效的数据集成技术,实现两大平台的数据互通。
首先,在这一实施过程中,我们利用了钉钉提供的数据获取API接口 v1.0/yida/processes/instances
来定时可靠地抓取所需数据。为确保数据完整性和及时性,该接口具备高吞吐量能力,可以快速处理大量请求,避免漏单现象发生。此外,通过轻易云平台强大的实时监控和日志记录功能,每个步骤都可被清晰追踪,有助于及时发现并解决潜在问题。
接着,面对从钉钉获取的大量数据,我们需要将其批量写入到金蝶云星空。这部分工作通过调用金蝶云星空的 batchSave
API 实现。同时,为应对不同系统间可能存在的数据格式差异,我们设计了灵活的自定义转换逻辑,使得每条数据都能准确映射到目标字段之中。
值得注意的是,在实际操作过程中,还涉及分页和限流等复杂情形。例如,当由于限制条件导致无法一次获取所有所需数据时,我们采用分页机制分多次抓取,并根据限流规则进行合理调度,以确保任务稳定运行。在这些环节中,各种异常状况也可以被智能化检测并触发重试机制,无需人工干预,大幅提升了系统对外部环境变化的适应能力。
通过以上技术手段,本案例成功构建了一套健全、高效且全面透明的数据集成体系。不仅满足了业务需求,还极大优化了资源配置,为后续拓展及升级奠定了坚实基础。
调用钉钉接口获取并加工数据的技术实现
在轻易云数据集成平台中,调用源系统接口是数据处理生命周期的第一步。本文将详细探讨如何通过调用钉钉接口v1.0/yida/processes/instances
来获取并加工数据,以实现薪金单(非工资)V4.0的集成方案。
接口配置与请求参数
首先,我们需要配置接口和请求参数。根据元数据配置,接口为v1.0/yida/processes/instances
,请求方法为POST。以下是请求参数的详细配置:
- pageNumber: 分页页码,类型为字符串,值为
{PAGINATION_START_PAGE}
。 - pageSize: 分页大小,类型为字符串,值为
{PAGINATION_PAGE_SIZE}
。 - appType: 应用ID,类型为字符串,值为
APP_WTSCMZ1WOOHGIM5N28BQ
。 - systemToken: 应用秘钥,类型为字符串,值为
IS866HB1DXJ8ODN3EXSVD750RBTK2X72R8MELL4
。 - userId: 用户的userid,类型为字符串,值为
16000443318138909
。 - language: 语言,取值包括中文(zh_CN)和英文(en_US),默认值为中文。
- formUuid: 表单ID,类型为字符串,值为
FORM-0A966I81H10AX9NTBHCRX9JYRM0X2DS1D2MGLL
。 - searchFieldJson: 条件字段,包括类型(selectField_lgn2qshb)和发起人(textField_lgn2qsh7)。
- originatorId: 根据流程发起人工号查询。
- createFromTimeGMT: 创建时间起始值,通过函数计算得到:
_function DATE_FORMAT(DATE_ADD(NOW(),INTERVAL - 25 DAY),'%Y-%m-%d 00:00:00')
。 - createToTimeGMT: 创建时间终止值,为当前时间:
{{CURRENT_TIME|datetime}}
。 - modifiedFromTimeGMT: 修改时间起始值。
- modifiedToTimeGMT: 修改时间终止值。
- taskId: 任务ID。
- instanceStatus: 实例状态,为已完成状态:
COMPLETED
。 - approvedResult: 流程审批结果,为同意:
agree
。
请求示例
基于上述配置,请求体可以构建如下:
{
"pageNumber": "{PAGINATION_START_PAGE}",
"pageSize": "{PAGINATION_PAGE_SIZE}",
"appType": "APP_WTSCMZ1WOOHGIM5N28BQ",
"systemToken": "IS866HB1DXJ8ODN3EXSVD750RBTK2X72R8MELL4",
"userId": "16000443318138909",
"language": "zh_CN",
"formUuid": "FORM-0A966I81H10AX9NTBHCRX9JYRM0X2DS1D2MGLL",
"searchFieldJson": {
"selectField_lgn2qshb": "",
"textField_lgn2qsh7": ""
},
"originatorId": "",
"createFromTimeGMT": "_function DATE_FORMAT(DATE_ADD(NOW(),INTERVAL - 25 DAY),'%Y-%m-%d 00:00:00')",
"createToTimeGMT": "{{CURRENT_TIME|datetime}}",
"modifiedFromTimeGMT": "",
"modifiedToTimeGMT": "",
"taskId": "",
"instanceStatus": "COMPLETED",
"approvedResult": "agree"
}
数据清洗与转换
在获取到原始数据后,需要对其进行清洗与转换,以便后续的数据处理和写入。以下是一些常见的数据清洗与转换操作:
-
字段映射与重命名: 将原始数据中的字段映射到目标系统所需的字段,并进行必要的重命名。例如,将钉钉返回的数据中的
processInstanceId
映射到目标系统中的id
字段。 -
数据格式转换: 对日期、金额等字段进行格式转换。例如,将日期格式从
yyyy-MM-dd HH:mm:ss
转换为目标系统所需的格式。 -
数据过滤与筛选: 根据业务需求,对数据进行过滤和筛选。例如,只保留审批结果为“同意”的记录。
-
合并与拆分字段: 根据业务逻辑,将多个字段合并成一个字段或将一个字段拆分成多个字段。例如,将地址信息中的省、市、区合并成一个完整地址。
实例代码
以下是一个简单的数据清洗与转换示例代码:
import json
from datetime import datetime, timedelta
def clean_and_transform(data):
cleaned_data = []
for record in data:
transformed_record = {
'id': record['processInstanceId'],
'title': record['title'],
'created_at': datetime.strptime(record['createFromTimeGMT'], '%Y-%m-%d %H:%M:%S').strftime('%Y/%m/%d'),
'status': record['instanceStatus'],
'approval_result': record['approvedResult']
}
if transformed_record['approval_result'] == 'agree':
cleaned_data.append(transformed_record)
return cleaned_data
# 示例调用
raw_data = [
{
'processInstanceId': '12345',
'title': '薪金单申请',
'createFromTimeGMT': '2023-09-01 12:00:00',
'instanceStatus': 'COMPLETED',
'approvedResult': 'agree'
},
# 更多记录...
]
cleaned_data = clean_and_transform(raw_data)
print(json.dumps(cleaned_data, indent=4, ensure_ascii=False))
通过上述步骤,我们可以高效地调用钉钉接口获取所需数据,并对其进行清洗和转换,为后续的数据处理打下坚实基础。这一过程不仅提升了数据处理的效率,还确保了数据的一致性和准确性。
数据集成与ETL转换:将源数据写入金蝶云星空API接口
在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何通过轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为金蝶云星空API接口所能够接收的格式,最终写入目标平台。
1. 配置API接口元数据
首先,我们需要配置金蝶云星空API接口的元数据。以下是一个典型的配置示例:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "batchArraySave",
"rows": 1,
"rowsKey": "array"
},
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","value":"{serialNumberField_lgovkejx}(FKD)"},
{"field":"FCURRENCYID","label":"币别","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"},
{"field":"FDATE","label":"业务日期","type":"string","value":"_function FROM_UNIXTIME( ( {dateField_lgn2qsju} \/ 1000 ) ,'%Y-%m-%d' )"},
{"field":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"FKDLX03_SYS"},
{"field":"FCONTACTUNITTYPE","label":"往来单位类型","type":"string","value":"BD_Empinfo"},
{"field":"FCONTACTUNIT","label":"往来单位","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"BDS001"},
{"field":"FRECTUNITTYPE","label":"收款单位类型","type":"string","value":"BD_Empinfo"},
{"field":"FRECTUNIT","label":"收款单位","type":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","parser":{"name":"","params":""},"value":""}
],
"otherRequest":[
{
"field" : "FormId",
"label" : "业务对象表单Id",
"type" : "string",
"describe" : "必须填写金蝶的表单ID如:PUR_PurchaseOrder",
"value" : ""
},
{
"field" : "",
"label" : "",
"type" : "",
""
}
]
}
2. 数据提取与清洗
在ETL过程中,首先需要从源系统中提取数据,并进行必要的清洗和预处理。例如,将时间戳转换为标准日期格式:
_function FROM_UNIXTIME( ( {dateField_lgn2qsju} / 1000 ), '%Y-%m-%d' )
3. 数据转换
接下来,我们需要将清洗后的数据按照目标系统的要求进行格式转换。这里使用了多个字段和解析器,例如:
ConvertObjectParser
:用于将某些字段值转换为目标系统所需的特定格式。FBillNo
:单据编号,使用序列号字段生成。FCURRENCYID
:币别,固定值PRE001
。FBillTypeID
:单据类型,固定值FKDLX03_SYS
。
4. 数据写入
最后,将转换后的数据通过API接口写入金蝶云星空系统。以下是一个完整的数据请求示例:
{
"FormId": "AP_PAYBILL",
"Operation": "BatchSave",
"IsAutoSubmitAndAudit": true,
"IsVerifyBaseDataField": false,
"Model":{
...
// 此处省略具体字段配置
...
}
}
通过上述步骤,我们实现了从源系统到目标系统的数据无缝对接。每个环节都经过严格的验证和处理,确保数据准确无误地传输到金蝶云星空平台。
注意事项
在实际操作中,需要特别注意以下几点:
- 字段映射:确保所有字段都正确映射到目标系统中的相应字段。
- 数据验证:在写入前进行必要的数据验证,以避免错误。
- 异常处理:设置适当的异常处理机制,确保在出现问题时能够及时发现并解决。
通过以上步骤和注意事项,可以有效地完成从源平台到金蝶云星空API接口的数据集成与ETL转换过程。