使用轻易云平台进行ETL转换并写入金蝶云星空的技术详解

  • 轻易云集成顾问-冯潇
### 钉钉数据集成到金蝶云星空的技术案例分享 在企业日常业务处理中,如何高效而准确地实现跨系统的数据同步和对接,是一个普遍且关键的挑战。其中,钉钉作为企业数字化管理的重要平台,其报销数据需要及时、安全地集成到金蝶云星空中,以确保财务处理的自动化和无缝衔接。本次我们将分享一个具体的系统对接集成案例:钉钉报销【现货采购】->金蝶付款单【班西】,并通过轻易云数据集成平台实现这一过程。 首先,我们需要从钉钉获取相关报销数据。使用API接口`topapi/processinstance/get`,可以定时可靠地抓取所需的数据,并处理分页和限流问题。同时,通过自定义的数据转换逻辑,将获取到的原始数据转化为适合金蝶云星空接受的数据格式。这一步骤不仅确保了业务需求得到满足,也提高了整体操作流程的一致性。 然后,我们利用轻易云平台提供的可视化数据流设计工具,对整个数据集成过程进行直观配置。该工具支持高吞吐量的数据写入能力,使得大量从钉钉提取出来的数据能够快速批量写入至金蝶云星空。在此过程中,还可以借助实时监控与告警系统,保障各个环节运行状态透明、异常情况及时反馈。这一特性极大提升了整体解决方案的稳定性和效率。 最后,通过调用金蝶云星空API接口`batchSave`,完成最终付款单记录的创建。为了应对可能出现的问题,如网络故障或接口错误,我们特别设置了完善的错误重试机制,这样即使在面对意外情况时,也能保证尽可能不漏单、不遗漏任何关键信息。此外,为进一步优化此次项目中的资源配置与使用情况,还可依托于统一视图和控制台全面掌握两大系统间API资产管理功能,实现资源调度最优化。 本案例展示了一种通过专业配置手段,实现不同企业应用之间高效、精准又具扩展性的跨平台数据整合方法。在实际实施中,各项技术特性相辅相成,共同推动了本次任务顺利完成。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/D1.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校验,设置为true表示需要校验 在实际操作中,我们通过轻易云平台配置上述元数据,并发起POST请求来获取所需的数据。 #### 数据过滤与条件设置 为了确保只处理特定类型的报销数据,我们在元数据配置中添加了条件过滤: ```json "condition":[[{"field":"报销类别","logic":"eq","value":"现货采购"}]] ``` 该条件表示仅当报销类别为“现货采购”时,才会处理该条数据。这一步骤非常关键,可以有效减少不必要的数据处理,提高系统效率。 #### 异常处理与补偿机制 在实际操作中,不可避免地会遇到网络波动或接口响应异常等问题。为此,我们在元数据配置中加入了异常处理和补偿机制: ```json "omissionRemedy":{"crontab":"2 */2 * * *","takeOverRequest":[]} ``` 这里使用了定时任务(crontab)来定期检查和补偿遗漏的数据请求。每隔两个小时执行一次,以确保所有符合条件的数据都能被及时处理。 #### 数据清洗与转换 获取到原始数据后,需要进行清洗和转换,以便后续写入目标系统。在轻易云平台上,可以通过可视化界面定义清洗规则,例如去除空值、格式化日期等。同时,还可以利用平台提供的转换工具,将数据转换为目标系统所需的格式。 例如,将钉钉报销单中的金额字段转换为金蝶付款单所需的格式: ```json { "sourceField": "amount", "targetField": "paymentAmount", "transformation": "currencyFormat" } ``` 这种灵活的配置方式,使得我们能够高效地完成数据清洗与转换工作。 #### 数据写入目标系统 最后一步是将清洗和转换后的数据写入目标系统——金蝶付款单【班西】。通过轻易云平台提供的多种连接器,可以方便地实现不同系统间的数据传输。例如,通过REST API或数据库连接器,将处理后的数据写入金蝶系统。 ```json { "targetSystem": "Kingdee", "targetApi": "/payment/voucher/create", "method": "POST", "payload": { "paymentAmount": "{{paymentAmount}}", "vendorName": "{{vendorName}}" } } ``` 以上示例展示了如何将转换后的字段映射到目标系统API所需的参数中,从而实现最终的数据写入。 通过以上步骤,我们成功完成了从调用钉钉接口获取原始数据,到清洗、转换并写入金蝶系统的整个过程。这不仅提高了业务流程的自动化程度,也确保了数据的一致性和准确性。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/S21.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例 在数据集成生命周期的第二步,我们需要将从源平台(如钉钉报销系统)获取的数据进行ETL转换,最终写入目标平台(金蝶云星空)。本文将详细介绍如何通过轻易云数据集成平台,将钉钉报销系统的数据转换为金蝶云星空API接口所能接收的格式,并成功写入目标平台。 #### 配置元数据 首先,我们需要配置元数据以适配金蝶云星空的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"}, {"field":"FDATE","label":"业务日期","type":"string","describe":"业务日期","value":"{{extend.finish_time}}"}, {"field":"FSETTLEORGID","label":"结算组织","type":"string","describe":"100","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find Number from 723e2cb6-f80f-3823-8b4f-6e98b9713ba3 where Name={{费用归属项目}}"}, {"field":"FPAYORGID","label":"付款组织","type":"string","describe":"100","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find Number from 723e2cb6-f80f-3823-8b4f-6e98b9713ba3 where Name={{费用归属项目}}"}, {"field":"FCURRENCYID","label":"币别","type":"string","describe":"币别","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"}, {"field":"FCONTACTUNITTYPE","label":"往来单位类型","type":"string","describe":"往来单位类型","value":"BD_Supplier"}, {"field":"FCONTACTUNIT","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}}, {"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}}, {"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}}, {"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}}, {"field":"","label":"","type":"","describe":"","value":"","parser":{"name","","params":""}} ], "otherRequest":[ {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "", "value": ""}, {"field": "", "label": "", "", "", ""} ] } ``` #### 数据清洗与转换 在配置好元数据后,我们需要进行数据清洗与转换。以下是几个关键字段的处理逻辑: 1. **单据编号(FBillNo)**:从源平台获取业务ID并赋值给`FBillNo`。 ```json { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "", "value": "{{extend.business_id}}" } ``` 2. **单据类型(FBillTypeID)**:使用`ConvertObjectParser`解析器将固定值`FKDLX01_SYS`转换为目标系统识别的格式。 ```json { "field": "", "" } ``` 3. **业务日期(FDATE)**:直接映射源平台的完成时间。 ```json { "" } ``` 4. **结算组织(FSETTLEORGID)和付款组织(FPAYORGID)**:通过查找集合中的名称字段,将其转换为相应的编号。 ```json { "" } ``` 5. **币别(FCURRENCYID)**:使用固定值`PRE001`,并通过解析器进行转换。 ```json { } ``` 6. **往来单位类型(FCONTACTUNITTYPE)和往来单位(FCONTACTUNIT)**:分别设置为供应商类型和对应的客户信息。 ```json { } ``` 7. **付款单明细(FPAYBILLENTRY)**:这是一个数组字段,包含多个子字段,如结算方式、付款用途、应付金额等。每个子字段都需要根据源数据进行相应的映射和转换。 ```json { } ``` #### 写入目标平台 最后,通过HTTP POST请求将处理后的数据发送到金蝶云星空API接口,实现数据写入。 ```javascript const axios = require('axios'); const data = { FormId: 'AP_PAYBILL', Operation: 'BatchSave', IsAutoSubmitAndAudit: false, IsVerifyBaseDataField: false, Model: { }; axios.post('https://api.kingdee.com/kd/api/batchSave', data, { headers: { }) .then(response => { }) .catch(error => { }); ``` 以上代码展示了如何通过axios库将处理后的数据发送到金蝶云星空API接口。 #### 总结 通过轻易云数据集成平台,我们可以高效地实现从钉钉报销系统到金蝶云星空的数据ETL转换和写入。关键在于正确配置元数据,并根据需求对各个字段进行清洗和转换,确保最终的数据格式符合目标平台的要求。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/T20.png~tplv-syqr462i7n-qeasy.image)