轻易云平台实现ETL转换与钉钉API集成技术分享

  • 轻易云集成顾问-姚缘
### 金蝶付款申请单到钉钉供应商月结付款的系统对接集成案例分享 在企业业务流程自动化中,数据从一个系统快速、准确地迁移到另一个系统是至关重要的。本文将重点讨论如何通过轻易云数据集成平台,实现金蝶云星空中的付款申请单无缝集成到钉钉供应商月结付款流程。这一过程确保了高效的数据流动和实时监控,同时处理复杂的数据格式差异。 #### 数据抓取与API调用设置 我们首先需要从金蝶云星空中定时、可靠地抓取相关接口数据。在这个集成方案中,我们使用的是`executeBillQuery` API来获取支付申请单信息。为确保不漏单,我们配置了详细的分页和限流策略,以应对大批量数据查询。此外,通过全面日志记录和监控,可以随时掌握每次接口调用的状态,及时发现并解决异常。 #### 数据转换与映射处理 由于金蝶云星空与钉钉之间的数据结构存在显著差异,因此在进入下一步前需要进行精细化的数据转换。这里我们采用了一组自定义映射规则,使得来自金蝶云星空的数据能够完美适配于钉钉所需格式,从而避免潜在的兼容性问题。 #### 数据写入与执行事务管理 数据经过转换后,将会被批量写入到钉钉中,对应使用的是`topapi/processinstance/create` API。为了实现这一部分,在配置过程中考虑到了多个关键因素,包括错误重试机制以及事务保障,如遇失败则回滚操作以保证数据一致性。同时,通过分层次控制,也能进一步优化大量数据迅速且有效地写入至目标系统。 这种全生命周期管理的方法不仅使得整个流程透明、高效,更提高了对接过程中各项环节稳定运转。然而,这只是开始,错综复杂的技术细节将在后续章节逐步展开详解。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/D10.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在轻易云数据集成平台中,调用源系统接口是数据集成生命周期的第一步。本文将深入探讨如何通过调用金蝶云星空的`executeBillQuery`接口获取付款申请单数据,并进行初步加工。 #### 接口配置与请求 首先,我们需要配置调用金蝶云星空接口的元数据。以下是一个典型的元数据配置示例: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FBillNo", "pagination": { "pageSize": 500 }, "idCheck": true, "condition": [ [{"field":"FPAYORGID","logic":"eq","value":"10.01"}], [{"field":"FPAYORGID","logic":"eq","value":"10.04"}], [{"field":"FPAYORGID","logic":"eqv2","value":"11.08"}], [{"field":"FPAYORGID","logic":"eqv2","value":"11.11"}] ], "request": [ {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, {"field":"FDOCUMENTSTATUS","label":"单据状态","type":"string","value":"FDOCUMENTSTATUS"}, {"field":"FCREATORID","label":"创建人","type":"string","value":"FCREATORID"}, {"field":"FAPPROVERID","label":"审核人","type":"string","value":"FAPPROVERID"}, {"field":"FCREATEDATE","label":"创建日期","type":"string","value":"FCREATEDATE"}, {"field":"FSETTLEORGID","label":"结算组织","type":"string","value":"FSETTLEORGID.fname"}, {"field":"FAPPROVEDATE","label":"审核日期","type":"string","value":"FAPPROVEDATE"}, {"field":...} ], "otherRequest": [ {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"}, {"field":...} ] } ``` #### 数据请求与清洗 在实际操作中,首先需要构建请求体,根据元数据配置中的字段和条件,生成相应的JSON请求体。例如: ```json { "FormId": "CN_PAYAPPLY", "FieldKeys": [ ... ], ... } ``` 通过POST方法发送请求到`executeBillQuery`接口,并根据返回的数据进行初步清洗。清洗过程包括但不限于: - 去除无效字段 - 格式化日期字段 - 根据业务需求进行字段映射和转换 例如,对于返回的数据,我们可能需要将日期格式从`yyyy-MM-dd HH:mm:ss`转换为`yyyy-MM-dd`,或者将金额字段从字符串转换为浮点数。 #### 数据转换与写入 经过初步清洗后的数据,将进入下一阶段的数据转换与写入。在这个阶段,我们可以根据业务需求进一步处理数据,例如: - 聚合计算 - 数据验证 - 写入目标系统或数据库 在轻易云平台中,这些操作可以通过可视化界面进行配置和管理,确保每个环节都透明可控。 #### 实际案例分析 假设我们需要获取付款组织为"10.01"或"10.04"的付款申请单,并且这些单据必须是已审核状态。我们可以在元数据配置中的条件部分添加相应的逻辑: ```json "condition":[ [{"field":...}], [{"field":...}], [{"field":...}], [{"field":{"FPAYORGID",...}}] ] ``` 同时,在请求体中添加过滤条件: ```json { ... "FilterString": "(FPAYORGID = '10.01' OR FPAYORGID = '10.04') AND FDOCUMENTSTATUS = 'C'" } ``` 通过上述配置和请求,我们可以精准地获取所需的数据,并进行后续处理。 #### 总结 通过调用金蝶云星空的`executeBillQuery`接口,我们能够高效地获取并加工付款申请单数据。这一步骤是整个数据集成生命周期中的关键环节,为后续的数据转换与写入奠定了基础。在实际应用中,通过合理配置元数据和请求参数,可以极大提升数据处理效率和准确性。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/S7.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:ETL转换与钉钉API接口集成案例 在数据集成生命周期的第二步,我们需要将已经从源平台(金蝶付款申请单)提取并清洗的数据进行ETL转换,使其符合目标平台(钉钉API接口)的接收格式,并最终写入钉钉系统。本文将深入探讨如何通过元数据配置实现这一过程。 #### API接口配置与请求方法 我们需要使用的钉钉API接口为`topapi/processinstance/create`,请求方法为`POST`。该接口用于创建审批实例,需要提交一系列参数来定义审批流的具体内容和发起人信息。 #### 参数配置详解 1. **process_code**: 审批流的唯一码,直接从审批流程编辑页面的URL中获取。 ```json {"field":"process_code","label":"审批流的唯一码","type":"string","describe":"process_code在审批流程编辑页面的URL网址中获取。","value":"PROC-954C7A18-093B-44A3-AF47-975DB03A725D"} ``` 2. **originator_user_id**: 审批实例发起人的userid,通过查询源平台用户表获取。 ```json {"field":"originator_user_id","label":"发起人","type":"string","describe":"审批实例发起人的userid。","value":"_findCollection find user_id from 2a632d64-f636-305d-8846-494649c1a280 where name={F_VAOJ_FQR}"} ``` 3. **dept_id**: 发起人所在部门,如果发起人属于根部门,传`-1`。 ```json {"field":"dept_id","label":"发起人所在部门","type":"string","describe":"发起人所在的部门,如果发起人属于根部门,传-1。","value":"_findCollection find dept_order_list.0.dept_id from 2a632d64-f636-305d-8846-494649c1a280 where name={F_VAOJ_FQR}"} ``` 4. **form_component_values**: 审批流表单参数,是一个复杂对象,包含多个字段。 - **单据编号**: 从源数据中提取`FBillNo`字段。 ```json {"field":"单据编号","type":"string","value":"{FBillNo}","parent":"form_component_values"} ``` - **费用归属项目**和**货款所属项目**: 均从`FSETTLEORGID`字段提取。 ```json {"field":"费用归属项目","type":"string","value":"{FSETTLEORGID}","parent":"form_component_values"} {"field":"货款所属项目","type":"string","value":"{FSETTLEORGID}","parent":"form_component_values"} ``` - **供应商名称**: 从`FCONTACTUNIT`字段提取。 ```json {"field":"供应商名称","type":"string","value":"{FCONTACTUNIT}","parent":"form_component_values"} ``` - **付款时间**: 使用日期格式化函数处理`FCREATEDATE`字段。 ```json {"field":"付款时间","type":"string","value":"{{FCREATEDATE|date}}","parent":"form_component_values"} ``` - **货款属性**: 根据条件判断,将`F_VAOJ_HKSX`字段转换为对应文本。 ```json {"field":"货款属性","type":"string","value":"_function case '{F_VAOJ_HKSX}' when 'CP' then '成品' else '辅料' end","parent":"form_component_values"} ``` - **备注**: 在备注前添加固定文本“备注为:”并拼接上原始备注内容。 ```json {"field":"备注","type": "string", "value": "备注为:{F_VAOJ_Remarks}", "parent": "form_component_values"} ``` - **付款金额(元)**: 从`FAPPLYAMOUNTFOR_H`字段提取。 ```json {"field": "付款金额(元)", "type": "string", "value": "{FAPPLYAMOUNTFOR_H}", "parent": "form_component_values"} ``` - **收款人(公司名称)**和**收款人帐号**: 分别从`FEACHCCOUNTNAME`和`FEACHBANKACCOUNT`字段提取。 ```json {"field": "收款人(公司名称)", "type": "string", "value": "{FEACHCCOUNTNAME}", "parent": "form_component_values"} {"field": "收款人帐号", "type": "string", "value": "{FEACHBANKACCOUNT}", "parent": "form_component_values"} ``` #### 数据转换与写入 在上述配置完成后,我们通过轻易云数据集成平台将源平台的数据按照配置进行ETL转换,生成符合钉钉API接口要求的数据格式。随后,通过HTTP POST请求将这些数据写入到钉钉系统中,创建相应的审批实例。 这种全异步、支持多种异构系统集成的平台特性,使得我们能够高效地完成不同系统间的数据对接,并确保每个环节都透明可视,实现业务流程的自动化和高效化。 通过以上技术案例,我们展示了如何利用轻易云数据集成平台进行复杂的数据转换和系统集成操作,为企业提供了一种高效、透明的数据处理解决方案。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/T3.png~tplv-syqr462i7n-qeasy.image)