轻易云平台助力跨系统数据高效集成与处理

  • 轻易云集成顾问-蔡威

案例分享:泛微OA-Http数据集成到金蝶云星空

在本案例中,我们将探索如何通过轻易云数据集成平台实现泛微OA-Http系统与金蝶云星空的无缝对接。具体方案涉及"SD003-(委外类)生产订单新增审核"这一任务,需将泛微的生产订单数据精准地传输并处理至金蝶云系统中。

系统架构概述

为确保高效、准确的数据流动,本次解决方案采用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest进行定时抓取,并通过轻易云的数据转换和映射能力,将获取的数据批量写入金蝶云星空,其API端点为Audit

数据获取与格式转换

首先,通过调用泛微OA-Http提供的API接口/api/workflow/paService/getWorkflowRequest来抓取新生成的生产订单。此过程中需要特别关注分页和限流问题,以便有效应对大规模数据获取场景。同时,自定义数据转换逻辑是关键步骤,通过轻易云强大的可视化工具调整映射关系,将原始数据自定义地转化为符合金蝶标准的数据格式。

数据写入与异常处理

在成功完成数据转换后,通过调用金蝶云星空中的写入API端点Audit, 我们能够快速且稳定地提交大量生产订单。在此环节中,由于可能出现网络波动或服务异常,因此必须实现一套完备的错误重试机制,以及实时监控告警,确保每条记录不漏单、不重复,提高整体系统可靠性和健壮性。此外,还提供了高级配置选项,用于处理各类复杂业务规则及特殊情境下的数据映射需求,全面保障业务连续性。

上述工作流程展示了在实际应用中的技术要点,实现了从元数据抽取、清洗到加载的一体化过程,为企业跨系统间高效协同管理数据信息奠定基础。在后续内容中,我们将深入解析每一步骤中的具体技术细节以及优化策略,从而进一步提升整个流程的稳定性和效率。 金蝶与MES系统接口开发配置

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

在数据集成生命周期的第一步,我们需要调用源系统泛微OA-Http接口/api/workflow/paService/getWorkflowRequest来获取数据,并对其进行初步加工。本文将详细探讨如何配置和调用该接口,以及如何处理返回的数据。

接口配置与调用

根据提供的元数据配置,我们可以看到该接口的基本信息和请求参数:

{
  "api": "/api/workflow/paService/getWorkflowRequest",
  "effect": "QUERY",
  "method": "GET",
  "number": "requestId",
  "id": "requestId",
  "name": "requestId",
  "idCheck": true,
  "request": [
    {
      "field": "workflowId",
      "label": "e9流程id",
      "type": "string",
      "describe": "e9流程id",
      "value": "406"
    },
    {
      "field": "workflowIdList",
      "label": "workflowIdList中间方案ID",
      "type": "string",
      "describe": "workflowIdList中间方案ID",
      "value": "8183a586-bdfb-3e93-8573-d5e81803c5ff"
    }
  ],
  "autoFillResponse": true,
  "condition": [
    [
      {
        "field": "currentNodeId",
        "logic": "eqv2",
        "value": "3125"
      }
    ]
  ]
}

请求参数解析

  1. API路径/api/workflow/paService/getWorkflowRequest
  2. 请求方法:GET
  3. 主要标识字段requestId
  4. 请求参数
    • workflowId: e9流程ID,值为"406"
    • workflowIdList: 中间方案ID,值为"8183a586-bdfb-3e93-8573-d5e81803c5ff"

条件过滤

为了确保我们只获取到特定节点的数据,我们设置了一个条件过滤:

{
  "field": "currentNodeId",
  "logic": "eqv2",
  "value": ":3125"
}

这意味着我们只会处理当前节点ID为3125的数据。

数据获取与初步加工

通过上述配置,我们可以发起HTTP GET请求来获取数据。假设我们使用Python进行实现,代码示例如下:

import requests

# 定义API URL和请求参数
url = 'http://example.com/api/workflow/paService/getWorkflowRequest'
params = {
    'workflowId': '406',
    'workflowIdList': '8183a586-bdfb-3e93-8573-d5e81803c5ff'
}

# 发起GET请求
response = requests.get(url, params=params)

# 检查响应状态码
if response.status_code == 200:
    data = response.json()

    # 初步加工数据,根据条件过滤
    filtered_data = [item for item in data if item['currentNodeId'] == '3125']

    # 打印或进一步处理过滤后的数据
    print(filtered_data)
else:
    print(f"Error: {response.status_code}")

在这个示例中,我们首先定义了API URL和请求参数,然后发起GET请求并检查响应状态码。如果响应成功(状态码200),我们将返回的数据转换为JSON格式,并根据条件过滤出当前节点ID为3125的数据。

自动填充响应

元数据配置中的autoFillResponse字段设置为true,这意味着平台会自动填充响应数据。这一特性简化了开发过程,使得我们无需手动解析每个字段。

数据清洗与转换

