利用轻易云进行ETL转换并写入金蝶云的完整流程

  • 轻易云集成顾问-黄宏棵

钉钉数据集成到金蝶云星空:修改下推的付款单③

在企业信息系统对接中,如何高效、可靠地实现不同平台间的数据流动,是成功实施数据集成项目的重要课题。本次案例分享聚焦于“修改下推的付款单③”的具体技术方案,通过使用轻易云数据集成平台,将钉钉的审批流程实例数据集成到金蝶云星空中,并实现稳定、高效的数据同步。

数据获取与处理 - 钉钉接口调用

首先,我们需要从钉钉系统获取审批流程实例的数据。通过调用topapi/processinstance/get API,可以精确取得所需的数据信息。该过程面临分页和限流问题,这要求我们设计一个稳健的抓取策略,采用定时任务机制可靠地从钉钉接口批量提取数据,避免漏单现象。

数据转换与映射 - 适应金蝶云星空结构

由于钉钉输出的数据格式与金蝶云星空所需格式不一致,在进行写入操作前,需要自定义一套转换逻辑。在此过程中,可视化的数据流设计工具显得尤为重要,它使得复杂的数据转化过程变得更加直观且便于管理。同时,为了确保输入到金蝶云系统中的每条记录均准确无误,我们还要开启实时监控功能,对整个处理过程进行追踪和日志记录。

批量写入 - 金蝶云星空API交互

最终,经过清洗、校验和转换后的数据将通过batchSave API批量写入到金蝶云星空里。在这个步骤中,高吞吐量的数据写入能力确保大量数据信息能快速进入目标系统,提高整体效率。此外,当遇到网络波动或意外错误时,还需具备完善的异常处理机制,包括错误重试及明确告警,保证业务连续性和平稳运行。 企业微信与ERP系统接口开发配置

调用钉钉接口topapi/processinstance/get获取并加工数据

在数据集成的生命周期中,调用源系统接口是关键的第一步。本文将详细探讨如何通过轻易云数据集成平台调用钉钉接口topapi/processinstance/get来获取并加工数据。

接口概述

钉钉接口topapi/processinstance/get用于获取指定业务流程实例的详细信息。该接口采用POST方法请求,主要参数包括业务ID(business_id),这是我们需要获取的单据编号。

元数据配置解析

根据提供的元数据配置:

{
  "api": "topapi/processinstance/get",
  "method": "POST",
  "number": "business_id",
  "id": "单据编号",
  "idCheck": true
}

我们可以得出以下关键信息:

  • API路径topapi/processinstance/get
  • 请求方法:POST
  • 业务ID字段:business_id
  • 单据编号字段:单据编号
  • ID校验:启用

数据请求与清洗

在实际操作中,首先需要构建请求体,并确保业务ID(business_id)的准确性和唯一性。以下是一个示例请求体:

{
  "process_instance_id": "your_business_id"
}

轻易云平台会根据元数据配置自动生成并发送该请求。返回的数据通常包含多个字段,我们需要对其进行清洗和筛选,以提取有用的信息。例如:

{
  "process_instance": {
    "title": "付款申请",
    "create_time": "2023-10-01T12:00:00Z",
    "finish_time": null,
    ...
  }
}

在这个过程中,我们可能只需要特定字段,如titlecreate_time等。因此,需要编写清洗规则来过滤和转换这些字段。

数据转换与写入

清洗后的数据需要进一步转换,以符合目标系统的要求。例如,将时间格式从UTC转换为本地时间,或者将字段名称映射到目标系统的字段名称。

假设目标系统要求的数据格式如下:

{
  "document_title": "付款申请",
  "created_at": "2023-10-01 20:00:00"
}

我们可以使用轻易云平台提供的数据转换功能,将原始数据进行相应的映射和格式化处理:

def transform_data(data):
    return {
        "document_title": data["process_instance"]["title"],
        "created_at": convert_utc_to_local(data["process_instance"]["create_time"])
    }

def convert_utc_to_local(utc_time):
    # 假设时区为东八区
    local_time = datetime.strptime(utc_time, "%Y-%m-%dT%H:%M:%SZ") + timedelta(hours=8)
    return local_time.strftime("%Y-%m-%d %H:%M:%S")

