轻易云平台实现ETL转换及数据写入金蝶云星空

  • 轻易云集成顾问-彭萍
### 钉钉数据集成到金蝶云星空案例分享——付款申请单生成付款单 在本篇技术案例中,我们将深入探讨如何通过轻易云数据集成平台,将钉钉的付款申请单下推生成金蝶云星空中的付款单。该过程实现了对接双方的数据高效无缝衔接,充分利用了各自API接口,确保数据处理的准确性和实时性。 系统对接的关键步骤之一是如何调用钉钉接口`topapi/processinstance/get`以获取付款申请单的数据。我们需要配置定时器来可靠地抓取这些接口数据,并处理分页和限流问题,以避免漏掉任何一张重要的票据。 同时,下一个主要环节是将获取到的大量数据批量快速地写入到金蝶云星空,通过其提供的Push API,实现结构化存储。这就涉及到了两个平台之间的数据格式差异处理及映射关系配置,使得每个字段都能正确对应与转换。此外,为应对可能出现的异常情况,我们设计了一套完善的错误重试机制及日志记录功能,使得整个过程透明、可监控且具备高度容错能力。 在实际操作过程中,我们还强调实时监控与日志记录,以便排查故障并进行持续优化。在以下内容中,我们将具体介绍从调度策略、接口调用细节,到异常处理等多个层面的最佳实践方案,帮助你更好地理解并掌握这一复杂但至关重要的数据集成任务。 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/D12.png~tplv-syqr462i7n-qeasy.image) ### 调用钉钉接口topapi/processinstance/get获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台调用钉钉接口`topapi/processinstance/get`,并对获取的数据进行初步加工,以实现后续的数据处理和写入。 #### 接口概述 钉钉提供的`topapi/processinstance/get`接口用于获取流程实例的详细信息。该接口采用POST请求方式,能够返回指定流程实例的所有相关数据。以下是元数据配置中的关键字段: - `api`: 接口路径,本文为`topapi/processinstance/get` - `method`: 请求方法,此处为`POST` - `number`: 流程实例编号 - `id`: 流程实例ID - `idCheck`: 是否进行ID校验,布尔值 #### 配置请求参数 在调用该接口之前,需要准备好请求参数。根据元数据配置,我们需要提供流程实例的编号和ID。以下是一个示例请求参数配置: ```json { "number": "example_number", "id": "example_id" } ``` #### 调用接口 使用轻易云平台的API调用功能,可以方便地发送HTTP POST请求。以下是一个示例代码片段,用于调用钉钉接口并获取响应数据: ```python import requests url = "https://oapi.dingtalk.com/topapi/processinstance/get" headers = { "Content-Type": "application/json" } payload = { "number": "example_number", "id": "example_id" } response = requests.post(url, json=payload, headers=headers) data = response.json() ``` 在这个示例中,我们使用Python的requests库发送POST请求,并将响应结果解析为JSON格式。 #### 数据校验与清洗 获取到原始数据后,需要对其进行校验和清洗,以确保数据质量和一致性。根据元数据配置中的`idCheck`字段,我们需要对ID进行校验: ```python if data.get("id") != payload["id"]: raise ValueError("ID mismatch") ``` 此外,还可以根据业务需求,对其他字段进行必要的清洗和转换。例如,将日期字符串转换为标准日期格式,去除无效字符等。 #### 数据转换与写入准备 完成数据清洗后,可以对其进行必要的转换,以便于后续写入目标系统。在本文案例中,我们需要将金蝶发往钉钉的付款申请单下推生成付款单,因此需要将相关字段映射到目标系统所需的格式: ```python processed_data = { "payment_request_number": data.get("number"), "payment_request_id": data.get("id"), # 添加其他必要字段 } ``` 通过上述步骤,我们已经完成了从调用源系统接口获取数据,到初步加工和准备写入的数据处理过程。这些操作确保了在集成生命周期的第一步中,能够高效、准确地获取并处理所需的数据,为后续的数据转换与写入奠定了坚实基础。 以上内容展示了如何利用轻易云平台调用钉钉接口,并对获取的数据进行初步加工。通过这些技术手段,可以有效提升业务透明度和效率,实现不同系统间的数据无缝对接。 ![打通钉钉数据接口](https://pic.qeasy.cloud/S12.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例 在数据集成生命周期中,ETL(Extract, Transform, Load)转换是关键步骤之一。本文将详细探讨如何通过轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为金蝶云星空API接口所能够接收的格式,最终写入目标平台。 #### 数据请求与清洗 在开始数据转换之前,首先需要从源系统中提取数据并进行清洗。这一步骤确保了输入的数据是准确且符合预期的。假设我们已经完成了这部分工作,接下来我们将重点放在数据转换与写入阶段。 #### 数据转换与写入 为了将付款申请单从金蝶系统下推生成付款单,我们需要使用金蝶云星空提供的API接口。以下是元数据配置示例: ```json { "api": "Push", "method": "POST", "idCheck": true, "request": [ { "field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "CN_PAYAPPLY" }, { "field": "Numbers", "label": "编码集合", "type": "string", "value": "{{单据编号}}" }, { "field": "Ids", "label": "id集合", "type": "string", "value": "{status}" }, { "field": "RuleId", "label": "单据转换规则内码", "type": "string", "describe": "\"flag1;flag2;...\"(非必录) 例如(允许负库存标识:STK_InvCheckResult)" }, { "field": "IsEnableDefaultRule", "label": "是否启用默认单据转换", "type": "string", "", "", value":"true" }, { label":"TargetFormId","field":"TargetFormId","type":"string","value":"AP_PAYBILL"}, {"label":"IsDraftWhenSaveFail","field":"IsDraftWhenSaveFail","type":"string","value":"true"} ] } ``` #### 接口调用解析 1. **FormId**: 必须填写金蝶的表单ID,例如:`CN_PAYAPPLY`,表示付款申请单。 2. **Numbers**: 编码集合,这里使用占位符`{{单据编号}}`,在实际调用时会替换为具体的单据编号。 3. **Ids**: id集合,用于标识具体记录,这里使用占位符`{status}`。 4. **RuleId**: 单据转换规则内码,这是一个可选字段,用于指定特定的转换规则。 5. **IsEnableDefaultRule**: 是否启用默认单据转换,布尔类型,默认为`true`。 6. **TargetFormId**: 目标表单ID,这里设置为`AP_PAYBILL`,表示生成付款单。 7. **IsDraftWhenSaveFail**: 当保存失败时是否保存为草稿,设置为`true`。 #### 实际操作步骤 1. **配置API请求参数**:根据上述元数据配置,在轻易云平台上配置相应的API请求参数。确保所有必填字段均已正确填写,并根据需要填写可选字段。 2. **数据映射**:将源系统中的字段映射到目标系统中的相应字段。例如,将源系统中的“单据编号”映射到目标系统中的“Numbers”字段。 3. **调用API接口**:通过轻易云平台发起HTTP POST请求,将处理后的数据发送到金蝶云星空API接口。确保请求头和请求体符合API文档要求。 4. **处理响应**:接收并处理API响应,根据返回结果判断操作是否成功。如果失败,根据配置决定是否保存为草稿或进行其他错误处理。 #### 示例代码 以下是一个简化的示例代码片段,用于展示如何通过HTTP POST请求调用金蝶云星空API接口: ```python import requests import json url = 'https://api.kingdee.com/Push' headers = {'Content-Type': 'application/json'} data = { 'FormId': 'CN_PAYAPPLY', 'Numbers': '123456', 'Ids': '7890', 'IsEnableDefaultRule': 'true', 'TargetFormId': 'AP_PAYBILL', 'IsDraftWhenSaveFail': 'true' } response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: print('Success:', response.json()) else: print('Error:', response.text) ``` 以上代码展示了如何构建HTTP POST请求,并将JSON格式的数据发送到指定URL。在实际应用中,需要根据具体需求调整请求参数和处理逻辑。 #### 总结 通过轻易云数据集成平台,可以高效地实现不同系统间的数据无缝对接。在本文中,我们详细探讨了如何将源平台的数据进行ETL转换,并通过金蝶云星空API接口写入目标平台。这一过程不仅提高了业务流程的自动化程度,还确保了数据的一致性和准确性。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)