在获取并初步过滤数据后,下一步是对数据进行清洗和转换,以便后续写入目标系统。在实际应用中,这可能包括以下步骤:

  1. 字段映射:将源系统的字段映射到目标系统的字段。
  2. 数据格式转换:确保数据格式符合目标系统要求。
  3. 异常处理:处理缺失或异常数据。

例如,如果目标系统需要的数据格式不同,我们可以使用Python的pandas库进行进一步处理:

import pandas as pd

# 将过滤后的数据转换为DataFrame
df = pd.DataFrame(filtered_data)

# 执行必要的数据清洗和转换操作
df['new_field'] = df['existing_field'].apply(lambda x: transform_function(x))

# 将清洗后的数据导出为目标格式,例如CSV文件
df.to_csv('cleaned_data.csv', index=False)

通过上述步骤,我们可以确保从泛微OA系统获取的数据经过清洗和转换后,能够无缝对接到目标系统,如金蝶ERP。

总结来说,通过正确配置和调用泛微OA-Http接口,并对返回的数据进行初步加工,可以有效地实现不同系统之间的数据集成,为后续的数据转换与写入打下坚实基础。 用友与CRM系统接口开发配置

轻易云数据集成平台:ETL转换与金蝶云星空API接口对接技术案例

在数据集成的生命周期中,第二步尤为关键,即将已经集成的源平台数据进行ETL转换,并转为目标平台所能接收的格式。本文将深入探讨如何利用轻易云数据集成平台,将来自泛微的委外类生产订单新增审核数据,通过ETL转换后写入金蝶云星空API接口。

元数据配置解析

首先,我们来看一下元数据配置,这些配置定义了如何将源数据映射到目标系统中所需的格式:

{
  "api": "Audit",
  "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"}
  ]
}

数据转换与映射

在这个元数据配置中,我们需要特别关注以下几个字段:

  • FormId: 必须填写金蝶的表单ID,例如PUR_PurchaseOrder
  • Numbers: 使用函数SUBSTRING_INDEX从请求名称中提取特定部分。
  • InterationFlags: 用于标识某些操作标志,例如允许负库存。
  • IgnoreInterationFlag: 布尔类型字段,默认值为true
  • NetworkCtrl: 布尔类型字段,默认值为false
  • IsVerifyProcInst: 检验单据是否关联运行中的工作流实例,默认值为false

这些字段需要根据业务需求进行适当的映射和转换,以确保数据能够被目标系统正确接收和处理。

实际案例分析

假设我们有一个来自泛微的生产订单新增审核请求,其请求名称为 SD003-12345。我们需要将此请求通过ETL转换后写入金蝶云星空。

  1. FormId 映射:

    {
     "FormId": "PUR_PurchaseOrder"
    }

    这里直接使用固定值 PUR_PurchaseOrder

  2. Numbers 映射:

    {
     "Numbers": "_function SUBSTRING_INDEX('SD003-12345', '-', 1)"
    }

    使用 SUBSTRING_INDEX 函数提取 SD003 部分作为 Numbers 字段的值。

  3. InterationFlags 映射:

    {
     "InterationFlags": "STK_InvCheckResult"
    }

    固定值 STK_InvCheckResult 表示允许负库存标识。

  4. IgnoreInterationFlag 映射:

    {
     "IgnoreInterationFlag": true
    }

    默认值 true 表示忽略交互标志。

  5. NetworkCtrl 映射:

    {
     "NetworkCtrl": false
    }

    默认值 false 表示不启用网络控制。

  6. IsVerifyProcInst 映射:

    {
     "IsVerifyProcInst": false
    }

    默认值 false 表示不检验单据关联运行中的工作流实例。

最终生成的请求体如下:

{
  "FormId": "PUR_PurchaseOrder",
  "Numbers": "SD003",
  "InterationFlags": "STK_InvCheckResult",
  "IgnoreInterationFlag": true,
  "NetworkCtrl": false,
  "IsVerifyProcInst": false
}

数据写入目标平台

最后一步是将上述生成的数据通过HTTP POST方法发送到金蝶云星空API接口。轻易云数据集成平台提供了全异步和高效的数据传输机制,确保在传输过程中不会阻塞其他操作,并且能够实时监控传输状态。

import requests

url = 'https://api.kingdee.com/Audit'
headers = {'Content-Type': 'application/json'}
data = {
    'FormId': 'PUR_PurchaseOrder',
    'Numbers': 'SD003',
    'InterationFlags': 'STK_InvCheckResult',
    'IgnoreInterationFlag': True,
    'NetworkCtrl': False,
    'IsVerifyProcInst': False
}

response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
    print('Data successfully written to Kingdee Cloud')
else:
    print('Failed to write data:', response.text)

通过上述步骤,我们完成了从泛微到金蝶云星空的数据ETL转换和写入过程。利用轻易云数据集成平台,可以大大简化跨系统的数据集成操作,提高业务处理效率。 金蝶云星空API接口配置

更多系统对接方案