轻易云平台ETL转换与金蝶云星空API对接实践

  • 轻易云集成顾问-谢楷斌

致远A8+数据集成到金蝶云星空的技术实践:正式OA-ERP外购件采购申请单

在企业信息系统中,跨平台的数据集成是一个复杂而关键的任务。本文将重点讨论如何实现致远A8+与金蝶云星空之间的数据对接,以"正式OA-ERP外购件采购申请单"为例,通过API接口的运用,实现高效、可靠的数据传输。

系统概览及主要挑战

  1. 高效数据写入

    • 在本案例中,我们需要将大量来自致远A8+系统的数据快速、高吞吐量地写入到金蝶云星空。这不仅要求接口具有较高的并发处理能力,还需保障数据不丢失、不重复。
  2. 实时监控和告警

    • 数据流动过程中的透明度和可视化管理是确保集成成功的重要环节。通过集中监控和告警机制,可以实时跟踪各个数据集成任务的状态,并及时发现并解决问题。
  3. 自定义转换逻辑

    • 由于两者之间存在不同的数据结构和业务需求,需要支持自定义转换逻辑,以便在传输过程中动态调整数据格式和内容。
  4. 异常处理与重试机制

    • 为应对API调用失败以及网络抖动等突发情况,必须设计完善的异常处理流程和重试机制,确保每一条记录最终都能正确进入目标系统。

实施步骤及技术要点

  1. 数据获取(致远A8+ API)

    /seeyon/rest/flow/FromFinish/{templateCode}/{startTime}/{endTime}

    通过该接口定时抓取外购件采购申请单,将其批量导出进行后续处理。需注意分页问题及限流控制,以提高请求效率并避免对源系统造成过大负载。

  2. 批量写入(金蝶云星空 API)

    batchSave

    使用batchSave接口完成多条记录的一次性导入,从而显著减少API调用次数,提高整体性能。此外还需配置必要的映射关系,使得输入输出字段对应合理,保证数据准确落地。

  3. 指标监控与质量检测 集成过程中的每一步都由实时日志记录,并通过仪表盘展示,可随时查看运行状态。同时,对于出现异常或错误的信息,会触发预设命令进行自动纠正或再尝试操作,从而最大程度降低人工干预成本。

以上即为本案例研究开篇部分。在后续文章中,我们会更详细讲解每个阶段所遇到的问题 金蝶与MES系统接口开发配置

调用致远A8+接口获取并加工数据的技术实现

在数据集成过程中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用致远A8+接口/seeyon/rest/flow/FromFinish/{templateCode}/{startTime}/{endTime}来获取并加工数据。

接口配置与调用

首先,我们需要了解该接口的基本信息和参数配置。根据元数据配置,接口的路径为/seeyon/rest/flow/FromFinish/{templateCode}/{startTime}/{endTime},采用GET方法进行请求。以下是具体的参数说明:

  • templateCode: 模板代码,类型为字符串,在本案例中固定为WGJCGSQD
  • startTime: 起始时间,类型为字符串,使用上次同步时间({{LAST_SYNC_TIME|date}})。
  • endTime: 结束时间,类型为字符串,通过函数计算得到当前时间的下一天(_function DATE_FORMAT(DATE_ADD('{{CURRENT_TIME|date}}', INTERVAL 1 DAY), '%Y-%m-%d'))。

请求参数配置

在请求参数中,我们需要设置以下字段:

{
  "field": "templateCode",
  "label": "templateCode",
  "type": "string",
  "value": "WGJCGSQD"
},
{
  "field": "startTime",
  "label": "startTime",
  "type": "string",
  "value": "{{LAST_SYNC_TIME|date}}"
},
{
  "field": "endTime",
  "label": "endTime",
  "type": "string",
  "value": "_function DATE_FORMAT(DATE_ADD('{{CURRENT_TIME|date}}', INTERVAL 1 DAY), '%Y-%m-%d')"
},
{
  "field": "qcloudflowList",
  "label": "qcloudflowList",
  "type": "string",
  "value": "qcloudflowList"
}

这些参数确保了我们能够准确地获取所需的数据。

数据处理与自动填充响应

在获取到数据后,我们需要对其进行处理。根据元数据配置中的autoFillResponse: true,平台会自动将响应结果填充到相应的数据结构中。这一步极大简化了开发者的工作,使得数据处理更加高效。

数据清洗与转换

在数据清洗阶段,我们需要确保获取的数据符合目标系统的要求。这包括但不限于:

  • 数据格式转换:将日期格式统一转换为目标系统所需的格式。
  • 数据过滤:剔除无效或重复的数据。
  • 数据校验:确保所有必填字段均有值且符合预期格式。

例如,对于日期字段,可以使用如下代码进行格式转换:

import datetime

def convert_date_format(date_str):
    date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d')
    return date_obj.strftime('%Y/%m/%d')

# 示例调用
converted_date = convert_date_format('2023-10-01')
print(converted_date) # 输出: '2023/10/01'

数据写入目标系统

完成数据清洗与转换后,我们需要将处理后的数据写入目标系统。在轻易云平台上,这一步通常通过配置相应的写入操作来实现。例如,可以配置一个POST请求,将处理后的数据发送到目标系统的API接口。

{
  "api": "/target/system/api/path",
  "method": "POST",
  ...
}

