利用轻易云平台进行数据ETL并写入金蝶云星空的指南

  • 轻易云集成顾问-林峰

钉钉数据集成到金蝶云星空:样机借用申请到其他出库单案例分享

在企业运营中,系统对接和数据集成一直是IT部门的核心任务之一。我们将详细介绍一个具体的系统对接案例——从钉钉的样机借用申请流程,到金蝶云星空中的其他出库单处理。本篇文章重点阐述如何高效、准确地实现数据的无缝集成。

数据获取与可靠性保证

为了确保每一条样机借用申请记录都被捕获并传输至金蝶云星空,我们使用了钉钉提供的数据接口 topapi/processinstance/get。这个API能够稳定地抓取所有相关数据,并支持定时执行,以保证及时同步。通过轻易云的数据集成平台,我们设置了一个定时调度器,每小时调用该接口一次,从而避免漏单问题。此外,为了解决大批量数据写入带来的性能瓶颈,采用了分批次写入策略,大幅提升效率和稳定性。

接口调用与分页处理

由于钉钉API存在分页限制,我们需要特别注意处理多页返回结果。在实现过程中,通过循环调用topapi/processinstance/get接口并解析JSON响应来逐页获取完整的数据。这不仅保障了数据完整性,还有效应对可能发生的限流问题。例如,在每次请求后引入短暂延迟,以避免触发限流机制。

数据格式转换与映射

当从钉钉获取数据后,面临的一大挑战是如何将其转化为金蝶云星空所能识别的数据结构。这涉及字段名称、类型以及值域等方面的不一致。因此,我们设计了一套自定义映射规则,对每个字段进行精细化匹配。同时利用轻易云提供的数据转换工具,将原始JSON格式转为满足金蝶API要求的XML或其他合适形式,使得batchSave操作顺利完成。

这一系列措施,不仅成功解决了不同系统间的数据交互问题,还显著提升了业务运作效率和透明度。在实际操作中,如遇任何异常情况,都会立即记录并触发重试机制,确保最终的一致性和可靠性。 金蝶与SCM系统接口开发配置

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

在轻易云数据集成平台的生命周期中,调用源系统接口是关键的第一步。本文将深入探讨如何通过调用钉钉接口topapi/processinstance/get来获取数据,并进行初步加工,为后续的数据处理和写入打下坚实基础。

接口调用配置

首先,我们需要配置元数据以便正确调用钉钉的API接口。以下是我们在轻易云平台上使用的元数据配置:

{
  "api": "topapi/processinstance/get",
  "effect": "QUERY",
  "method": "POST",
  "number": "number",
  "id": "id",
  "name": "number",
  "idCheck": true,
  "autoFillResponse": true
}

这些配置项具有特定的含义:

  • api: 指定要调用的API接口,这里是topapi/processinstance/get
  • effect: 表示该操作是一个查询操作。
  • method: 使用POST方法进行请求。
  • numberid: 定义了请求参数中的标识字段。
  • name: 在返回的数据中,将使用number字段作为名称。
  • idCheck: 启用ID检查,确保请求参数中的ID有效。
  • autoFillResponse: 自动填充响应数据,简化后续处理步骤。

数据请求与清洗

在实际操作中,我们首先需要构建一个有效的POST请求,以获取钉钉系统中的流程实例数据。以下是一个示例请求体:

{
  "process_instance_id": "<实例ID>"
}

发送请求后,钉钉会返回一个包含流程实例详细信息的JSON对象。假设返回的数据如下:

{
  "dingtalk_smartwork_bpms_processinstance_get_response": {
    "result": {
      "process_instance_id": "<实例ID>",
      "title": "<流程标题>",
      "status": "<流程状态>",
      ...
    }
  }
}

数据转换与初步加工

接收到响应数据后,我们需要对其进行初步加工,以便后续处理。具体步骤包括:

  1. 提取关键字段:从响应中提取出我们关心的字段,例如process_instance_id, title, 和 status等。
  2. 格式转换:根据目标系统(如金蝶)的要求,对数据格式进行转换。例如,将日期格式从ISO标准转换为目标系统所需的格式。
  3. 数据校验:根据业务规则,对提取的数据进行校验。例如,确保流程状态为“已完成”时才继续处理。

以下是一个简单的数据转换示例代码:

def process_dingtalk_response(response):
    result = response.get("dingtalk_smartwork_bpms_processinstance_get_response", {}).get("result", {})
    processed_data = {
        "process_instance_id": result.get("process_instance_id"),
        "title": result.get("title"),
        "status": result.get("status"),
        # 添加更多字段处理逻辑
    }
    return processed_data

