从MySQL到金蝶云星空:轻易云数据集成实战指南

  • 轻易云集成顾问-曹润

MySQL 数据集成到金蝶云星空——SYB生产用料清单新增-深圳天一-半成品-好

作为一名系统集成顾问,本文将聚焦于如何使用轻易云数据集成平台,将MySQL的数据无缝接入到金蝶云星空系统中。本次案例,我们实现的是 SYB生产用料清单新增-深圳天一-半成品-好 的数据对接。该解决方案的核心目标是通过可靠和高效的数据传输,实现两个不同系统间的数据同步。

为了确保高吞吐量的数据传输,本次整合方案充分利用了轻易云提供的批量写入能力。通过调用MySQL接口 SELECT 获取源数据,并基于业务需求进行自定义转换,再利用金蝶云星空的API batchSave 实现目标数据库的大规模写入。

在具体实施过程中,包括以下关键技术点:

  1. 定时可靠的抓取与分页处理:我们首先设计并配置了一个定时任务,从MySQL接口中周期性地抓取最新的生产用料清单记录。在此过程中,通过分页机制来处理大规模数据,避免一次性获取过多记录导致内存溢出或网络延迟。

  2. 统一视图和控制台管理:为保证整个集成过程中的透明度与可控性,利用轻易云的平台特性提供集中监控和告警功能。任何异常情况都能被实时捕获,并触发相应告警以便工程师及时修复。

  3. 自定义转换逻辑:由于MySQL与金蝶云星空在数据结构上的差异,我们编写了专门的数据映射脚本,对原始数据进行格式转换,使其符合目标表结构要求。这一步不仅提升了兼容性,同时也确保了业务逻辑的一致性。

  4. 事务一致性和错误重试机制:考虑到实际运行环境的不确定因素,如网络波动、服务宕机等情况,我们引入了一套完善的事务一致性检查及错误重试机制,保证每条记录都能被准确且唯一地同步至金蝶云星空。

  5. 实时监控与日志记录:除了上述功能外,还重点关注对各类操作行为及状态变化进行详细日志记录。这不仅有助于问题排查,也为后期优化改进提供宝贵依据。

本文以下部分将详述每个步骤的具体实现细节,以及可能遇到的问题和对应解决方案,以帮助读者深入理解并应用这些技术要点。 金蝶云星空API接口配置

调用MySQL接口select获取并加工数据

在轻易云数据集成平台的生命周期中,调用源系统接口获取数据是至关重要的第一步。本文将详细探讨如何通过配置元数据,从MySQL数据库中调用select接口获取并加工数据。

元数据配置解析

首先,我们来看一下元数据配置的具体内容:

{
  "api": "select",
  "effect": "QUERY",
  "method": "POST",
  "number": "生产订单号",
  "id": "{{生产订单号}}{{物料编号}}",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "main_params",
      "type": "object",
      "describe": "111",
      "value": "1",
      "children": [
        {
          "field": "limit",
          "label": "limit",
          "type": "string",
          "value": "100"
        },
        {
          "field": "offset",
          "label": "offset",
          "type": "string"
        }
      ]
    }
  ],
  ...
}

配置要点

  1. API和Methodapi字段指定了我们要调用的接口类型为select,而method字段则表明我们使用的是POST请求方法。
  2. 查询参数:在request字段中,我们定义了一个名为main_params的对象,其中包含两个子参数:limitoffset。这些参数用于分页查询,以避免一次性拉取过多数据导致性能问题。
  3. 主SQL语句:在otherRequest字段中,我们定义了实际执行的SQL查询语句。该语句通过多个表连接和条件过滤,最终生成所需的数据集。

SQL查询语句解析

SELECT 
  CASE m.delivery_org
    WHEN 'T01.01' THEN CONCAT('HJ', CAST(i.id AS CHAR))
    WHEN 'T04' THEN CONCAT('HJGD', CAST(i.id AS CHAR))
  END AS 生产订单号,
  a.part_no AS 成品编号,
  DATE(a.update_time) AS 日期,
  a.req_num AS 生产数量,
  a.mold_no AS 计划跟踪号,
  CONCAT(a.part_no, '_WW') AS 物料编号,
  1 AS 分子,
  1 AS 分母,
  i.id AS sourceid,
  a.req_num AS 领料数量,
  m.delivery_org AS 供应组织
FROM mbs_nuclear_price_info i
LEFT JOIN mbs_nuclear_price_task a ON i.nuclear_price_task_uuid = a.nuclear_price_task_uuid
LEFT JOIN mbs_order_plan_bom l ON a.mold_no = l.bom_no
LEFT JOIN mbs_order_bom m ON m.bom_uuid = l.bom_uuid
WHERE 
a.is_cancel = '1' 
AND a.company_code = 'TYZN'
AND i.create_time > (SELECT config_value FROM sys_config WHERE config_id = 337)
AND a.if_close = '1' 
AND i.outsourced_type = '1' 
AND i.out_type = '4' 
AND i.is_success2 != '1' 
AND i.is_success = '1'
LIMIT :limit OFFSET :offset;

