使用轻易云进行数据ETL转换及写入金蝶云星空的技术探讨

  • 轻易云集成顾问-潘裕

钉钉数据集成到金蝶云星空:案例分享与实现方法

在企业信息系统的对接过程中,如何高效且准确地将业务数据从钉钉平台集成到金蝶云星空,是许多企业关注的重点。本篇文章介绍了一个实际运行方案“传给钉钉后,回传金蝶字段②”的技术细节,通过轻易云数据集成平台,实现了这一复杂任务。

在这个案例中,我们主要通过调用两个核心API接口来完成整个流程:使用topapi/processinstance/get从钉钉获取流程实例数据,并采用batchSave接口将处理后的数据批量写入到金蝶云星空。以下是具体操作步骤和技术要点。

首先,为确保不会遗漏任何重要业务信息,我们需要定时可靠地抓取钉钉提供的数据。利用轻易云的数据调度功能,可以设置定期任务来调用topapi/processinstance/get接口,从而实时监控和记录每一次的数据抓取过程。不仅如此,该方案还内置了错误重试机制,即使出现网络波动或其他异常情况,也能保证数据采集的完整性。

其次,在处理大量数据快速写入金蝶云星空时,需要特别注意API接口的限流问题。针对大批量的数据提交,需分批次进行,以避免触发限流策略导致请求失败。在这里,我们采用分页拉取和并行处理相结合的方法,每次只获取一定数量的数据,通过先进先出的队列管理机制,将其依序导入到金蝶云星空中,大幅提升了整体效率。

另外,由于两者之间的数据格式差异较大,我们自定义了一套映射规则,对相关字段进行转换。例如,从钉丁获取的信息包括审批状态、审批人等,而这些信息可能以不同格式存储在金蝶云。因此,在执行 batchSave 操作之前,需要对这些字段进行预先转换。这一环节不仅保障了数据的一致性,还便于日后的维护升级。

最后,为应对不同种类异常情况,本案例设计了一整套完善的异常捕获与恢复机制。一旦发现某个任务执行失败或者返回错误码,可以自动进入重试阶段,同时会生成详细日志供开发人员分析。这一部分由轻易云透明化可视界面全程监控,不但有助于快速定位问题,还能及时做出响应调整。 如何开发钉钉API接口

使用轻易云数据集成平台调用钉钉接口topapi/processinstance/get获取并加工数据

在数据集成的生命周期中,调用源系统接口获取原始数据是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用钉钉接口topapi/processinstance/get,并对获取的数据进行初步加工。

接口调用配置

首先,我们需要配置调用钉钉接口的元数据。以下是具体的配置细节:

{
  "api": "topapi/processinstance/get",
  "method": "POST",
  "number": "id",
  "id": "id",
  "idCheck": true,
  "request": [
    {
      "label": "审批流的唯一码",
      "field": "process_code",
      "type": "string",
      "value": "PROC-C1D46DC7-ACB2-4B63-8C48-F644942F63E5"
    },
    {
      "label": "审批实例开始时间。Unix时间戳,单位毫秒。",
      "field": "start_time",
      "type": "string",
      "value": "_function ({LAST_SYNC_TIME}-(3600 * 24))* 1000"
    },
    {
      "label": "审批实例结束时间,Unix时间戳,单位毫秒",
      "field": "end_time",
      "type": "string",
      "value": "{CURRENT_TIME}000"
    },
    {
      "label": "分页参数,每页大小,最多传20。",
      "field": "size",
      "type": "string",
      "value": "20"
    },
    {
      "label": "分页查询的游标,最开始传0,后续传返回参数中的next_cursor值。",
      "field": "cursor",
      "type": "string"
    }
  ]
}

参数解析与设置

  1. 审批流的唯一码 (process_code)

    • 固定值为PROC-C1D46DC7-ACB2-4B63-8C48-F644942F63E5
    • 用于标识特定的审批流程。
  2. 审批实例开始时间 (start_time)

    • 使用函数计算:_function ({LAST_SYNC_TIME}-(3600 * 24))* 1000
    • LAST_SYNC_TIME表示上次同步的时间,通过减去一天(3600秒 * 24小时)并转换为毫秒。
  3. 审批实例结束时间 (end_time)

    • 当前时间转换为Unix时间戳,并乘以1000转换为毫秒:{CURRENT_TIME}000
  4. 分页参数 (size)

    • 每页大小固定为20条记录。
  5. 分页查询游标 (cursor)

    • 初始值为0,在后续请求中使用返回参数中的next_cursor值。

数据请求与清洗

在完成上述配置后,我们可以通过轻易云平台发起POST请求来获取钉钉的审批实例数据。以下是一个示例请求:

{
  "_url":"https://oapi.dingtalk.com/topapi/processinstance/get",
  "_method":"POST",
  "_headers":{
    // 包含必要的认证信息
  },
  "_body":{
    process_code: 'PROC-C1D46DC7-ACB2-4B63-8C48-F644942F63E5',
    start_time: (LAST_SYNC_TIME-(3600 * 24))*1000,
    end_time: CURRENT_TIME*1000,
    size: '20',
    cursor: '0'
  }
}

在接收到响应后,需要对数据进行初步清洗和处理。例如,将Unix时间戳转换为可读日期格式、过滤掉不需要的字段等。

数据转换与写入

经过清洗后的数据将进入下一阶段的数据转换与写入过程。在这一阶段,可以根据业务需求将数据写入到目标系统,如金蝶等ERP系统。通过轻易云平台提供的多种异构系统支持,可以实现无缝的数据对接和高效的数据流转。

实时监控与优化

在整个过程中,通过轻易云平台提供的实时监控功能,可以随时查看数据流动和处理状态。这不仅提高了业务透明度,还能及时发现和解决潜在问题,从而优化数据集成流程。

通过上述步骤,我们成功地使用轻易云数据集成平台调用了钉钉接口,并对获取的数据进行了初步加工。这一过程展示了如何高效地进行跨系统的数据集成,为后续的数据处理奠定了坚实基础。 打通钉钉数据接口

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

在数据集成过程中,数据的ETL(提取、转换、加载)是关键步骤之一。本文将深入探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为金蝶云星空API接口所能够接收的格式,最终写入目标平台。

数据请求与清洗

在数据请求与清洗阶段,我们已经从源系统中提取了原始数据,并对其进行了初步清洗和处理。接下来,我们将重点关注如何将这些数据转换为金蝶云星空API接口所需的格式,并通过API写入目标平台。

元数据配置解析

我们使用以下元数据配置来指导ETL过程:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "batchArraySave",
    "rows": 1,
    "rowsKey": "array"
  },
  "request": [
    {
      "field": "FID",
      "label": "单据编号",
      "type": "string",
      "describe": "单据编号",
      "value": "_findCollection find FID from 85a16772-5481-3a9b-ad07-eb7f0ddd2587 where FBillNo={{单据编号}}"
    },
    {
      "field": "F_VAOJ_TDD",
      "label": "是否同步钉钉",
      "type": "string",
      "describe": "单据类型",
      "value": "已同步"
    }
  ],
  "otherRequest": [
    {
      "field": "FormId",
      "label": "业务对象表单Id",
      "type": "string",
      "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder",
      "value": "CN_PAYAPPLY"
    },
    {
      "field": "Operation",
      "label": "执行的操作",
      "type": "string",
      "value": ":BatchSave"
    },
    {
      "field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"false"},
    {
        field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"false"},
    {"label":"NeedUpDateFields","field":"NeedUpDateFields","type":"string","value":"F_VAOJ_TDD","parser":{"name":"StringToArray","params":","}}
  ]
}

转换与写入

  1. 字段映射与转换

    • FID:通过 _findCollection 方法从源系统中查找对应的 FID
    • F_VAOJ_TDD:设置为固定值“已同步”,表示该单据已经同步到钉钉。
  2. 其他请求参数

    • FormId:指定业务对象表单ID,这里为 CN_PAYAPPLY
    • Operation:执行批量保存操作。
    • IsAutoSubmitAndAuditIsVerifyBaseDataField:分别设置为 false,表示不自动提交和审核,也不验证基础资料有效性。
    • NeedUpDateFields:指定需要更新的字段,这里为 F_VAOJ_TDD

API调用示例

通过配置好的元数据,我们可以构建出具体的API调用请求:

{
  "_findCollection find FID from 85a16772-5481-3a9b-ad07-eb7f0ddd2587 where FBillNo={{单据编号}}"
}

假设我们从源系统获取到的数据如下:

{
  "_findCollection find FID from 85a16772-5481-3a9b-ad07-eb7f0ddd2587 where FBillNo=12345"
}

然后我们将这些数据转换为金蝶云星空API所需格式:

{
  "_findCollection find FID from 85a16772-5481-3a9b-ad07-eb7f0ddd2587 where FBillNo=12345"
}

最终,通过POST方法将这些数据发送到金蝶云星空API接口,实现数据写入:

{
  "_findCollection find FID from 85a16772-5481-3a9b-ad07-eb7f0ddd2587 where FBillNo=12345"
}

实践应用中的注意事项

在实际应用中,需要特别注意以下几点:

  1. 字段映射准确性:确保所有字段都能正确映射到目标系统中的相应字段。
  2. 数据格式一致性:确保转换后的数据格式符合目标系统API接口要求。
  3. 错误处理机制:在调用API时,要有完善的错误处理机制,以便及时发现和解决问题。

通过以上步骤,我们成功实现了从源系统到金蝶云星空的ETL转换和数据写入。这不仅提高了数据处理效率,还确保了业务流程的一致性和准确性。 金蝶与外部系统打通接口

更多系统对接方案