通过ETL转换将数据写入金蝶云星空API的技术实践

  • 轻易云集成顾问-贺强

泛微OA-Http到金蝶云星空的数据集成案例:SD001-生产订单审批

在复杂的企业业务流程中,不同系统之间的数据对接和集成往往是技术团队面临的一大挑战。本次分享的案例是一个特别具有代表性的项目,涉及将泛微OA-Http系统中的生产订单审批数据,集成至金蝶云星空的采购订单模块。方案名称为“SD001-生产订单审批 泛微=>金蝶采购订单--开发中,供应商待oa修改为隐藏编号”。

API接口及数据处理详解

获取泛微OA-Http数据

首先,我们通过调用泛微OA-Http提供的API接口/api/workflow/paService/getWorkflowRequest来获取生产订单相关的数据。在这个过程中,我们面临了两个主要问题,一是如何确保高效、准确地抓取所需数据;二是如何应对API接口返回结果中的分页和限流限制。

为了保证不漏单并实时获取最新数据信息,我们实现了一套定时可靠调度机制,通过配置调度策略,每隔固定时间段自动调用该接口拉取新增或变更的数据。此外,为了解决分页和限流的问题,引入了异常处理与错误重试机制,在超出请求限额或者发生网络故障时能够自动进行重新尝试。

数据转换与格式调整

从泛微OA获取到原始数据后,需要进行一定程度的格式转换,以适应金蝶云星空API batchSave 的要求。在此步骤中,自定义了数据转换逻辑,对字段名、类型等进行了映射。同时,还解决了两种系统间存在的数据结构差异,包括日期格式、数值精度等细节问题。

批量写入至金蝶云星空

在完成必要的数据清洗和转换后,将其批量写入到金蝶云星空。利用平台本身支持高吞吐量、高并发特性,使得大量经过处理的数据能够迅速、安全地传输至目标系统,从而提高整体操作效率。在写入过程中,通过集中监控和告警系统实时跟踪任务状态,并根据可能出现的异常状况(如主键冲突、字段缺失)及时调整策略。例如,当遇到必须唯一但重复出现的记录时,可以选择更新已有记录而不是直接丢弃,以确保所有有效信息都能顺利整合进新环境中。

这只是整个方案设计与实施过程中的一部分,但已经可以看到其中关键环节的重要性,如精准有效地读取源头数据、自定义灵活转译规则以及保证高速稳定的大规模写入等。而下一步,将详细介绍每个部分具体实现的方法与代码示例,以及我们在实践中总结出的最佳经验和技巧。 轻易云数据集成平台金蝶集成接口配置

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

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

接口调用配置

首先,我们需要配置元数据以便正确调用泛微OA的API接口。以下是具体的元数据配置:

{
  "api": "/api/workflow/paService/getWorkflowRequest",
  "effect": "QUERY",
  "method": "GET",
  "number": "requestId",
  "id": "requestId",
  "name": "id",
  "idCheck": true,
  "request": [
    {"field": "workflowId", "label": "e9流程id", "type": "string", "value": "407"},
    {"field": "workflowIdList", "label": "workflowIdList中间方案ID", "type": "string", "value":"8183a586-bdfb-3e93-8573-d5e81803c5ff"}
  ],
  "autoFillResponse": true,
  "condition_bk":[
    [{"field":"currentNodeName","logic":"like","value":"归档"},{"field":"detail_0.xm","logic":"like","value":"1.wafer"}]
  ],
  "condition":[
    [{"field":"detail_0.xm","logic":"like","value":"wafer"}]
  ]
}

配置解析

  1. API路径与请求方式

    • api: /api/workflow/paService/getWorkflowRequest
    • method: GET

    此配置表明我们将通过GET请求方式访问指定的API路径。

  2. 请求参数

    • workflowId: 固定值407
    • workflowIdList: 固定值8183a586-bdfb-3e93-8573-d5e81803c5ff

    请求参数用于指定特定的工作流ID和工作流ID列表。

  3. 响应自动填充

    • autoFillResponse: true

    表示平台将自动处理并填充响应数据,简化后续的数据处理步骤。

  4. 条件过滤

    • condition_bk:
      [
      {"field":"currentNodeName","logic":"like","value":"归档"},
      {"field":"detail_0.xm","logic":"like","value":"1.wafer"}
      ]
    • condition:
      [
      {"field":"detail_0.xm","logic":"like","value":"wafer"}
      ]

    条件过滤用于筛选满足特定条件的数据。例如,condition_bk用于备份条件,筛选当前节点名称包含“归档”且细节字段包含“1.wafer”的记录;而condition则用于筛选细节字段包含“wafer”的记录。

数据获取与加工

