利用轻易云实现ETL转换及写入简道云API的完整流程

  • 轻易云集成顾问-张妍琪

金蝶云星空数据集成到简道云案例分析

在具体的企业业务流程中,如何将金蝶云星空中的“其他出库单(未审核)”数据同步至简道云是一个复杂且具有挑战性的任务。本次分享的技术案例旨在详细解析这一集成过程,通过高效可靠的API调用和处理机制,实现全自动化的数据对接。

为了实现上述目标,我们首先需要调用金蝶云星空提供的数据获取API executeBillQuery。该接口能够请求到所需出库单的信息,但必须应对其分页和限流问题。通过合适的策略和参数配置,可以确保不漏掉任何一条记录,并且避免触发系统限制。

{
  "formId": "other_outbound_order",
  "fieldKeys": ["field1", "field2", ...],
  "filterString": "<query conditions>",
  ...
}

获取到数据后,下一个关键步骤是将这些信息批量写入简道云。这一步我们使用的是简道云的数据创建API /api/v2/app/{app_id}/entry/{entry_id}/data_create。面对大量数据导入时,合理设计批量提交策略异常重要,这不仅能提升处理速度,还能有效减少接口调用次数,以便提高系统效率。

{
  "dataList": [
    {"fieldA": valueA, "fieldB": valueB, ...},
    {"fieldA": valueC, "fieldB": valueD, ...},
    ...
  ]
}

然而,在这两个平台之间进行数据对接时,不可避免地会遇到格式差异的问题。例如某些字段名称或类型可能存在不一致,因此定制化的数据映射成为必须的一部分。此外,为了保证整个流程的健壮性与可靠性,对接过程中还需要考虑异常处理及错误重试机制,例如当某次接口请求失败时,可进行数次尝试直至成功或者记录日志并进行报警通知。

最后,对于实时监控与日志记录也是绝不可忽视的重要环节。通过轻易云平台提供的工具,可以实时查看每个环节的数据流动情况、抓取状态以及潜在的问题,从而为快速修复与优化提供有力支持。

综上所述,本篇技术文章将围绕这些核心点展开,具体描述如何有效利用各项API资源实现高效、安全、稳定地完成从金蝶云星空向简道云的数据集成。 用友与MES系统接口开发配置

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,获取并加工其他出库单(未审核)数据,并同步到简道云。

接口配置与请求参数

在轻易云平台上,我们使用POST方法调用金蝶云星空的executeBillQuery接口。以下是元数据配置中的关键字段及其含义:

  • api: executeBillQuery
  • method: POST
  • number: FBillNo
  • id: FEntity_FEntryID
  • idCheck: true

这些配置确保我们能够正确地调用API并处理返回的数据。

请求参数详解

请求参数分为两部分:主请求参数和其他请求参数。主请求参数定义了需要查询的字段,而其他请求参数则包括分页、过滤等控制信息。

主请求参数

以下是一些关键字段及其描述:

  • FEntity_FEntryID: 分录ID
  • FID: 单据ID
  • FBillNo: 单据编号
  • FDocumentStatus: 单据状态
  • FStockOrgId_FNumber: 库存组织编码
  • FDate: 日期
  • FBillTypeID: 单据类型
  • FMATERIALID_FNumber: 物料编码
  • FQty: 数量
  • FPrice: 单价
  • FAmount: 金额

这些字段确保我们能够获取到完整且详细的出库单信息。

其他请求参数

其他请求参数用于控制查询行为:

  • Limit: 每页记录数(分页)
  • StartRow: 起始行(分页)
  • FilterString: 过滤条件,例如:FCreateDate>='{{LAST_SYNC_TIME|datetime}}' and FStockOrgId.FNumber = '103' and FDocumentStatus='B'

这些参数帮助我们精确地控制查询范围和结果集大小。

调用API并处理响应

在配置好请求参数后,我们通过轻易云平台发起API调用。以下是一个示例代码片段,展示如何构建请求并处理响应:

{
  "FormId": "STK_MisDelivery",
  "FieldKeys": [
    "FID", "FBillNo", "FDocumentStatus", "FStockOrgId.FNumber", 
    "FDate", "FBillTypeID.Fname", "FMATERIALID.FNumber", 
    "FQty", "FPrice", "FAmount"
  ],
  "FilterString": "FCreateDate>='2023-01-01' and FStockOrgId.FNumber = '103' and FDocumentStatus='B'",
  "Limit": 100,
  "StartRow": 0,
  "TopRowCount": null
}

响应数据会自动填充到预定义的结构中,便于后续的数据清洗和转换操作。

数据清洗与转换

在获取到原始数据后,我们需要对其进行清洗和转换,以满足目标系统(简道云)的要求。例如,我们可能需要将日期格式进行标准化,将金额字段进行汇总等操作。这些操作可以通过轻易云平台提供的可视化工具完成,无需编写复杂的代码。

写入目标系统

最后一步是将清洗和转换后的数据写入到简道云。轻易云平台支持多种目标系统的集成,可以通过简单配置实现数据的无缝对接。在这个过程中,我们需要确保数据的一致性和完整性,避免因数据格式或内容问题导致写入失败。

通过以上步骤,我们成功实现了从金蝶云星空获取其他出库单(未审核)数据,并将其同步到简道云的全过程。这不仅提高了业务流程的透明度和效率,也为企业的数据管理提供了强有力的支持。 电商OMS与WMS系统接口开发配置

使用轻易云数据集成平台进行ETL转换并写入简道云API接口

