使用轻易云实现ETL转换并写入金蝶云星空

  • 轻易云集成顾问-吕修远
### 钉钉报销【月结贷款】->金蝶付款单【晨丰】系统对接集成案例分享 在企业日常业务处理中,数据的高效集成和实时同步是确保信息流畅通、资源合理利用的重要环节。本文聚焦于如何借助先进的数据集成平台,将钉钉中的报销流程数据无缝对接到金蝶云星空支付系统,以实现业务处理的自动化和智能化。 #### 数据获取与接口调用 此次集成项目首先需要从钉钉API `topapi/processinstance/get` 获取相关报销流程实例的数据。这一步骤至关重要,因为它决定了后续所有操作的数据质量和准确性。通过定时抓取和可靠调度机制,我们能够确保数据不漏单,并能批量处理大量历史数据。 #### 数据转换与格式适配 由于钉钉与金蝶云星空之间存在不同的数据结构和格式差异,我们需要在中间步骤进行一系列自定义的数据转换逻辑。对于每个报销记录,需要将其转化为金蝶付款单的相应字段映射,并处理分页获取过程中可能遇到的限流问题。这一步骤通过可视化的数据流设计工具,使得整个过程更加直观易管理,同时也便于后续维护和优化。 #### 数据写入与异常处理 成功完成数据转换后,就需要借助金蝶云星空提供的`batchSave` API 将这些字段正确写入目标系统。在这期间,结合集中监控和告警系统,我们可以实时跟踪各项任务状态及性能表现。一旦检测到异常,如网络故障或接口响应超时等问题,即刻启动错误重试机制,并记录详细日志以供分析。同时,为进一步保障数据完整性,还加入了分布式事务管理组件来协调各服务间的一致性操作。 #### 高吞吐量支持下的大规模数据写入 考虑到大规模企业级应用场景下大量数据需快速写入,此方案中特别运用了高吞吐量支撑技术,从而显著提升整体效率并缩短操作时间,通过科学的方法设置批处理大小以及并发请求数,实现最佳性能表现。此外,还启用了先进的数据质量监控功能,确保任何潜在的问题都能被及时发现并加以解决,大幅提高最终结果准确度。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/D1.png~tplv-syqr462i7n-qeasy.image) ### 调用钉钉接口topapi/processinstance/get获取并加工数据 在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用钉钉接口`topapi/processinstance/get`,并对获取的数据进行加工处理。 #### 接口调用配置 首先,我们需要配置元数据以便正确调用钉钉接口。以下是我们使用的元数据配置: ```json { "api": "topapi/processinstance/get", "method": "POST", "number": "number", "id": "id", "idCheck": true, "condition": [ [ { "field": "报销类别", "logic": "eq", "value": "月结货款" } ] ] } ``` 该配置指定了我们要调用的API路径为`topapi/processinstance/get`,请求方法为POST,并且设定了一个条件,即报销类别必须等于“月结货款”。 #### 数据请求与清洗 在生命周期的第一步中,我们需要从钉钉系统中获取原始数据。通过上述配置,我们可以向钉钉发送一个POST请求来获取符合条件的数据实例。 ```python import requests url = 'https://oapi.dingtalk.com/topapi/processinstance/get' headers = {'Content-Type': 'application/json'} payload = { 'process_instance_id': 'your_process_instance_id' } response = requests.post(url, headers=headers, json=payload) data = response.json() ``` 上述代码展示了如何通过Python脚本发送POST请求并获取返回的数据。需要注意的是,这里假设你已经获得了必要的认证信息和`process_instance_id`。 #### 数据转换与写入 获取到原始数据后,我们需要对其进行清洗和转换,以便后续写入目标系统。在这个过程中,可以利用轻易云平台提供的可视化工具对数据进行处理。例如: 1. **字段映射**:将钉钉返回的数据字段映射到金蝶付款单所需的字段。 2. **数据过滤**:根据业务需求过滤掉不必要的数据。 3. **格式转换**:将日期、金额等字段转换为目标系统所需的格式。 以下是一个简单的示例,展示如何进行字段映射和格式转换: ```python def transform_data(raw_data): transformed_data = { '付款单号': raw_data['number'], '申请人': raw_data['originator_userid'], '金额': float(raw_data['form_component_values'][0]['value']), '日期': raw_data['create_time'] } return transformed_data cleaned_data = transform_data(data) ``` 在这个示例中,我们将原始数据中的`number`、`originator_userid`、金额和创建时间提取出来,并转换为目标系统所需的格式。 #### 实时监控与异常处理 在整个数据集成过程中,实时监控和异常处理也是不可忽视的重要环节。轻易云平台提供了强大的监控功能,可以实时跟踪每个步骤的数据流动和处理状态。如果出现异常情况,例如API调用失败或数据格式不正确,平台会及时发出警报,并记录详细的错误日志以便排查问题。 通过以上步骤,我们实现了从钉钉系统获取报销【月结贷款】相关数据,并将其清洗、转换后写入金蝶付款单系统。这一过程不仅提高了业务效率,还确保了数据的一致性和准确性。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/S12.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL转换,并转为目标平台——金蝶云星空API接口所能够接收的格式,最终写入目标平台。以下是具体的技术实现细节。 #### 1. 配置元数据 首先,我们需要配置元数据,以便将源数据正确映射到金蝶云星空API所需的字段格式。以下是一个详细的元数据配置示例: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "method": "batchArraySave", "rows": 1, "rowsKey": "array" }, "request": [ { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{{extend.business_id}}" }, { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": { "name": "ConvertObjectParser", "params": "FNUMBER" }, "value": "FKDLX01_SYS" }, { ... } ], ... } ``` #### 2. 数据请求与清洗 在进行ETL转换之前,首先需要从源系统请求数据并进行清洗。假设我们从钉钉报销系统获取月结贷款的数据,以下是一个简化的数据请求示例: ```json { // 请求钉钉报销系统的数据结构 } ``` 对获取的数据进行清洗和初步转换,使其符合目标系统的要求。例如,将日期格式统一转换为金蝶云星空所需的格式。 #### 3. 数据转换 接下来,我们将清洗后的数据按照元数据配置进行转换。这里主要涉及字段映射和数据格式转换,例如: - **单据编号(FBillNo)**:直接映射自`{{extend.business_id}}`。 - **单据类型(FBillTypeID)**:使用`ConvertObjectParser`解析器,将固定值`FKDLX01_SYS`转换为目标系统可识别的编码。 - **业务日期(FDATE)**:直接映射自`{{extend.finish_time}}`。 对于复杂字段,如付款单明细(FPAYBILLENTRY),需要进一步嵌套处理: ```json { ... { "field":"FPAYBILLENTRY", ... children:[ { ... { field: 'FSETTLETYPEID', label: '结算方式', type: 'string', parser: { name: 'ConvertObjectParser', params: 'FNumber' }, value: '_findCollection find Number from ... where Name={{付款方式}}', parent: 'FPAYBILLENTRY' }, ... } ] } } ``` #### 4. 写入目标平台 完成数据转换后,将其通过API接口写入金蝶云星空。以下是一个简化的HTTP请求示例: ```http POST /k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave.common.kdsvc HTTP/1.1 Host: api.kingdee.com Content-Type: application/json Authorization: Bearer <token> { ... } ``` 在实际操作中,确保每个字段都已正确映射,并且所有必填项都已填充完整。此外,处理响应结果,确保写入操作成功,并记录日志以便后续追踪和调试。 #### 总结 通过上述步骤,我们实现了从钉钉报销系统到金蝶云星空API接口的数据ETL转换和写入。在整个过程中,充分利用了轻易云提供的元数据配置功能,使得复杂的数据集成任务变得更加高效和透明。这种方法不仅提高了业务流程的自动化程度,还确保了数据的一致性和准确性。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/T16.png~tplv-syqr462i7n-qeasy.image)