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

  • 轻易云集成顾问-吕修远

钉钉报销【月结贷款】->金蝶付款单【晨丰】系统对接集成案例分享

在企业日常业务处理中,数据的高效集成和实时同步是确保信息流畅通、资源合理利用的重要环节。本文聚焦于如何借助先进的数据集成平台,将钉钉中的报销流程数据无缝对接到金蝶云星空支付系统,以实现业务处理的自动化和智能化。

数据获取与接口调用

此次集成项目首先需要从钉钉API topapi/processinstance/get 获取相关报销流程实例的数据。这一步骤至关重要,因为它决定了后续所有操作的数据质量和准确性。通过定时抓取和可靠调度机制,我们能够确保数据不漏单,并能批量处理大量历史数据。

数据转换与格式适配

由于钉钉与金蝶云星空之间存在不同的数据结构和格式差异,我们需要在中间步骤进行一系列自定义的数据转换逻辑。对于每个报销记录,需要将其转化为金蝶付款单的相应字段映射,并处理分页获取过程中可能遇到的限流问题。这一步骤通过可视化的数据流设计工具,使得整个过程更加直观易管理,同时也便于后续维护和优化。

数据写入与异常处理

成功完成数据转换后,就需要借助金蝶云星空提供的batchSave API 将这些字段正确写入目标系统。在这期间,结合集中监控和告警系统,我们可以实时跟踪各项任务状态及性能表现。一旦检测到异常,如网络故障或接口响应超时等问题,即刻启动错误重试机制,并记录详细日志以供分析。同时,为进一步保障数据完整性,还加入了分布式事务管理组件来协调各服务间的一致性操作。

高吞吐量支持下的大规模数据写入

考虑到大规模企业级应用场景下大量数据需快速写入,此方案中特别运用了高吞吐量支撑技术,从而显著提升整体效率并缩短操作时间,通过科学的方法设置批处理大小以及并发请求数,实现最佳性能表现。此外,还启用了先进的数据质量监控功能,确保任何潜在的问题都能被及时发现并加以解决,大幅提高最终结果准确度。

数据集成平台可视化配置API接口

调用钉钉接口topapi/processinstance/get获取并加工数据

在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用钉钉接口topapi/processinstance/get,并对获取的数据进行加工处理。

接口调用配置

首先,我们需要配置元数据以便正确调用钉钉接口。以下是我们使用的元数据配置:

{
  "api": "topapi/processinstance/get",
  "method": "POST",
  "number": "number",
  "id": "id",
  "idCheck": true,
  "condition": [
    [
      {
        "field": "报销类别",
        "logic": "eq",
        "value": "月结货款"
      }
    ]
  ]
}

该配置指定了我们要调用的API路径为topapi/processinstance/get,请求方法为POST,并且设定了一个条件,即报销类别必须等于“月结货款”。

数据请求与清洗

在生命周期的第一步中,我们需要从钉钉系统中获取原始数据。通过上述配置,我们可以向钉钉发送一个POST请求来获取符合条件的数据实例。

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. 格式转换:将日期、金额等字段转换为目标系统所需的格式。

以下是一个简单的示例,展示如何进行字段映射和格式转换:

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)

在这个示例中,我们将原始数据中的numberoriginator_userid、金额和创建时间提取出来,并转换为目标系统所需的格式。

实时监控与异常处理

在整个数据集成过程中,实时监控和异常处理也是不可忽视的重要环节。轻易云平台提供了强大的监控功能,可以实时跟踪每个步骤的数据流动和处理状态。如果出现异常情况,例如API调用失败或数据格式不正确,平台会及时发出警报,并记录详细的错误日志以便排查问题。

通过以上步骤,我们实现了从钉钉系统获取报销【月结贷款】相关数据,并将其清洗、转换后写入金蝶付款单系统。这一过程不仅提高了业务效率,还确保了数据的一致性和准确性。 用友BIP接口开发配置

使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口

在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL转换,并转为目标平台——金蝶云星空API接口所能够接收的格式,最终写入目标平台。以下是具体的技术实现细节。

1. 配置元数据

首先,我们需要配置元数据,以便将源数据正确映射到金蝶云星空API所需的字段格式。以下是一个详细的元数据配置示例:

{
  "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转换之前,首先需要从源系统请求数据并进行清洗。假设我们从钉钉报销系统获取月结贷款的数据,以下是一个简化的数据请求示例:

{
  // 请求钉钉报销系统的数据结构
}

对获取的数据进行清洗和初步转换,使其符合目标系统的要求。例如,将日期格式统一转换为金蝶云星空所需的格式。

3. 数据转换

接下来,我们将清洗后的数据按照元数据配置进行转换。这里主要涉及字段映射和数据格式转换,例如:

  • 单据编号(FBillNo):直接映射自{{extend.business_id}}
  • 单据类型(FBillTypeID):使用ConvertObjectParser解析器,将固定值FKDLX01_SYS转换为目标系统可识别的编码。
  • 业务日期(FDATE):直接映射自{{extend.finish_time}}

对于复杂字段,如付款单明细(FPAYBILLENTRY),需要进一步嵌套处理:

{
  ...
  {
    "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请求示例:

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转换和写入。在整个过程中,充分利用了轻易云提供的元数据配置功能,使得复杂的数据集成任务变得更加高效和透明。这种方法不仅提高了业务流程的自动化程度,还确保了数据的一致性和准确性。 用友与外部系统接口集成开发

更多系统对接方案