在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何利用轻易云数据集成平台,将源平台的数据进行ETL转换,并最终通过简道云API接口写入目标平台。

API接口与元数据配置解析

在本案例中,我们需要将其他出库单(未审核)的数据同步到简道云。为此,我们使用了简道云的/api/v2/app/{app_id}/entry/{entry_id}/data_create接口,该接口支持POST方法,用于创建新的数据条目。

元数据配置如下:

{
  "api": "/api/v2/app/{app_id}/entry/{entry_id}/data_create",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field":"_widget_1686988665221","label":"单据编号","type":"string","value":"{FBillNo}","parser":{"name":"ConvertObjectParser","params":"value"}},
    {"field":"_widget_1688084455746","label":"单据类型","type":"string","value":"{FBillTypeID}","parser":{"name":"ConvertObjectParser","params":"value"}},
    {"field":"_widget_1688084455747","label":"客户","type":"string","value":"{FCustId}","parser":{"name":"ConvertObjectParser","params":"value"}},
    {"field":"_widget_1688084455748","label":"业务类型","type":"string","value":"{FBizType}","parser":{"name":"ConvertObjectParser","params":"value"}},
    {"field":"_widget_1688084455749","label":"货主类型","type":"string","value":"{FOwnerTypeId}","parser":{"name":"ConvertObjectParser","params":"value"}},
    {"field":"_widget_1688084455750","label":"货主","type":"string","value":"{FOWNERID}","parser":{"name":"ConvertObjectParser","params":"value"}},
    {"field":"_widget_1688084455751","label":"领料部门","type":"string","value":"{FDeptId}","parser":{"name":"ConvertObjectParser","params":"value"}},
    {"field": "_widget_1688084455752", "label": "领料人", "type": "string", "value": "{FPickerId}", "parser": {"name": "ConvertObjectParser", "params": "value"}},
    {"field": "_widget_1688084455753", "label": "单据状态", "type": "string", "value": "{FDocumentStatus}", "parser": {"name": "ConvertObjectParser", "params": "value"}},
    {"field": "_widget_1688084455754", "label": "出库类型", "type": "string", "value": "{F_QTSS_Assistant1}", "parser": {"name": "ConvertObjectParser", "params": "value"}}
  ],
  ...
}

数据转换与写入

在ETL过程中,首先需要从源系统提取原始数据,然后根据目标系统的要求进行转换。以下是具体步骤:

  1. 提取数据:从源系统获取未审核的其他出库单数据。
  2. 数据清洗:确保所有字段符合目标系统要求,例如去除空值、格式化日期等。
  3. 字段映射:根据元数据配置,将源系统字段映射到简道云API所需字段。例如:
    • FBillNo 映射到 _widget_1686988665221
    • FBillTypeID 映射到 _widget_1688084455746
    • FCustId 映射到 _widget_1688084455747
  4. 数据转换:使用指定的解析器(如 ConvertObjectParser)对字段值进行必要的转换。
  5. 构建请求体:根据元数据配置,构建JSON格式的请求体。例如:
    {
     "_widget_1686988665221": "<单据编号>",
     "_widget_1688084455746": "<单据类型>",
     "_widget_1688084455747": "<客户>",
     ...
    }
  6. 发送请求:通过HTTP POST方法,将构建好的请求体发送到简道云API接口。

示例代码

以下是一个Python示例代码,用于实现上述步骤:

import requests
import json

def convert_data(source_data):
    # 数据清洗和转换
    converted_data = {
        "_widget_1686988665221": source_data.get("FBillNo"),
        "_widget_1688084455746": source_data.get("FBillTypeID"),
        "_widget_1688084455747": source_data.get("FCustId"),
        "_widget_1688084455748": source_data.get("FBizType"),
        "_widget_1688084455749": source_data.get("FOwnerTypeId"),
        "_widget_1688084455750": source_data.get("FOWNERID"),
        "_widget_1688084455751": source_data.get("FDeptId"),
        "_widget_1688084455752": source_data.get("FPickerId"),
        "_widget_1688084455753": source_data.get("FDocumentStatus"),
        "_widget_1688084455754": source_data.get("F_QTSS_Assistant1")
    }

    return converted_data

def send_to_jdy(api_url, app_id, entry_id, data):
    headers = {
        'Content-Type': 'application/json'
    }

    url = api_url.replace("{app_id}", app_id).replace("{entry_id}", entry_id)

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

    if response.status_code == 200:
        print("Data successfully sent to 简道云")
    else:
        print(f"Failed to send data: {response.status_code}, {response.text}")

# 示例源数据
source_data = {
    'FBillNo': '12345',
    'FBillTypeID': '销售出库',
    'FCustId': 'C001',
    'FBizType': '普通销售',
    'FOwnerTypeId': '自有',
    'FOWNERID': 'O001',
    'FDeptId': 'D001',
    'FPickerId': 'P001',
    'FDocumentStatus': '未审核',
    'F_QTSS_Assistant1': '正常出库'
}

converted_data = convert_data(source_data)
send_to_jdy("/api/v2/app/{app_id}/entry/{entry_id}/data_create", 
            app_id="63899c8e6705fb000870437d",
            entry_id="648d677974e57b000859846a",
            data=converted_data)

以上代码展示了如何将其他出库单的数据通过ETL过程转化为简道云API所需格式,并成功写入目标平台。通过这种方式,可以实现不同系统间的数据无缝对接,提高业务效率和透明度。 企业微信与ERP系统接口开发配置

更多系统对接方案