# 示例调用
response = {
    # 假设这是从API获取到的响应
}
processed_data = process_dingtalk_response(response)
print(processed_data)

自动填充响应

由于配置了autoFillResponse: true,轻易云平台会自动将API响应中的字段填充到预定义的数据结构中。这一步骤极大简化了开发工作,使得我们可以专注于业务逻辑而非底层实现。

总结

通过上述步骤,我们成功地调用了钉钉接口topapi/processinstance/get,并对返回的数据进行了初步加工。这为后续的数据转换与写入奠定了基础。在实际项目中,根据具体需求可能还需要进一步细化和优化这些步骤,但总体思路是一致的。 金蝶与WMS系统接口开发配置

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

在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将深入探讨如何利用轻易云数据集成平台,将源平台的数据经过ETL转换后,写入金蝶云星空API接口。

API接口配置

首先,我们需要了解目标平台金蝶云星空的API接口配置。根据提供的元数据配置,金蝶云星空的API接口为batchSave,采用POST方法,且需要进行ID检查。以下是详细的请求字段配置:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号"},
    {"field": "FBillTypeID", "label": "单据类型", "type": "string", 
     "describe": "标准其他出库单:QTCKD01_SYS\n资产出库:QTCKD02_SYS\nVMI出库:QTCKD03_SYS\n费用物料出库:QTCKD04_SYS\n库存调整:QTCKD05_SYS",
     "parser": {"name": "ConvertObjectParser", "params":"FNumber"}, 
     "value":"QTCKD10_SYS"},
    {"field": "FPickOrgId", "label": "领用组织", "type": "string", 
     "describe":"领用组织",
     ...
    }
  ],
  ...
}

数据字段解析与转换

在ETL过程中,数据字段的解析与转换是至关重要的一环。以下是部分关键字段的解析与转换过程:

  1. 单据类型(FBillTypeID)

    • 使用ConvertObjectParser解析器,将内部编码转换为金蝶系统识别的编码。
    • 示例值为QTCKD10_SYS,表示标准其他出库单。
  2. 领用组织(FPickOrgId)

    • 同样使用ConvertObjectParser解析器,将内部组织编码转换为金蝶系统识别的编码。
    • 示例值为101
  3. 日期(FDate)

    • 直接映射源平台的借用日期字段。
    • 示例值为{{借用日期}}
  4. 备注(FNote)

    • 使用自定义函数处理空值情况。
    • 示例代码:_function CASE '{{备注}}' WHEN 'NULL' THEN '' ELSE '{{备注}}' END
  5. 明细信息(FEntity)

    • 包含多个子字段,如物料编码(FMaterialId)、实发数量(FQty)、发货仓库(FStockId)等。
    • 每个子字段均使用相应的解析器进行转换,如物料编码使用ConvertObjectParser解析器,将内部物料编码转换为金蝶系统识别的编码。

请求示例

完成所有字段的解析与转换后,我们将生成一个完整的请求示例:

{
  "FormId": "STK_MisDelivery",
  ...
  {
    ...
    {
      ...
      {
        ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                {
                  ...
                  {
                    ...
                    {
                      ...
                      {
                        FBillNo: '20230101',
                        FBillTypeID: 'QTCKD10_SYS',
                        FPickOrgId: '101',
                        FStockOrgId: '101',
                        FDate: '2023-01-01',
                        FDeptId: '_findCollection find FNumber from ... where FName=... FUseOrgId=101',
                        FNote: '_function CASE \'备注\' WHEN \'NULL\' THEN \'\' ELSE \'备注\' END',
                        FStockDirect: 'GENERAL',
                        F_TLQG_TextDDLSH: '流水号123456',
                        F_TLQG_BaseLLRY: '_findCollection find FNumber from ... where ...',
                        FEntity: [
                          {
                            FMaterialId: '物料编码12345',
                            FQty: '100',
                            FStockId: 'CK008',
                            FSTOCKSTATUSID: 'KCZT01_SYS',
                            FEntryNote: '',
                            FBaseQty: 100,
                            FKeeperTypeId: 'BD_KeeperOrg',
                            FStockLocId: {FSTOCKLOCID__FF100008:'Q'}
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  ...
}

执行操作

最后,通过轻易云数据集成平台执行上述请求,将数据写入金蝶云星空。确保所有基础资料验证通过,并根据业务需求选择是否自动提交并审核。

通过以上步骤,我们成功实现了将源平台的数据经过ETL转换后,写入目标平台金蝶云星空API接口。这一过程不仅提高了数据处理效率,还确保了数据的一致性和准确性。 如何开发用友BIP接口

更多系统对接方案