轻易云平台实现金蝶云星空数据转换与写入技术详解

  • 轻易云集成顾问-卢剑航

金蝶云星空补单审核出库单集成方案解析

在企业数据处理系统中,确保订单信息的准确和及时流转至关重要。本文将介绍一个实际的系统对接案例:如何通过轻易云数据集成平台,实现金蝶云星空与金蝶云星空之间的数据同步,具体任务为补单审核出库单。

我们使用executeBillQuery接口从源金蝶云星空获取未审订单数据,并利用Audit接口将验证后的订单写入目标金蝶云星空。这一过程不仅需要高效的数据传输,还需保证数据质量与一致性。

  1. 高吞吐量的数据写入能力
    为了应对大量订单数据快速写入到目标金蝶云星空,我们优化了批量数据处理方式。在配置中采用分块上传策略,将大批量的数据拆分为多个小批次,从而降低每次请求的负荷,同时提高整体效率。

  2. 集中监控和告警系统
    整个流程中的实时监控功能,可全面跟踪各个节点上的任务状态及性能。一旦检测到异常(例如网络延迟或API响应错误),即刻触发告警机制并进行自动恢复操作。这极大地提升了任务执行的可靠性和稳定性。

  3. 定制化数据映射
    由于源与目的系统可能存在着不同的数据结构,从而增加了集成复杂度。通过平台提供的自定义转换功能,我们可以根据业务需求灵活调整字段映射关系,确保两端系统能顺利进行无缝衔接。

  4. 分页与限流处理
    针对executeBillQuery接口返回的大量数据结果,我们采用分页技术逐步提取。而在写入Audit接口时则考虑到API调用频率限制,通过限流控制避免过多请求导致服务阻塞或降级——这些措施都有效保障了服务的持续可用性以及用户体验的一致性。

  5. 异常处理及重试机制
    在实际运行过程中,当出现如网络波动等不可预见的问题时,一套完善的错误捕获与重试策略尤为关键。本方案设计了基于退避算法(Backoff Algorithm)的自动重试机制,对临时失败进行有序排队重新提交,以最大程度减少人工干预,提高任务完成率。

以上就是本案例实施过程中一些关键技术要点概述。接下来我们将详细讲解每一步具体实现的方法和注意事项,为您呈现一个完整且高效的信息化解决方案。 用友与CRM系统接口开发配置

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

在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取和加工数据。

接口配置与请求参数

首先,我们需要配置调用金蝶云星空接口的元数据。以下是关键的元数据配置:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FBillNo",
  "pagination": {
    "pageSize": 500
  },
  "request": [
    {"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","describe":"单据类型","value":"FBillTypeID.FNumber"},
    {"field":"FID","label":"FID","type":"string","describe":"单据类型","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
    {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"FDate"},
    {"field":"FSaleOrgId_FNumber","label":"销售组织","type":"string","describe":"组织","value":"FSaleOrgId.FNumber"},
    {"field":"FCustomerID_FNumber","label":"客户","type":"string","describe":"基础资料","value":"FCustomerID.FNumber"},
    {"field":"FStockOrgId_FNumber","label":"发货组织","type":"string","describe":"组织","value":"FStockOrgId.FNumber"},
    {"field":"FApproveDate","label":"审核时间","type":"string","describe":"长日期","value":"FApproveDate"}
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "2000"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": ""},
    {"field": "TopRowCount", "label": "返回总行数", "type": "int", "describe": ""},
    {"field": "FilterString", 
     "label": "过滤条件", 
     "type": "string", 
     "describe": "", 
     "value": 
       `FDOCUMENTSTATUS<>'C' and FBillTypeID.fnumber='XSCKD07_SYS'`
    },
    {"field": 
      `FieldKeys`, 
      `label`: `需查询的字段key集合`, 
      `type`: `array`, 
      `describe`: `金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber`, 
      `parser`: {
        `name`: `ArrayToString`, 
        `params`: ","
      }
    },
    {"field": 
      `FormId`, 
      `label`: `业务对象表单Id`, 
      `type`: `string`, 
      `describe`: `必须填写金蝶的表单ID如:PUR_PurchaseOrder`, 
      `value`: `SAL_OUTSTOCK`
    }
  ]
}

请求结构解析

  1. API与方法

    • API: "executeBillQuery"
    • Method: "POST"
  2. 分页设置

    • 每页大小:"pageSize" 设置为500。
  3. 请求字段

    • 包含了多个字段,如单据类型、FID、单据编号、日期等。这些字段对应于金蝶系统中的具体数据项。
  4. 其他请求参数

    • 最大行数:"Limit" 设置为2000。
    • 开始行索引:"StartRow"
    • 返回总行数:"TopRowCount"
    • 过滤条件:"FilterString" 设置为过滤未关闭状态且单据类型为“XSCKD07_SYS”的记录。
    • 查询字段集合:"FieldKeys",使用逗号分隔多个字段键值。
    • 表单ID:"FormId" 设置为“SAL_OUTSTOCK”。

实际调用示例

以下是一个实际调用该接口的示例代码:

import requests
import json

url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}

payload = {
  'FormId': 'SAL_OUTSTOCK',
  'FieldKeys': 'FBillTypeID.FNumber,FID,FBillNo,FDate,FSaleOrgId.FNumber,FCustomerID.FNumber,FStockOrgId.FNumber,FApproveDate',
  'FilterString': 'FDOCUMENTSTATUS<>\'C\' and FBillTypeID.fnumber=\'XSCKD07_SYS\'',
  'Limit': '2000',
}

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

