企业信息系统集成:钉钉到金蝶云星空的ETL实现

  • 轻易云集成顾问-叶威宏

钉钉数据集成到金蝶云星空:salary-新薪金单(非工资)V4.0方案分享

在企业信息系统的建设中,数据流动和处理的效率至关重要。如何实现钉钉与金蝶云星空之间的数据无缝对接,一直是各大企业面临的重要课题。本案例将聚焦于“salary-新薪金单(非工资)V4.0”方案,通过高效的数据集成技术,实现两大平台的数据互通。

首先,在这一实施过程中,我们利用了钉钉提供的数据获取API接口 v1.0/yida/processes/instances来定时可靠地抓取所需数据。为确保数据完整性和及时性,该接口具备高吞吐量能力,可以快速处理大量请求,避免漏单现象发生。此外,通过轻易云平台强大的实时监控和日志记录功能,每个步骤都可被清晰追踪,有助于及时发现并解决潜在问题。

接着,面对从钉钉获取的大量数据,我们需要将其批量写入到金蝶云星空。这部分工作通过调用金蝶云星空的 batchSave API 实现。同时,为应对不同系统间可能存在的数据格式差异,我们设计了灵活的自定义转换逻辑,使得每条数据都能准确映射到目标字段之中。

值得注意的是,在实际操作过程中,还涉及分页和限流等复杂情形。例如,当由于限制条件导致无法一次获取所有所需数据时,我们采用分页机制分多次抓取,并根据限流规则进行合理调度,以确保任务稳定运行。在这些环节中,各种异常状况也可以被智能化检测并触发重试机制,无需人工干预,大幅提升了系统对外部环境变化的适应能力。

通过以上技术手段,本案例成功构建了一套健全、高效且全面透明的数据集成体系。不仅满足了业务需求,还极大优化了资源配置,为后续拓展及升级奠定了坚实基础。 用友与MES系统接口开发配置

调用钉钉接口获取并加工数据的技术实现

在轻易云数据集成平台中,调用源系统接口是数据处理生命周期的第一步。本文将详细探讨如何通过调用钉钉接口v1.0/yida/processes/instances来获取并加工数据,以实现薪金单(非工资)V4.0的集成方案。

接口配置与请求参数

首先,我们需要配置接口和请求参数。根据元数据配置,接口为v1.0/yida/processes/instances,请求方法为POST。以下是请求参数的详细配置:

  • pageNumber: 分页页码,类型为字符串,值为{PAGINATION_START_PAGE}
  • pageSize: 分页大小,类型为字符串,值为{PAGINATION_PAGE_SIZE}
  • appType: 应用ID,类型为字符串,值为APP_WTSCMZ1WOOHGIM5N28BQ
  • systemToken: 应用秘钥,类型为字符串,值为IS866HB1DXJ8ODN3EXSVD750RBTK2X72R8MELL4
  • userId: 用户的userid,类型为字符串,值为16000443318138909
  • language: 语言,取值包括中文(zh_CN)和英文(en_US),默认值为中文。
  • formUuid: 表单ID,类型为字符串,值为FORM-0A966I81H10AX9NTBHCRX9JYRM0X2DS1D2MGLL
  • searchFieldJson: 条件字段,包括类型(selectField_lgn2qshb)和发起人(textField_lgn2qsh7)。
  • originatorId: 根据流程发起人工号查询。
  • createFromTimeGMT: 创建时间起始值,通过函数计算得到: _function DATE_FORMAT(DATE_ADD(NOW(),INTERVAL - 25 DAY),'%Y-%m-%d 00:00:00')
  • createToTimeGMT: 创建时间终止值,为当前时间: {{CURRENT_TIME|datetime}}
  • modifiedFromTimeGMT: 修改时间起始值。
  • modifiedToTimeGMT: 修改时间终止值。
  • taskId: 任务ID。
  • instanceStatus: 实例状态,为已完成状态: COMPLETED
  • approvedResult: 流程审批结果,为同意: agree

请求示例

基于上述配置,请求体可以构建如下:

{
    "pageNumber": "{PAGINATION_START_PAGE}",
    "pageSize": "{PAGINATION_PAGE_SIZE}",
    "appType": "APP_WTSCMZ1WOOHGIM5N28BQ",
    "systemToken": "IS866HB1DXJ8ODN3EXSVD750RBTK2X72R8MELL4",
    "userId": "16000443318138909",
    "language": "zh_CN",
    "formUuid": "FORM-0A966I81H10AX9NTBHCRX9JYRM0X2DS1D2MGLL",
    "searchFieldJson": {
        "selectField_lgn2qshb": "",
        "textField_lgn2qsh7": ""
    },
    "originatorId": "",
    "createFromTimeGMT": "_function DATE_FORMAT(DATE_ADD(NOW(),INTERVAL - 25 DAY),'%Y-%m-%d 00:00:00')",
    "createToTimeGMT": "{{CURRENT_TIME|datetime}}",
    "modifiedFromTimeGMT": "",
    "modifiedToTimeGMT": "",
    "taskId": "",
    "instanceStatus": "COMPLETED",
    "approvedResult": "agree"
}

数据清洗与转换

