ETL转换与写入:轻易云平台对接金蝶云星空API

  • 轻易云集成顾问-黄宏棵

SD003-(委外类)生产订单新增驳回 泛微=>金蝶撤销案例分享

在现代企业的业务系统中,数据集成是确保信息流畅和高效运作的重要环节。本次案例聚焦于如何通过泛微OA-Http与金蝶云星空的数据对接,实现生产订单新增后的驳回处理,由泛微传输至金蝶进行撤销操作。

具体方案编码为SD003,在实际应用过程中,我们使用了API接口 /api/workflow/paService/getWorkflowRequest 从泛微OA获取数据,并调用金蝶云星空的 CancelAssign 接口完成数据写入。为了确保集成的可靠性,我们需要处理一些关键技术点,包括但不限于:

  1. 定时可靠抓取与批量数据传输:我们设计了一个定时任务,通过调用泛微OA-Http API接口,周期性地抓取新的生产订单请求。这不仅保证了即时同步,还提高了整体效率。

  2. 分页和限流控制:由于业务需求下的数据量较大,需要特别关注接口请求中的分页和限流问题,以避免因超出接口限制而导致的数据漏单或性能瓶颈。

  3. 自定义数据转换逻辑:两套系统间的数据格式存在差异,为此我们设置了一系列自定义转换规则,确保所有字段能正确映射并符合目标系统要求,实现无缝对接。

  4. 实时监控与错误重试机制:通过集中化监控平台,对每个步骤进行细致跟踪,一旦发现异常将自动触发告警并尝试重试,最大程度上保障集成过程平稳运行,而不影响正常业务流程。

  5. 高吞吐量支持及性能优化:考虑到大量生产订单在高峰期产生,本实施方案特别注重提升写入速度和吞吐能力。在实际运行中,即便面对突发的大规模数据,也能快速、稳定地将其批量导入到金蝶云星空中去。

下一步,将深入展示具体实现方式以及相关代码示例,让大家更直观地了解整个对接流程中的技术要点及应对策略。 钉钉与WMS系统接口开发配置

调用泛微OA-Http接口获取并加工数据的技术案例

在数据集成过程中,调用源系统接口获取数据是至关重要的一步。本文将详细介绍如何使用轻易云数据集成平台调用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest,并对获取的数据进行初步加工处理。

接口概述

泛微OA-Http接口/api/workflow/paService/getWorkflowRequest主要用于查询特定工作流请求的信息。该接口采用GET方法,通过传递特定的参数来获取所需的数据。

元数据配置解析

根据提供的元数据配置,我们可以了解到以下关键点:

  • API路径/api/workflow/paService/getWorkflowRequest
  • 请求方法:GET
  • 请求参数
    • workflowId:e9流程id,值为"406"
    • workflowIdList:中间方案ID,值为"8183a586-bdfb-3e93-8573-d5e81803c5ff"
  • 条件过滤:仅当currentNodeId等于"3123"时,才会返回结果。

请求参数配置

在实际操作中,我们需要按照元数据配置中的要求构造HTTP GET请求。以下是一个示例请求URL:

https://example.com/api/workflow/paService/getWorkflowRequest?workflowId=406&workflowIdList=8183a586-bdfb-3e93-8573-d5e81803c5ff

数据过滤与条件判断

根据元数据配置中的条件过滤部分,我们需要确保只有当返回的数据中字段currentNodeId等于"3123"时,才会进一步处理。这一步骤可以通过轻易云平台内置的条件判断功能实现。

{
  "condition": [
    [
      {
        "field": "currentNodeId",
        "logic": "eqv2",
        "value": "3123"
      }
    ]
  ]
}

自动填充响应

元数据配置中的autoFillResponse: true表示平台会自动将响应结果填充到后续处理流程中。这一特性极大简化了开发者的工作,使得数据处理更加高效和透明。

数据加工与清洗

在获取到符合条件的数据后,需要对其进行初步加工和清洗,以便后续的数据转换与写入。例如,可以提取关键字段、格式化日期、去除无用信息等。以下是一个简单的数据清洗示例:

{
  "requestId": "12345",
  "workflowId": "406",
  "currentNodeId": "3123",
  // 其他字段...
}

通过轻易云平台的可视化界面,可以方便地对上述JSON结构进行字段提取和转换操作。

实践案例