这段SQL语句主要完成以下任务:

  • 条件过滤:通过多个条件过滤掉不符合要求的数据,例如取消状态、公司代码、创建时间等。
  • 字段转换与计算:使用CASE语句和CONCAT函数对部分字段进行转换和拼接,以生成所需格式的数据。
  • 分页处理:通过LIMIT和OFFSET实现分页查询,提高查询效率。

数据请求与清洗

在轻易云平台上,通过上述配置可以实现对MySQL数据库的高效查询,并将结果进行初步清洗。清洗后的数据将进一步进入下一个生命周期阶段,即数据转换与写入。

自动填充与遗漏补救

配置中的autoFillResponse: true确保了响应结果自动填充到目标系统中。而对于可能出现的数据遗漏问题,通过设置定时任务(如crontab)进行补救,确保数据完整性。

"omissionRemedy":{
    ...
    ,"crontab":"1 1 * * *"
}

此处设置的crontab表达式表示每天凌晨1点执行一次补救任务。

总结

通过上述元数据配置,我们能够高效地从MySQL数据库中调用select接口获取并加工所需数据。这一步骤不仅是整个数据集成过程的重要环节,也是确保后续数据处理顺利进行的基础。在实际应用中,根据业务需求灵活调整SQL查询和参数配置,可以极大提升系统集成效率和数据质量。 企业微信与OA系统接口开发配置

使用轻易云数据集成平台实现金蝶云星空API接口的数据写入

在数据集成生命周期的第二阶段,重点在于将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何利用轻易云数据集成平台配置元数据,实现这一过程。

配置元数据

首先,我们需要理解并配置元数据,以确保数据能够正确地转换和写入金蝶云星空。以下是用于配置的元数据:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "request": [
    {
      "field": "FID",
      "label": "FID",
      "type": "string",
      "value": "_findCollection find FID from d9c54956-106b-36e1-8018-91a8855f6316 where FMoBillNo={{生产订单号}}"
    },
    {
      "field": "FEntity",
      "label": "子项明细",
      "type": "array",
      ...
    },
    {
      ...
    }
  ],
  ...
}

数据请求与清洗

在进行ETL转换之前,首先需要从源系统请求并清洗数据。假设我们已经完成了这一阶段,现在进入ETL转换阶段。

数据转换与写入

我们将重点放在如何将清洗后的数据转换为金蝶云星空API接口所需的格式,并通过API接口进行写入。

  1. API调用配置

    配置api字段为batchSave,表示我们将调用金蝶云星空的批量保存接口。method字段设置为POST,表示使用HTTP POST方法进行请求。

  2. 操作定义

    operation字段中,我们定义了操作方式:

    • rowsKey: 指定数组键名为"array"。
    • rows: 设置每次操作的行数为1。
    • method: 使用batchArraySave方法进行批量保存。
  3. 请求参数

    请求参数定义了需要传递给API的数据结构:

    • FID: 根据生产订单号查找对应的FID。

      {
      "field": "FID",
      ...
      "value": "_findCollection find FID from d9c54956-106b-36e1-8018-91a8855f6316 where FMoBillNo={{生产订单号}}"
      }
    • FEntity: 子项明细数组,其中包含多个子项字段,如子项物料编码、用量类型、分子、分母等。

      {
      ...
      {
       ...
       {
         "field": "FMaterialID2",
         ...
         "value": "{{物料编号}}"
       },
       {
         ...
         {
           ...
           }
         }
       }
      }
  4. 其他请求参数

    除了主要的数据字段外,还需要配置一些其他参数,如业务对象表单Id、执行操作等:

    {
     ...
     {
       ...
       {
         ...
         {
           ...
           {
             ...
             }
           }
         }
       }
     }

数据写入示例

通过上述配置,我们可以构建出一个完整的数据请求,并通过HTTP POST方法发送到金蝶云星空API接口。以下是一个示例请求:

{
  "FormId":"PRD_PPBOM",
  ...
  {
    ...
    [
      {
        ...,
        [
          ...,
          { 
            ...,
            [
              ...,
              { 
                ... 
              } 
            ] 
          } 
        ]
      } 
    ]
  } 
}

实际应用

在实际应用中,通过轻易云数据集成平台,我们可以实时监控整个ETL过程,确保每个环节都清晰可见,从而提高业务透明度和效率。同时,通过全异步处理和多种异构系统支持,实现不同系统间的数据无缝对接。

综上所述,通过正确配置元数据和合理使用API接口,可以高效地将源平台的数据转换并写入到金蝶云星空,实现跨系统的数据集成和业务流程自动化。 钉钉与ERP系统接口开发配置

更多系统对接方案