通过以上步骤,我们实现了从致远A8+系统获取、清洗、转换并写入目标系统的完整流程。这一过程不仅提高了数据集成效率,也确保了数据的一致性和准确性。 如何对接钉钉API接口

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

在轻易云数据集成平台中,ETL(Extract, Transform, Load)过程是数据生命周期管理的关键步骤之一。本文将深入探讨如何将已经集成的源平台数据进行ETL转换,并通过金蝶云星空API接口写入目标平台。

元数据配置解析

以下是元数据配置,用于将外购件采购申请单的数据写入金蝶云星空:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "request": [
    {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"111","parser":{"name":"ConvertObjectParser","params":"FNUMBER"},"value":"CGSQD01_SYS"},
    {"field":"FApplicationDate","label":"申请日期","type":"string","describe":"111","value":"{{mainData.日期1|datetime}}"},
    {"field":"FRequestType","label":"申请类型","type":"string","describe":"111","value":"Material"},
    {"field":"FApplicationOrgId","label":"申请组织","type":"string","describe":"111","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
    {"field":"FCurrencyId","label":"币别","type":"string","describe":"111","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"111","value":"{{mainData.流水号}}"},
    {"field":"FExchangeTypeId","label":"汇率类型","type":"string","describe":"111","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"HLTX01_SYS"},
    {"field": "F_Boey_JQ", "label": "交期", "type": "string", "value": "{{mainData.交期|datetime}}"},
    {
      "field": "FEntity",
      "label": "明细信息",
      "type": "array",
      "describe": "111",
      "value": "detail_list",
      "children":[
        {"field": "FMaterialId", "label": "物料编码", "type": "string", "describe": "物料编码", 
            "parser":{"name": "ConvertObjectParser", 
            "params": 
            "FNumber"}, 
            "value":
            "{{detail_list.物料编码}}"
        },
        {"field": 
        "FReqQty", 
        "label":
        "申请数量", 
        "type":
        "string", 
        "describe":
        "申请数量", 
        "value":
        "{{detail_list.数量}}"
       },
       {
            "field":
            "F_Boey_YT", 
            "label":
            "用途", 
            "type":
            "string", 
            "describe":
            "备注", 
            "value":
            "{{detail_list.用途}}"
         }
     ]
   }
 ],
  ...
}

数据转换与写入过程

数据提取与清洗

首先,从源系统提取原始数据并进行必要的清洗操作。清洗操作包括去除无效数据、标准化日期格式等。清洗后的数据将被映射到目标平台所需的字段格式。

数据转换

在元数据配置中,我们定义了多个字段及其对应的解析器和值。例如,FBillTypeID 字段使用 ConvertObjectParser 将值 CGSQD01_SYS 转换为金蝶云星空能够识别的对象格式。类似地,其他字段如 FCurrencyId, FExchangeTypeId 等也使用相应的解析器进行转换。

{
  ...
  {
    field: 'FBillTypeID',
    label: '单据类型',
    type: 'string',
    describe: '111',
    parser: { name: 'ConvertObjectParser', params: 'FNUMBER' },
    value: 'CGSQD01_SYS'
  },
  ...
}
构建请求体

根据元数据配置,构建符合金蝶云星空API接口要求的请求体。以下是一个示例请求体:

{
  FormId: 'PUR_Requisition',
  Operation: 'BatchSave',
  IsAutoSubmitAndAudit: true,
  IsVerifyBaseDataField: false,
  Model:
   {
     FBillTypeID: { FNumber: 'CGSQD01_SYS' },
     FApplicationDate: '2023-10-10T00:00:00Z',
     FRequestType: 'Material',
     FApplicationOrgId: { FNumber: '100' },
     FCurrencyId: { FNumber: 'PRE001' },
     FBillNo: '202310100001',
     FExchangeTypeId: { FNumber: 'HLTX01_SYS' },
     F_Boey_JQ: '2023-11-10T00:00:00Z',
     FEntity:
      [
        {
          FMaterialId:{ FNumber:'MAT001'},
          FReqQty:'100',
          F_Boey_YT:'生产用'
        }
      ]
   }
}
数据写入

使用HTTP POST方法,将构建好的请求体发送到金蝶云星空API接口进行批量保存操作。确保在发送请求前,对所有必填字段进行验证,以避免因缺失或格式错误导致的数据写入失败。

const axios = require('axios');

axios.post('https://api.kingdee.com/k3cloud/batchSave', requestBody)
 .then(response => {
   console.log('Data saved successfully:', response.data);
 })
 .catch(error => {
   console.error('Error saving data:', error);
 });

技术要点总结

  1. 解析器应用:通过 ConvertObjectParser 等解析器,将源系统的数据格式转换为目标系统所需格式。
  2. 动态值替换:利用模板语法如 {{mainData.日期1|datetime}} 动态替换值,实现灵活的数据映射。
  3. 请求体构建:根据元数据配置,精确构建符合目标系统API接口要求的请求体。
  4. 错误处理:在实际操作中,应对可能出现的错误进行捕获和处理,以确保数据写入过程的可靠性。

通过上述步骤,我们成功实现了从源平台到金蝶云星空的数据ETL转换与写入,为企业实现高效的数据集成提供了有力支持。 金蝶与WMS系统接口开发配置

更多系统对接方案