if response.status_code == 200:
    data = response.json()
    # 数据处理逻辑
else:
    print(f'Error: {response.status_code}')

数据处理与清洗

在获取到数据后,需要对其进行清洗和转换,以便后续处理。以下是一些常见的数据清洗步骤:

  1. 去除空值:移除或填充缺失的数据项。
  2. 格式转换:将日期、数字等字段转换为统一格式。
  3. 字段映射:根据业务需求,将字段映射到目标系统中的相应字段。

例如,假设我们需要将日期格式从字符串转换为标准日期对象,可以使用如下代码:

from datetime import datetime

for record in data:
    record['FDate'] = datetime.strptime(record['FDate'], '%Y-%m-%d')

通过上述步骤,我们可以确保从金蝶云星空获取的数据符合目标系统的要求,并且能够顺利进行后续的数据写入和处理。

总结来说,通过轻易云数据集成平台调用金蝶云星空接口executeBillQuery,我们能够高效地获取并加工所需的数据,为后续的数据集成工作打下坚实基础。 如何开发金蝶云星空API接口

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

在数据集成过程中,将源平台的数据转换为目标平台能够接收的格式是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,将已集成的源数据进行ETL转换,并通过金蝶云星空API接口将数据写入目标平台。

元数据配置解析

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

{
  "api": "Audit",
  "method": "POST",
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "idCheck": true,
  "request": [
    {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"SAL_OUTSTOCK"},
    {"field":"Numbers","label":"编码集合","type":"string"},
    {"field":"Ids","label":"id集合","type":"string","value":"{FID}"},
    {"field":"InterationFlags","label":"交互标志集合","type":"string","describe":"字符串类型,分号分隔,格式:\"flag1;flag2;...\"(非必录) 例如(允许负库存标识:STK_InvCheckResult)","value":"STK_InvCheckResult"},
    {"field":"IgnoreInterationFlag","label":"是否允许忽略交互","type":"string","describe":"布尔类型,默认true(非必录)","value":"true"},
    {"field":"NetworkCtrl","label":"是否启用网控","type":"string","describe":"布尔类型,默认false(非必录)","value":"false"},
    {"field":"IsVerifyProcInst","label":"检验单据关联运行","type":"string","describe":"是否检验单据关联运行中的工作流实例,布尔类型,默认false(非必录)","value":"false"}
  ]
}

数据请求与清洗

在进行ETL转换之前,我们需要确保从源系统获取的数据已经过清洗和验证。这一步骤可以通过轻易云数据集成平台的可视化界面来完成,确保每个字段的数据都符合目标系统的要求。

数据转换与写入

接下来,我们进入关键步骤:将清洗后的数据转换为金蝶云星空API接口所需的格式,并通过API写入目标系统。

  1. 设置API请求参数

    • FormId: 固定值SAL_OUTSTOCK,表示业务对象表单ID。
    • Numbers: 编码集合,可以是多个编码组成的字符串。
    • Ids: ID集合,这里使用占位符{FID},将在实际操作中替换为具体的ID值。
    • InterationFlags: 设置为STK_InvCheckResult,表示允许负库存标识。
    • IgnoreInterationFlag: 设置为true,表示允许忽略交互。
    • NetworkCtrl: 设置为false,表示不启用网控。
    • IsVerifyProcInst: 设置为false,表示不检验单据关联运行中的工作流实例。
  2. 构建请求体: 根据上述参数,我们构建一个符合金蝶云星空API要求的请求体。例如:

    {
     "FormId": "SAL_OUTSTOCK",
     "Numbers": "1001,1002,1003",
     "Ids": "{FID}",
     "InterationFlags": "STK_InvCheckResult",
     "IgnoreInterationFlag": true,
     "NetworkCtrl": false,
     "IsVerifyProcInst": false
    }
  3. 发送API请求: 使用POST方法,将构建好的请求体发送到金蝶云星空API。轻易云数据集成平台提供了内置的HTTP客户端,可以方便地发送这种请求并处理响应。

  4. 处理响应: 在收到响应后,需要检查返回结果是否成功。如果失败,需要根据返回的信息进行错误处理和日志记录。

实际案例应用

假设我们有一组补单审核出库单的数据需要写入金蝶云星空系统。以下是具体操作步骤:

  1. 获取源数据:从源系统中提取补单审核出库单的数据,例如订单编号、ID等信息。

  2. 清洗与验证:确保所有字段的数据格式正确,无缺失或错误信息。

  3. 构建请求体:根据元数据配置,将提取到的数据填充到相应字段中。例如:

    {
     "FormId": "SAL_OUTSTOCK",
     "Numbers": "ORD123,ORD124,ORD125",
     "Ids": "{FID}",
     "InterationFlags": "STK_InvCheckResult",
     "IgnoreInterationFlag": true,
     "NetworkCtrl": false,
     "IsVerifyProcInst": false
    }
  4. 发送请求并处理响应:使用轻易云内置HTTP客户端发送POST请求,并根据响应结果进行相应处理。

通过上述步骤,我们实现了从源系统到金蝶云星空系统的数据无缝对接。这不仅提高了业务流程的效率,也保证了数据的一致性和准确性。 如何开发企业微信API接口

更多系统对接方案