轻易云数据集成平台在数据转换与写入中的应用

  • 轻易云集成顾问-吕修远

泛微OA与金蝶云星空的高效数据集成实践:FD004方案解析

在此次案例中,我们将分享一个成功的数据集成实例,即如何通过轻易云平台,将泛微OA-Http系统中的费用报销单据无缝对接到金蝶云星空,并生成对应的其他应付单。该方案命名为“FD004-对个费用报销 泛微=>金蝶其他应付单--501”,实现了企业跨系统的数据流动、处理和同步。

数据获取与接口调用

首先,我们需要从泛微OA-Http系统中抓取相关费用报销数据,使用其提供的API接口/api/workflow/paService/getWorkflowRequest进行定时可靠的数据获取。为保证不漏抓任何一条记录,同时考虑到分页和限流问题,采用批量请求策略是关键之一。

数据转换与映射

由于泛微OA-Http与金蝶云星空之间存在显著的API结构差异,需要自定义数据转换逻辑来适配各自特定业务需求。例如,对获取到的原始JSON数据,需要经过格式调整和字段映射,以符合金蝶云星空写入格式要求。

高吞吐量数据写入

然后,通过轻易云平台提供的大量并行处理能力,将预处理后的费用报销数据批量快速地写入至金蝶云星空。这里我们利用了其专用API batchSave 进行大批次高效写入,从而确保即使在大量交易数据情况下,也能保持较高的数据同步时效性。

集中监控与异常处理

整个过程中,集中监控和告警机制发挥了关键作用。从任务状态实时跟踪,到性能指标监测,再到异常事件自动告警,使得运维团队能够及时发现并解决潜在问题。此外,错误重试机制被应用于各种边缘情况,如网络故障或服务端未响应等情形下,通过多次尝试最大程度降低因意外导致的数据损失风险。

这仅是本案例的一部分展开内容。在后续章节里,我们将进一步探讨具体流程、技术细节及最佳实践方法,包括如何打通泛微OA—> Http API 与 金蝶云星空—> batchSave API 之间复杂却必要的信息交换环节。 泛微OA与ERP系统接口开发配置

调用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest获取并加工数据

在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的第一步。本文将深入探讨如何通过泛微OA-Http接口/api/workflow/paService/getWorkflowRequest获取并加工数据,以实现对个费用报销数据的集成。

接口调用与元数据配置

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

{
  "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": "501"},
    {"field": "workflowIdList", "label": "workflowIdList中间方案ID", "type": "string", 
     "value":"2356388e-8c49-35b3-bb7e-1eca1a8617d5"}
  ],
  "autoFillResponse": true,
  "condition_bk":[
    [{"field":"workflowMainTableInfo.bxlx","logic":"eqv2","value":"实报实销"}],
    [{"field":"workflowMainTableInfo.bxlx","logic":"eqv2","value":"Actual Expense"}]
  ],
  "condition":[
    [{"field":"workflowMainTableInfo.bxlx","logic":"eqv2","value":"实报实销"}],
    [{"field":"workflowMainTableInfo.bxlx","logic":"eqv2","value":"Actual Expense"}]
  ]
}

API接口调用

通过上述配置,我们可以确定API的调用方式为GET请求,目标是获取特定workflowIdworkflowIdList的数据。具体步骤如下:

  1. 构建请求URL:根据元数据中的API路径和请求参数,构建完整的URL。

    base_url = 'http://example.com/api/workflow/paService/getWorkflowRequest'
    params = {
       'workflowId': '501',
       'workflowIdList': '2356388e-8c49-35b3-bb7e-1eca1a8617d5'
    }
  2. 发送HTTP GET请求

    import requests
    
    response = requests.get(base_url, params=params)
    if response.status_code == 200:
       data = response.json()
       # 后续处理逻辑
    else:
       print(f"Error: {response.status_code}")

数据过滤与清洗

根据元数据配置中的条件,我们需要对返回的数据进行过滤和清洗。条件包括:

  • workflowMainTableInfo.bxlx字段值为“实报实销”或“Actual Expense”。

假设返回的数据结构如下:

{
  "data": [
    {
      "requestId": "12345",
      ...
      "workflowMainTableInfo": {
        ...
        "bxlx": "实报实销"
      }
    },
    ...
  ]
}

我们可以使用以下代码进行过滤:

filtered_data = [item for item in data['data'] if item['workflowMainTableInfo']['bxlx'] in ['实报实销', 'Actual Expense']]

数据转换与写入

在完成数据过滤后,需要将数据转换为目标系统所需的格式,并写入到目标系统。此过程涉及到字段映射和格式转换。

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

{
  "expenseReports": [
    {
      ...
      // 转换后的字段
    }
  ]
}

可以使用以下代码进行转换:

expense_reports = []
for item in filtered_data:
    expense_report = {
        'id': item['requestId'],
        ...
        # 更多字段映射
    }
    expense_reports.append(expense_report)

# 将转换后的数据写入目标系统(例如,通过另一个API)
target_api_url = 'http://example.com/api/targetSystem'
response = requests.post(target_api_url, json={'expenseReports': expense_reports})
if response.status_code == 200:
    print("Data successfully written to target system.")
else:
    print(f"Error: {response.status_code}")

通过以上步骤,我们实现了从泛微OA系统获取费用报销数据,并经过清洗、转换后写入到目标系统的全过程。这不仅展示了轻易云平台在处理异构系统集成中的强大能力,也提供了一个详细的技术案例供参考。 电商OMS与ERP系统接口开发配置

使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口

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

API接口配置与元数据解析

