轻易云ETL转换:将钉钉报销数据集成到金蝶云星空

  • 轻易云集成顾问-孙传友
### 钉钉数据集成到金蝶云星空:从报销请求到付款单的全流程自动化 在信息系统对接中,如何高效、准确地进行多平台的数据整合是一项重要任务。本篇文章将详细介绍一个具体的案例,即通过轻易云数据集成平台,实现钉钉报销请求(行政报销类)自动集成至金蝶云星空生成对应的付款单【迪德】。该方案不仅提高了数据处理效率,还保证了数据流的透明和可靠性。 首先,为确保集成过程中不漏单,我们需要定期抓取钉钉接口topapi/processinstance/get的数据,并实现批量写入到金蝶云星空。通过配置定时任务,可以做到精准且及时地抓取每一条新的报销记录,同时处理分页和限流问题,以避免遗漏或重复获取。 其次,在数据导入方面,由于要应对大量报销记录快速写入金蝶云星空,需要使用其提供的batchSave API接口。我们将重点讲解如何优化API调用,提升大规模数据传输性能以及有效解决可能出现的数据格式差异问题,包括字段映射和类型转换等技术细节。 另外一方面,我们还必须关注异常处理与错误重试机制。在实际操作中,不可避免会遇到网络波动或者远程服务故障导致的数据传输失败。本篇分享将在这个部分深入探讨,通过日志记录与实时监控功能,实现从源头追踪并诊断问题,并利用错误重试策略保障业务流程顺畅运转。 总之,该案例展示的是一个高度可靠且灵活的系统对接方案,从多个角度详述了关键技术点及其实现方法。这为其他企业在进行类似系统集成时提供了一套切实可行的方法论和参考模板,也是提高自身数字化运营水平的重要实践经验。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/D33.png~tplv-syqr462i7n-qeasy.image) ### 调用钉钉接口topapi/processinstance/get获取并加工数据 在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用钉钉接口`topapi/processinstance/get`,并对获取的数据进行加工处理。 #### 接口调用配置 首先,我们需要配置元数据以便正确调用钉钉的API接口。以下是元数据配置的详细内容: ```json { "api": "topapi/processinstance/get", "method": "POST", "number": "number", "id": "id", "idCheck": true, "condition": [ [ { "field": "报销类别", "logic": "eq", "value": "行政报销类" } ] ] } ``` 该配置中,`api`字段指定了我们要调用的钉钉API接口,`method`字段表明我们使用的是POST请求。`number`和`id`字段分别表示需要获取的报销单号和唯一标识符。`idCheck`设置为true表示我们需要对ID进行校验。最后,`condition`字段定义了我们只获取“报销类别”为“行政报销类”的数据。 #### 数据请求与清洗 在调用API接口后,我们会得到一个包含多个字段的JSON响应。为了确保数据的准确性和一致性,我们需要对原始数据进行清洗。这一步骤包括但不限于以下操作: 1. **字段映射**:将API返回的数据字段映射到目标系统所需的字段。例如,将钉钉中的“报销金额”映射到金蝶付款单中的相应字段。 2. **数据验证**:检查每个字段的数据类型和内容是否符合预期。例如,确保金额字段为数值类型且不为空。 3. **异常处理**:对于不符合条件的数据进行过滤或记录日志,以便后续处理。 #### 数据转换与写入 经过清洗后的数据需要转换为目标系统能够识别的格式,并写入到目标系统中。在我们的案例中,需要将清洗后的数据写入到金蝶付款单【迪德】中。这一步骤可以通过轻易云平台提供的数据转换工具来实现: 1. **格式转换**:将JSON格式的数据转换为金蝶系统所需的XML或其他格式。 2. **批量处理**:对于大批量的数据,可以使用批量处理功能提高效率。 3. **实时监控**:利用轻易云平台的实时监控功能,确保每一条数据都能成功写入,并及时发现和解决问题。 #### 实际案例分析 假设我们从钉钉接口获取到了以下原始数据: ```json { "process_instance_id": "1234567890", "title": "行政报销", "form_component_values": [ { "name": "报销金额", "value": "1000" }, { "name": "报销类别", "value": "行政报销类" } ] } ``` 根据元数据配置,我们首先检查“报销类别”是否为“行政报销类”,然后提取“报销金额”和其他必要信息。接下来,我们将这些信息映射到金蝶付款单所需的字段,并进行格式转换: ```xml <Payment> <PaymentID>1234567890</PaymentID> <Amount>1000</Amount> <Category>行政报销类</Category> </Payment> ``` 最后,通过轻易云平台将上述XML格式的数据写入到金蝶系统中。 #### 小结 通过以上步骤,我们成功实现了从钉钉获取并加工“行政报销类”数据,并将其无缝集成到金蝶付款单【迪德】中。这不仅提高了业务流程的自动化程度,还确保了数据的一致性和准确性。在实际应用中,根据具体需求调整元数据配置和处理逻辑,可以进一步优化集成效果。 ![如何开发钉钉API接口](https://pic.qeasy.cloud/S23.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现钉钉报销数据到金蝶云星空的ETL转换 在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将钉钉报销数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 数据请求与清洗 首先,我们从钉钉获取报销数据,并进行必要的清洗和预处理。这一步骤确保了数据的一致性和准确性,为后续的ETL转换打下基础。 #### 数据转换与写入 接下来,我们进入生命周期的第二步:数据转换与写入。我们需要将清洗后的数据按照金蝶云星空API接口的要求进行转换,并通过API接口将数据写入金蝶系统。 以下是元数据配置中的关键字段及其解析: 1. **FBillNo(单据编号)**: ```json {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{{extend.business_id}}"} ``` 这里我们使用`{{extend.business_id}}`作为单据编号,确保每个报销单有唯一标识。 2. **FBillTypeID(单据类型)**: ```json {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNUMBER"},"value":"FKDLX04_SYS"} ``` 单据类型固定为`FKDLX04_SYS`,通过`ConvertObjectParser`进行解析。 3. **FDATE(业务日期)**: ```json {"field":"FDATE","label":"业务日期","type":"string","describe":"业务日期","value":"{{extend.finish_time}}"} ``` 业务日期取自`{{extend.finish_time}}`,即报销完成时间。 4. **FSETTLEORGID(结算组织)**和**FPAYORGID(付款组织)**: ```json {"field":"FSETTLEORGID","label":"结算组织","type":"string","describe":"100","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find Number from 723e2cb6-f80f-3823-8b4f-6e98b9713ba3 where Name={{费用归属项目}}"} ``` 结算组织和付款组织都通过查找集合中的名称来获取对应的编号。 5. **FCURRENCYID(币别)**: ```json {"field":"FCURRENCYID","label":"币别","type":"string","describe":"币别","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"} ``` 币别固定为`PRE001`,通过解析器进行转换。 6. **FCONTACTUNITTYPE(往来单位类型)**和**FCONTACTUNIT(往来单位)**: ```json {"field":"FCONTACTUNITTYPE","label":"往来单位类型","type":"string","describe":"往来单位类型","value":"BD_Department"}, {"field":"FCONTACTUNIT","label":"往来单位","type":"string","describe":"","value":"{{费用归属部门_关联}}"} ``` 往来单位类型固定为部门,具体单位由`{{费用归属部门_关联}}`确定。 7. **FPAYBILLENTRY(付款单明细)**: - **结算方式**: ```json {"field": "FSETTLETYPEID", "label": "结算方式", "type": "string", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "value": "09"} ``` - **付款用途**: ```json {"field": "FPURPOSEID", "label": "付款用途", "type": "string", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "value": "SFKYT001"} ``` - **应付金额**: ```json {"field": "FPAYTOTALAMOUNTFOR", "label": "应付金额", "type": "string", "value": "{{报销金额(元)}}"} ``` - **费用项目**: ```json {"field": "FCOSTID", "label": "费用项目", "type": "string", "parser": {"name": "ConvertObjectParser", "params": ["FNumber"]}, "value": "_findCollection find FNumber from b02f1e34-b500-3075-8b14-08fec61d08a4 where FName={{行政报销类型}}"} ``` - **备注、对方银行账号、对方账户名称等其他字段配置略** 8. **其他请求参数配置** - 表单Id: ```json {"field": "FormId", "label" : "业务对象表单Id" , "type" : "string" , "value" : "AP_PAYBILL"} ``` - 操作: ```json {"field" : "Operation" , "label" : "执行的操作" , "type" : "string" , "value" : "BatchSave"} ``` - 提交并审核: ```json {"field" : "IsAutoSubmitAndAudit" , "type" : "bool" , "value" : false} ``` - 验证基础资料: ```json { "type" : "bool", . . . } ``` #### 实际应用 在实际应用中,我们需要根据上述配置,将从钉钉获取的数据逐一映射到目标字段,并使用轻易云提供的API接口将这些映射后的数据批量保存到金蝶云星空系统中。整个过程可以通过轻易云的数据流监控功能实时跟踪,确保每一步都准确无误。 这种全异步、多异构系统支持的数据集成方式,不仅提高了数据处理效率,还保证了各系统间的数据一致性和完整性。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/T29.png~tplv-syqr462i7n-qeasy.image)