在获取到原始数据后,需要对其进行清洗与转换,以便后续的数据处理和写入。以下是一些常见的数据清洗与转换操作:

  1. 字段映射与重命名: 将原始数据中的字段映射到目标系统所需的字段,并进行必要的重命名。例如,将钉钉返回的数据中的 processInstanceId 映射到目标系统中的 id 字段。

  2. 数据格式转换: 对日期、金额等字段进行格式转换。例如,将日期格式从 yyyy-MM-dd HH:mm:ss 转换为目标系统所需的格式。

  3. 数据过滤与筛选: 根据业务需求,对数据进行过滤和筛选。例如,只保留审批结果为“同意”的记录。

  4. 合并与拆分字段: 根据业务逻辑,将多个字段合并成一个字段或将一个字段拆分成多个字段。例如,将地址信息中的省、市、区合并成一个完整地址。

实例代码

以下是一个简单的数据清洗与转换示例代码:

import json
from datetime import datetime, timedelta

def clean_and_transform(data):
    cleaned_data = []

    for record in data:
        transformed_record = {
            'id': record['processInstanceId'],
            'title': record['title'],
            'created_at': datetime.strptime(record['createFromTimeGMT'], '%Y-%m-%d %H:%M:%S').strftime('%Y/%m/%d'),
            'status': record['instanceStatus'],
            'approval_result': record['approvedResult']
        }

        if transformed_record['approval_result'] == 'agree':
            cleaned_data.append(transformed_record)

    return cleaned_data

# 示例调用
raw_data = [
    {
        'processInstanceId': '12345',
        'title': '薪金单申请',
        'createFromTimeGMT': '2023-09-01 12:00:00',
        'instanceStatus': 'COMPLETED',
        'approvedResult': 'agree'
    },
    # 更多记录...
]

cleaned_data = clean_and_transform(raw_data)
print(json.dumps(cleaned_data, indent=4, ensure_ascii=False))

通过上述步骤,我们可以高效地调用钉钉接口获取所需数据,并对其进行清洗和转换,为后续的数据处理打下坚实基础。这一过程不仅提升了数据处理的效率,还确保了数据的一致性和准确性。 钉钉与WMS系统接口开发配置

数据集成与ETL转换:将源数据写入金蝶云星空API接口

在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何通过轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为金蝶云星空API接口所能够接收的格式,最终写入目标平台。

1. 配置API接口元数据

首先,我们需要配置金蝶云星空API接口的元数据。以下是一个典型的配置示例:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "batchArraySave",
    "rows": 1,
    "rowsKey": "array"
  },
  "request": [
    {"field":"FBillNo","label":"单据编号","type":"string","value":"{serialNumberField_lgovkejx}(FKD)"},
    {"field":"FCURRENCYID","label":"币别","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"},
    {"field":"FDATE","label":"业务日期","type":"string","value":"_function FROM_UNIXTIME(  ( {dateField_lgn2qsju} \/ 1000 )  ,'%Y-%m-%d' )"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"FKDLX03_SYS"},
    {"field":"FCONTACTUNITTYPE","label":"往来单位类型","type":"string","value":"BD_Empinfo"},
    {"field":"FCONTACTUNIT","label":"往来单位","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"BDS001"},
    {"field":"FRECTUNITTYPE","label":"收款单位类型","type":"string","value":"BD_Empinfo"},
    {"field":"FRECTUNIT","label":"收款单位","type":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","parser":{"name":"","params":""},"value":""}
  ],
  "otherRequest":[
    {
      "field" : "FormId",
      "label" : "业务对象表单Id",
      "type" : "string",
      "describe" : "必须填写金蝶的表单ID如:PUR_PurchaseOrder",
      "value" : ""
   },
   {
     "field" : "",
     "label" : "",
     "type" : "",
     ""
   }
 ]
}

2. 数据提取与清洗

在ETL过程中,首先需要从源系统中提取数据,并进行必要的清洗和预处理。例如,将时间戳转换为标准日期格式:

_function FROM_UNIXTIME( ( {dateField_lgn2qsju} / 1000 ), '%Y-%m-%d' )

3. 数据转换

接下来,我们需要将清洗后的数据按照目标系统的要求进行格式转换。这里使用了多个字段和解析器,例如:

  • ConvertObjectParser:用于将某些字段值转换为目标系统所需的特定格式。
  • FBillNo:单据编号,使用序列号字段生成。
  • FCURRENCYID:币别,固定值PRE001
  • FBillTypeID:单据类型,固定值FKDLX03_SYS

4. 数据写入

最后,将转换后的数据通过API接口写入金蝶云星空系统。以下是一个完整的数据请求示例:

{
  "FormId": "AP_PAYBILL",
  "Operation": "BatchSave",
  "IsAutoSubmitAndAudit": true,
  "IsVerifyBaseDataField": false,
  "Model":{
      ...
      // 此处省略具体字段配置
      ...
      }
}

通过上述步骤,我们实现了从源系统到目标系统的数据无缝对接。每个环节都经过严格的验证和处理,确保数据准确无误地传输到金蝶云星空平台。

注意事项

在实际操作中,需要特别注意以下几点:

  1. 字段映射:确保所有字段都正确映射到目标系统中的相应字段。
  2. 数据验证:在写入前进行必要的数据验证,以避免错误。
  3. 异常处理:设置适当的异常处理机制,确保在出现问题时能够及时发现并解决。

通过以上步骤和注意事项,可以有效地完成从源平台到金蝶云星空API接口的数据集成与ETL转换过程。 电商OMS与WMS系统接口开发配置

更多系统对接方案