在本案例中,我们将使用金蝶云星空的batchSave API接口来实现数据写入。以下是该接口的元数据配置:

{
    "api": "batchSave",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "operation": {
        "rowsKey": "array",
        "rows": 1,
        "method": "batchArraySave"
    },
    "request": [
        {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型\n其他应付单-QTYFD01_SYS\n费用报销其他应付单-QTYFD02 SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTYFD01_SYS"},
        {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号"},
        {"field":"FDATE","label":"业务日期","type":"string","describe":"业务日期","value":"{{workflowMainTableInfo.sqrq}}"},
        {"field":"FCONTACTUNITTYPE","label":"往来单位类型","type":"string","describe":"往来单位类型\n部门-BD_Department\n员工-BD_Empinfo\n其他往来单位-FIN-OTHERS\n供应商-BD-Supplier\n客户-BD-Customer","value":"BD_Empinfo"},
        {"field":"FCONTACTUNIT","label":"往来单位","type":"string","describe":"往来单位","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find workcode from c0198816-9822-38f3-b995-fc700a9925e7 where id={{workflowMainTableInfo.skmc_FV}}"},
        {"field":"FCURRENCYID","label":"币别","type":"string","describe":"币别","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find FNumber from 5740d4e3-ebe8-3548-9635-f35e1fdc983b where FCODE={{workflowMainTableInfo.bberp}}"},
        {"field":"FSETTLEORGID","label":"结算组织","type":"string","describe":"结算组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{workflowMainTableInfo.sqgs}}", "mapping":{"target": "65af7024d24198113013f21e", "direction": "positive"}},
        {"field": "FPURCHASEORGID", "label": "采购组织", "type": "string", "describe": "采购组织", "parser":{"name": "ConvertObjectParser", "params": "FNumber"},  "value": "{{workflowMainTableInfo.sqgs}}",  "mapping":{"target": 65af7024d24198113013f21e,  direction: positive}},
        {"field": FPAYORGID, label: 付款组织, type: string, describe: 付款组织, parser:{name: ConvertObjectParser, params: FNumber}, value: {{workflowMainTableInfo.sqgs}}, mapping:{target: 65af7024d24198113013f21e, direction: positive}},
        {"field": FDEPARTMENTID, label: 申请部门, type: string, value: {{workflowMainTableInfo.sqbm_FV}}, parser:{name: ConvertObjectParser, params: FNumber}},
        {"field": FPURCHASEDEPTID, label: 采购部门, type: string, value: {{workflowMainTableInfo.sqbm_FV}}, parser:{name: ConvertObjectParser, params: FNumber}},
        {"field": FRemarks, label: 备注, type:string , describe:"备注" , value:"{{workflowMainTableInfo.bzsm}}"},
        {"field" : FMAINBOOKSTDCURRID,label : 本位币,type : string , describe : 本位币 , parser : { name : ConvertObjectParser , params : FNumber }, value : {{ workflowMainTableInfo . sqgs }} , mapping : { direction : positive , target : 6583e449fa47d430a92d274a }},
        {"field" : FEXCHANGETYPE,label : 汇率类型,type : string , describe : 汇率类型 , parser : { name : ConvertObjectParser , params : FNumber }, value :"HLTX01_SYS"},
        {"field" :"FACCNTTIMEJUDGETIME" ,"label" :"到期日计算日期" ,"type" :"string" ,"describe" :"到期日计算日期" ,"value" :"{{ workflowMainTableInfo . sqrq }}"},
        {"field" :"FBUSINESSTYPE" ,"label" :"业务类型" ,"type" :"string" ,"describe" :"业务类型" ,"value" :"OTHER"},
        {"field" :"F_WDW_OANO ","label ":"自定义单号 ","type ":"string ","value ":"{{ workflowMainTableInfo . lcbh }}"},
         {" field ":" F_XDW_PAYMENT "," label ":"预付款 "," type ":" string "," value ":"{{ workflowMainTableInfo . cjzk }}"}
         ],
         otherRequest:[{" field ":" FormId "," label ":"业务对象表单Id "," type ":" string "," describe ":"必须填写金蝶的表单 ID 如:PUR_PurchaseOrder "," value ":" AP_OtherPayable "} ,
         { field:" Operation ", label:" 执行的操作 ", type:" string ", describe:"111", value:" BatchSave "} ,
         { field:" IsAutoSubmitAndAudit ", label:" 提交并审核 ", type:" bool ", describe:"111", value:" false "} ,
         { field:" IsVerifyBaseDataField ", label:" 验证基础资料 ", type:" bool ", describe:"是否验证所有的基础资料有效性,布尔类,默认 false (非必录)", value:true}
]
}

数据转换与映射

在此配置中,每个字段都有其特定的属性和描述。例如,FBillTypeID字段表示单据类型,其值为QTYFD01_SYS。通过使用ConvertObjectParser解析器,可以将源数据中的某些字段转换为目标系统所需的格式。

以下是几个关键字段的解析和映射示例:

  1. 业务日期(FDATE)

    {
       "field": "FDATE",
       "label": "业务日期",
       "type": "string",
       "describe": "业务日期",
       "value": "{{workflowMainTableInfo.sqrq}}"
    }

    在这个配置中,{{workflowMainTableInfo.sqrq}}表示从源系统获取的业务日期,将其直接映射到目标系统中的FDATE字段。

  2. 往来单位(FCONTACTUNIT)

    
    {
       "field": "FCONTACTUNIT",
       "label": "往来单位",
       ...
       ...
       ...
       ...
       ...

钉钉与CRM系统接口开发配置

更多系统对接方案