金蝶云星空数据写入最佳实践:ETL转换与API调用

  • 轻易云集成顾问-姚缘

钉钉数据集成到金蝶云星空

在企业信息化管理过程中,实现高效的数据流转与处理是提升业务效率的重要环节。本次分享的案例是通过轻易云数据集成平台,将钉钉的数据无缝对接并写入到金蝶云星空。方案名称为“传给钉钉后,回传金蝶字段②”,该项目主要涉及高吞吐量的数据写入、实时监控和批量处理等核心技术要点。

首先,通过调用钉钉的API接口 topapi/processinstance/get 获取相关数据,这是确保不漏单的关键步骤。在此过程中,需要考虑如何定时可靠地抓取接口数据,处理分页和限流问题,以及实现自定义的数据转换逻辑,以适应不同系统间的数据结构差异。为了进一步保障数据质量,还需支持异常检测与告警机制,及时发现并解决潜在的问题。

接下来,将获取的数据快速写入到金蝶云星空中,这里使用的是其提供的API接口 batchSave。为了应对大量数据批量集成过程中的性能瓶颈,我们配置了高级别的吞吐量控制,并通过集中监控系统实时跟踪任务状态和性能表现。此外,对于可能发生的异常情况,需要设计一套完善的错误重试机制以确保数据完整性和稳定性。

以上就是本次案例技术实施方案的一些关键细节,下面将详细解析各个步骤及具体实现手段。 如何开发用友BIP接口

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

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

API接口配置与调用

首先,我们需要配置API接口的元数据。根据提供的元数据配置,我们可以看到以下关键信息:

  • API路径: topapi/processinstance/get
  • 请求方法: POST
  • 唯一标识字段: id
  • 请求参数:
    • process_code: 审批流的唯一码
    • start_time: 审批实例开始时间(Unix时间戳,单位毫秒)
    • end_time: 审批实例结束时间(Unix时间戳,单位毫秒)
    • size: 分页参数,每页大小,最多传20
    • cursor: 分页查询的游标

请求参数解析与设置

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

    {"label":"审批流的唯一码","field":"process_code","type":"string","value":"PROC-BB90A28C-0800-4F37-A972-E23EA258CA09"}

    该参数是固定值,用于指定具体的审批流程。

  2. 审批实例开始时间 (start_time):

    {"label":"审批实例开始时间。Unix时间戳,单位毫秒。","field":"start_time","type":"string","value":"_function ({LAST_SYNC_TIME}-(3600 * 24))* 1000"}

    此参数使用了一个函数来计算,从上次同步时间减去一天,并转换为毫秒数。这确保了我们获取的是最近一天的数据。

  3. 审批实例结束时间 (end_time):

    {"label":"审批实例结束时间,Unix时间戳,单位毫秒","field":"end_time","type":"string","value":"{CURRENT_TIME}000"}

    当前时间的Unix时间戳乘以1000,以毫秒为单位。

  4. 分页参数 (size):

    {"label":"分页参数,每页大小,最多传20。","field":"size","type":"string","value":"20"}

    每次请求最多返回20条记录。

  5. 分页查询游标 (cursor):

    {"label":"分页查询的游标,最开始传0,后续传返回参数中的next_cursor值。","field":"cursor","type":"string"}

    初始值为0,在后续请求中使用上一次响应中的next_cursor值。

数据请求与清洗

在完成上述配置后,通过轻易云平台发起API请求。以下是一个示例请求体:

{
    "process_code": "PROC-BB90A28C-0800-4F37-A972-E23EA258CA09",
    "start_time": "_function ({LAST_SYNC_TIME}-(3600 * 24))* 1000",
    "end_time": "{CURRENT_TIME}000",
    "size": "20",
    "cursor": "0"
}

响应结果将包含多个字段,其中包括我们关注的数据和分页信息。例如:

{
    "result": {
        "list": [
            {
                "process_instance_id": "example_id_1",
                "title": "Example Title",
                // 更多字段...
            },
            // 更多记录...
        ],
        "next_cursor": "12345"
    }
}

数据加工与存储

获取到原始数据后,需要对其进行清洗和转换,以便后续处理。在轻易云平台中,可以通过自定义脚本或内置功能实现数据清洗。例如,将日期格式统一转换、过滤无效记录等操作。

最后,将处理后的数据写入目标系统(如金蝶),确保数据的一致性和完整性。在这个过程中,可以利用轻易云平台提供的数据转换功能,将不同系统间的数据格式进行适配。

通过以上步骤,我们成功地从钉钉获取了审批流数据,并进行了初步加工,为后续的数据处理奠定了基础。 金蝶与MES系统接口开发配置

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

在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台实现这一过程。

1. 数据请求与清洗

首先,我们假设已经完成了数据请求与清洗阶段。此时,源平台的数据已经被提取并清洗完毕,准备进入下一步的数据转换与写入阶段。

2. 数据转换与写入

在这一阶段,我们需要将清洗后的数据转换为金蝶云星空API接口所能接收的格式,并通过API接口将数据写入目标平台。以下是具体的技术步骤和配置细节。

2.1 配置元数据

根据提供的元数据配置,我们需要设置以下参数:

{
  "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 f51027d3-8cfb-38e3-a878-a07730472b1c 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”:“,”}
     }
  ]
}
2.2 数据字段映射

在元数据配置中,我们定义了两个主要字段:

  • FID:单据编号,通过SQL查询从数据库中获取。
  • F_VAOJ_TDD:是否同步钉钉,固定值为"已同步"。

此外,还有一些其他请求参数,如业务对象表单Id (FormId)、执行操作 (Operation)、是否自动提交并审核 (IsAutoSubmitAndAudit) 等,这些参数确保了我们在调用API时能够正确地传递必要的信息。

2.3 API 调用

配置好元数据后,我们可以通过轻易云的数据集成平台发起API调用。以下是一个示例代码片段,用于展示如何通过HTTP POST方法调用金蝶云星空的batchSave API:

import requests
import json

url = 'https://api.kingdee.com/batchSave'
headers = {'Content-Type': 'application/json'}
data = {
    'FormId': 'CN_PAYAPPLY',
    'Operation': 'BatchSave',
    'IsAutoSubmitAndAudit': False,
    'IsVerifyBaseDataField': False,
    'NeedUpDateFields': ['F_VAOJ_TDD'],
    'Model': [
        {
            'FID': '_findCollection find FID from f51027d3-8cfb-38e3-a878-a07730472b1c where FBillNo={{单据编号}}',
            'F_VAOJ_TDD': '已同步'
        }
    ]
}

response = requests.post(url, headers=headers, data=json.dumps(data))

if response.status_code == 200:
    print('Data successfully written to Kingdee Cloud')
else:
    print('Failed to write data to Kingdee Cloud:', response.text)
2.4 实时监控与日志记录

为了确保数据成功写入目标平台,我们可以利用轻易云提供的实时监控功能,查看每次API调用的状态和返回结果。此外,还可以设置日志记录,将每次操作的详细信息记录下来,以便后续排查和分析。

小结

通过上述步骤,我们成功地将源平台的数据经过ETL转换后,通过金蝶云星空API接口写入到目标平台。在这个过程中,充分利用了轻易云的数据集成能力,实现了不同系统间的数据无缝对接。 金蝶云星空API接口配置

更多系统对接方案