通过上述代码,可以将原始数据转换为目标系统所需的格式。

实践案例

假设我们需要集成一个付款单审批流程。首先,通过调用钉钉接口获取审批实例详情,然后对返回的数据进行清洗和转换,最后写入目标系统。

  1. 调用接口

    response = requests.post(
       url="https://oapi.dingtalk.com/topapi/processinstance/get",
       headers={"Content-Type": "application/json"},
       data=json.dumps({"process_instance_id": business_id})
    )
    data = response.json()
  2. 清洗数据

    cleaned_data = {
       "title": data["process_instance"]["title"],
       "create_time": data["process_instance"]["create_time"]
    }
  3. 转换数据

    transformed_data = transform_data(cleaned_data)
  4. 写入目标系统

    target_system.write(transformed_data)

通过上述步骤,可以实现从钉钉获取审批实例详情,并将其加工后写入目标系统的完整流程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 用友与MES系统接口开发配置

利用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口

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

数据请求与清洗

首先,我们需要从源系统中提取所需的数据。假设我们已经完成了数据请求与清洗阶段,接下来我们将重点放在数据转换与写入阶段。

数据转换

在数据转换过程中,我们需要根据目标平台的要求对数据进行格式化和处理。以下是元数据配置示例,它定义了如何将源数据字段映射到金蝶云星空API所需的字段:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "batchArraySave",
    "rows": 1,
    "rowsKey": "array"
  },
  "request": [
    {
      "field": "FID",
      "label": "单据编号",
      "type": "string",
      "describe": "单据编号",
      "value": "_findCollection find FID from b91e58dd-b358-385e-a6e9-58ae2b8c37ff where FBillNo={Number}"
    },
    {
      "field": "F_VAOJ_HKSX",
      "label": "货款属性",
      "type": "string",
      "describe": "单据类型",
      "value": "_function case '{{货款属性}}' when '成品' then 'CP' else 'FL' end"
    },
    {
      "label": "备注",
      "field": "FREMARK",
      "type": "string",
      "value": "{title}-{{收款人(公司名称)}}-{{备注}}"
    },
    {
      "label": "单据编号",
      "field": "FBillNo",
      "type": "string",
      "value": "{business_id}"
    }
  ],
  ...
}

数据写入

在完成数据转换后,我们需要将处理后的数据通过金蝶云星空API接口写入目标平台。以下是如何配置和调用API接口的详细步骤:

  1. 配置API接口

    • api: batchSave,表示批量保存操作。
    • method: POST,HTTP请求方法。
    • idCheck: true,表示检查ID是否存在。
    • operation: 定义具体操作方法和参数,如batchArraySave
  2. 映射字段

    • FID: 单据编号,通过查询获取。
    • F_VAOJ_HKSX: 货款属性,通过条件判断赋值。
    • FREMARK: 备注信息,组合多个字段生成。
    • FBillNo: 单据编号,直接从业务ID获取。
  3. 其他请求参数

    • FormId: 金蝶业务对象表单ID,例如AP_PAYBILL
    • Operation: 执行的操作类型,例如BatchSave
    • IsAutoSubmitAndAudit: 是否自动提交并审核,布尔值。
    • IsVerifyBaseDataField: 是否验证基础资料有效性,布尔值。
  4. 调用API: 使用配置好的元数据,通过轻易云平台的可视化界面或编程方式调用金蝶云星空的API接口,实现数据的批量保存。

{
  ...
  // 调用API时发送的JSON请求体
  {
    "_modelName":"AP_PAYBILL", 
    "_data":{
        "_array":[
            {
                "_key":"batchArraySave", 
                "_value":[
                    {
                        "_key":"FID", 
                        "_value":"123456"
                    }, 
                    {
                        "_key":"F_VAOJ_HKSX", 
                        "_value":"CP"
                    }, 
                    ...
                ]
            }
        ]
    }
  }
}

通过上述步骤,我们可以高效地将源平台的数据经过ETL转换后写入到金蝶云星空系统中,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,还确保了数据的一致性和准确性。 企业微信与ERP系统接口开发配置

更多系统对接方案