在配置好元数据后,我们可以通过轻易云平台发起API请求,并根据返回的数据进行进一步处理。以下是一个典型的数据处理流程:

  1. 发起API请求: 使用配置好的元数据,通过轻易云平台发起GET请求,获取工作流相关的数据。

  2. 响应数据解析: 平台会自动填充响应数据,根据预定义的字段进行解析。例如,提取出每个工作流请求的详细信息,包括但不限于:请求ID、当前节点名称、细节字段等。

  3. 条件过滤与清洗: 根据配置的条件过滤器,对返回的数据进行筛选和清洗。例如,仅保留当前节点名称包含“归档”且细节字段包含“1.wafer”的记录。这一步骤确保了我们只处理符合业务需求的数据。

  4. 数据转换与写入: 清洗后的数据可以根据业务需求进行转换,并写入目标系统(如金蝶采购订单系统)。这一过程通常涉及字段映射、格式转换等操作,以确保数据在不同系统间的无缝对接。

实际应用案例

假设我们需要从泛微OA系统中获取生产订单审批相关的数据,并将其转换为金蝶采购订单。具体步骤如下:

  1. 调用API获取原始数据: 发起GET请求,获取所有符合条件的生产订单审批记录。

  2. 解析与清洗: 对返回的数据进行解析,提取出关键字段,如订单编号、供应商信息、物料详情等。同时,根据预定义的条件进行清洗,仅保留符合要求的记录。

  3. 转换与写入金蝶系统: 将清洗后的生产订单审批记录转换为金蝶采购订单所需的格式,并通过相应接口写入金蝶系统,实现两个异构系统间的数据集成。

通过上述步骤,我们可以高效地实现泛微OA与金蝶系统间的数据集成,确保业务流程的顺畅运行。 打通企业微信数据接口

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

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台——金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是详细的技术实现过程。

1. 数据提取与转换

首先,我们从源系统中提取需要的数据。假设我们从泛微OA系统中提取生产订单审批数据,这些数据包括单据编号、采购日期、采购组织、供应商、业务类型、审核人以及明细信息等。

2. 配置元数据

根据金蝶云星空API接口的要求,我们需要配置相应的元数据,以便将提取的数据转换为目标平台能够识别和处理的格式。以下是关键字段及其配置:

  • 单据类型(FBillTypeID):标准采购订单,固定值为CGDD01_SYS
  • 单据编号(FBillNo):使用泛微OA系统中的工作流主表信息字段{{workflowMainTableInfo.lcbh}}
  • 采购日期(FDate):使用泛微OA系统中的申请日期字段{{workflowMainTableInfo.sqrq}}
  • 采购组织(FPurchaseOrgId):使用泛微OA系统中的工作流主表信息字段{{workflowMainTableInfo.wszt}},并通过ConvertObjectParser解析为金蝶系统所需格式。
  • 供应商(FSupplierId):使用泛微OA系统中的供应商编号字段{{workflowMainTableInfo.gysbh}},并通过ConvertObjectParser解析。
  • 业务类型(FBusinessType):固定值为标准采购类型CG
  • 审核人(FApproverId):通过查询集合获取审核人ID,并通过ConvertObjectParser解析。

3. 明细信息配置

对于明细信息,我们需要逐条处理每个明细行的数据:

  • 物料编码(FMaterialId):使用明细行中的物料编码字段{{detail_0.wlbh}},并通过ConvertObjectParser解析。
  • 采购数量(FQty):使用明细行中的数量字段{{detail_0.sl}}
  • 含税单价(FTaxPrice):使用明细行中的单价字段{{detail_0.dj}}
  • 价税合计(FAllAmount):使用明细行中的价格字段{{detail_0.jg}}
  • 交货日期(FDeliveryDate):使用工作流主表信息中的发货时间字段 {{workflowMainTableInfo.fhsj}}
  • 供应商单号(F_Halo_Text):使用工作流主表信息中的订单号 {{workflowMainTableInfo.ddh_FV}}

4. 财务信息配置

财务信息部分也需要进行相应的配置:

  • 结算币别(FSettleCurrId):通过查询集合获取币别编号,并通过 ConvertObjectParser解析。
  • 定价时点(FPriceTimePoint):固定值为1。
  • 汇率类型(FExchangeTypeId):固定值为 HLTX01_SYS,并通过 ConvertObjectParser解析。

5. API请求配置

最后,我们需要将所有配置好的数据打包成一个API请求,并发送到金蝶云星空的接口进行保存。以下是完整的API请求配置示例:

{
    "api": "batchSave",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "request": [
        {
            "field": "FBillTypeID",
            "label": "单据类型",
            "type": "string",
            "describe": "单据类型\n标准采购订单:CGDD01 SYS\n标准委外订单:CGDD02 SYS\n直运采购订单:CGDD03 SYS\n资产采购订单:CGDD04 SYS\n费用采购订单:CGDD05 SYS\n补料采购订单:CGDD06 SYS\nVMI采购订单:CGDD07 SYS\n现购订单:CGDD08 SYS\n分销购销采购订单:CGDD09 SYS",
            "parser": {
                "name": "ConvertObjectParser",
                "params": "FNumber"
            },
            "value": "CGDD01_SYS"
        },
        {
            "field": "FBillNo",
            "label": "单据编号",
            ...
        },
        ...
    ],
    ...
}

在这个过程中,我们利用了轻易云数据集成平台提供的全异步、多种异构系统支持以及全透明可视化操作界面,使得整个ETL过程变得高效且易于监控。 电商OMS与ERP系统接口开发配置

更多系统对接方案