假设我们需要将符合条件的生产订单驳回信息从泛微OA系统同步到金蝶系统。在此过程中,我们首先调用上述接口获取生产订单信息,并通过轻易云平台进行初步清洗和加工,然后再将处理后的数据写入金蝶系统。

  1. 调用接口:构造GET请求并发送。
  2. 条件判断:检查返回结果中的currentNodeId是否为"3123"。
  3. 数据清洗:提取并格式化必要字段。
  4. 写入目标系统:将清洗后的数据通过轻易云平台写入金蝶系统。

这种方式不仅提高了数据集成的效率,还确保了每个环节的透明度和可追溯性。

通过以上步骤,我们实现了从泛微OA系统到金蝶系统的数据无缝对接,为企业业务流程自动化提供了有力支持。 如何开发钉钉API接口

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

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

元数据配置解析

首先,我们需要理解元数据配置中的各个字段及其作用。以下是元数据配置的详细解析:

{
  "api": "CancelAssign",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field":"FormId","label":"FormId","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"PUR_PurchaseOrder"},
    {"field":"Numbers","label":"Numbers","type":"string","describe":"111","value":"_function SUBSTRING_INDEX('{requestName}', '-', 1)"},
    {"field":"InterationFlags","label":"InterationFlags","type":"string","describe":"字符串类型,分号分隔,格式:\"flag1;flag2;...\"(非必录) 例如(允许负库存标识:STK_InvCheckResult)","value":"STK_InvCheckResult"},
    {"field":"IgnoreInterationFlag","label":"IgnoreInterationFlag","type":"string","describe":"布尔类型,默认true(非必录)","value":"true"},
    {"field":"NetworkCtrl","label":"NetworkCtrl","type":"string","describe":"布尔类型,默认false(非必录)","value":"false"},
    {"field":"IsVerifyProcInst","label":"IsVerifyProcInst","type":"string","describe":"是否检验单据关联运行中的工作流实例,布尔类型,默认false(非必录)","value":"false"}
  ]
}

数据请求与清洗

在数据请求阶段,我们从源系统获取原始数据。这些数据可能包含冗余信息或格式不符合目标系统要求,因此需要进行清洗和预处理。例如,从泛微系统获取生产订单驳回信息时,需要提取出关键信息如订单编号、驳回原因等。

数据转换与写入

接下来,我们进入数据转换阶段,将清洗后的数据按照目标系统API接口的要求进行重新组织和格式化。以下是如何将这些字段映射到金蝶云星空API接口所需格式的具体步骤:

  1. FormId: 固定值为PUR_PurchaseOrder,表示这是一个采购订单。
  2. Numbers: 使用SUBSTRING_INDEX函数从请求名称中提取订单编号。例如,如果请求名称为12345-67890,则提取结果为12345
  3. InterationFlags: 固定值为STK_InvCheckResult,表示允许负库存标识。
  4. IgnoreInterationFlag: 布尔类型,默认值为true
  5. NetworkCtrl: 布尔类型,默认值为false
  6. IsVerifyProcInst: 布尔类型,默认值为false

通过轻易云的数据集成平台,可以利用其强大的ETL功能,将上述字段进行相应的转换和映射。以下是一个示例代码片段,用于展示如何通过API接口将转换后的数据写入金蝶云星空:

import requests
import json

def transform_and_write_data(request_name):
    # 提取订单编号
    order_number = request_name.split('-')[0]

    # 构建请求体
    payload = {
        "FormId": "PUR_PurchaseOrder",
        "Numbers": order_number,
        "InterationFlags": "STK_InvCheckResult",
        "IgnoreInterationFlag": True,
        "NetworkCtrl": False,
        "IsVerifyProcInst": False
    }

    # API URL
    api_url = 'https://api.kingdee.com/CancelAssign'

    # 发起POST请求
    response = requests.post(api_url, data=json.dumps(payload), headers={'Content-Type': 'application/json'})

    if response.status_code == 200:
        print("Data successfully written to Kingdee Cloud.")
    else:
        print(f"Failed to write data to Kingdee Cloud. Status code: {response.status_code}")

# 示例调用
transform_and_write_data('12345-67890')

实时监控与错误处理

在实际操作中,我们还需要实时监控数据流动和处理状态,以确保每个环节都能顺利执行。如果出现错误,例如网络故障或API调用失败,需要有相应的错误处理机制来捕获并记录这些异常,以便后续排查和修复。

通过上述步骤,我们可以高效地将源平台的数据经过ETL转换后写入到金蝶云星空API接口,实现不同系统间的数据无缝对接。这不仅提升了业务流程的透明度和效率,也确保了数据的一致性和准确性。 金蝶与WMS系统接口开发配置

更多系统对接方案