轻易云平台在数据转换和写入金蝶云星空中的应用

  • 轻易云集成顾问-孙传友

SD004-新增供应商资料申请驳回撤销:泛微OA与金蝶云星空之间的数据集成案例分析

在这一技术分享中,我们将详细探讨如何通过轻易云数据集成平台实现泛微OA-Http与金蝶云星空系统的高效对接。具体场景是“SD004-新增供应商资料申请驳回撤销”,主旨在于确保数据从泛微OA精确传输到金蝶云星空,并能实时处理每个环节,特别关注API接口调用过程中的一些关键问题和应对策略。

首先,需要抓取泛微OA提供的数据API,即/api/workflow/paService/getWorkflowRequest。为了有效管理大量数据,同时满足业务需求,我们采用定时可靠的方式定期抓取该接口的数据,确保不会漏单。在此过程中,引入了分页和限流机制,以应对可能的大量请求并保障系统稳定性及性能。

随后,为了解决范畴内的数据格式差异问题,自定义了数据转换逻辑,将获取到的原始数据适配为符合金蝶云星空要求的格式。与此同时,针对批量写入的需要,通过优化配置,实现高吞吐量的数据导入,使得供应商资料能够被快速处理和更新到金蝶云星空。

而在核心操作方面,我们使用CancelAssign API进行实际的数据写入。在这一阶段,对每条记录实行集中监控实时跟踪,借助告警系统检测并及时响应可能出现的问题,从而减少错误发生几率,提高整体流程可靠性。此外,还具备高级异常处理和错误重试机制,为意外情况提供安全网,保障事务一致性及运行连续性。

总体来说,此次集成不仅注重抛弃过多冗余步骤,而是灵活利用可视化设计工具来提升效率,使整个集成过程更加直观、易于管理。同时,通过上述一系列细致调优,从根本上提高了企业内部不同应用系统之间互操作能力,也为后续扩展升级奠定扎实基础。

打通金蝶云星空数据接口

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

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

接口元数据配置解析

首先,我们来看一下元数据配置:

{
  "api": "/api/workflow/paService/getWorkflowRequest",
  "effect": "QUERY",
  "method": "GET",
  "number": "requestId",
  "id": "requestId",
  "name": "requestId",
  "idCheck": true,
  "request": [
    {
      "field": "workflowId",
      "label": "e9流程id",
      "type": "string",
      "describe": "e9流程id",
      "value": "129"
    },
    {
      "field": "workflowIdList",
      "label": "workflowIdList中间方案ID",
      "type": "string",
      "describe": "workflowIdList中间方案ID",
      "value": "8183a586-bdfb-3e93-8573-d5e81803c5ff"
    }
  ],
  "autoFillResponse": true,
  "condition": [
    [
      {
        "field": "currentNodeId",
        "logic": "eqv2",
        "value": "764"
      }
    ]
  ]
}

配置细节

  1. API路径/api/workflow/paService/getWorkflowRequest

    • 此路径指向泛微OA系统中的一个工作流请求查询服务。
  2. 请求方法GET

    • 使用HTTP GET方法来请求数据。
  3. 关键字段

    • number, id, name均为requestId,表示该字段在请求和响应中的重要性。
    • idCheck: true,表示需要对ID进行校验。
  4. 请求参数

    • workflowId: 固定值为129,代表特定的工作流ID。
    • workflowIdList: 固定值为8183a586-bdfb-3e93-8573-d5e81803c5ff,代表中间方案ID。
  5. 自动填充响应autoFillResponse: true

    • 表示系统会自动处理并填充响应数据。
  6. 条件过滤

    • 条件为当前节点ID (currentNodeId) 等于 (eqv2) 764

实际操作步骤

  1. 配置API调用 在轻易云平台上创建一个新的集成任务,并配置上述API元数据。确保所有字段和条件都正确填写。

  2. 发送请求 根据配置,平台会自动生成HTTP GET请求,并附带必要的参数:

    GET /api/workflow/paService/getWorkflowRequest?workflowId=129&workflowIdList=8183a586-bdfb-3e93-8573-d5e81803c5ff
  3. 处理响应 平台会根据配置自动处理响应,并填充到相应的数据结构中。假设返回的数据如下:

    {
     "requestId": 12345,
     ...
     // 更多字段
    }
  4. 条件过滤 平台会根据条件过滤器检查返回的数据是否符合条件(即currentNodeId == 764)。如果符合,则继续处理;否则,丢弃该条记录。

数据清洗与转换

在获取到符合条件的数据后,需要进行进一步的清洗与转换,以便后续写入目标系统(如金蝶)。这一步通常包括:

  1. 字段映射:将源系统的字段映射到目标系统所需的字段。
  2. 数据格式转换:如日期格式、数值单位等转换。
  3. 业务逻辑处理:根据业务需求进行特定的逻辑处理,如状态码转换、计算新字段等。

例如,将返回的JSON对象中的某些字段提取并转换为目标系统所需格式:

{
  // 源系统返回的数据
  ...
}

经过清洗与转换后:

{
  // 转换后的目标系统所需的数据格式
}

总结

通过轻易云数据集成平台,我们可以高效地调用泛微OA-Http接口获取工作流请求数据,并通过自动化的方式进行清洗与转换。这不仅简化了复杂的数据集成过程,还提高了整体业务流程的透明度和效率。 数据集成平台可视化配置API接口

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

在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。

API接口元数据配置解析

在本案例中,我们使用的API接口为CancelAssign,其主要功能是执行撤销操作。以下是该接口的元数据配置:

{
  "api": "CancelAssign",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field": "FormId", "label": "FormId", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "BD_Supplier"},
    {"field": "Numbers", "label": "Numbers", "type": "string", "describe": "111", "value": "{requestName}"},
    {"field": "InterationFlags", "label": "InterationFlags", "type": "string", "describe":"字符串类型,分号分隔,格式:\"flag1;flag2;...\"(非必录) 例如(允许负库存标识:STK_InvCheckResult)","value":"STK_InvCheckResult"},
    {"field":"IgnoreInterationFlag","label":"IgnoreInterationFlag","type":"string","describe":"布尔类型,默认true(非必录)","value":"true"},
    {"field":"NetworkCtrl","label":"NetworkCtrl","type":"string","describe":"布尔类型,默认false(非必录)","value":"false"},
    {"field":"IsVerifyProcInst","label":"IsVerifyProcInst","type":"string","describe":"是否检验单据关联运行中的工作流实例,布尔类型,默认false(非必录)","value":"false"}
  ]
}

数据转换与写入过程

  1. 定义请求参数

    在ETL转换过程中,我们首先需要定义请求参数。根据元数据配置,可以看到需要传递以下几个字段:

    • FormId: 表单ID,这里指定为BD_Supplier
    • Numbers: 源平台中的供应商编号,需要动态替换为实际值。
    • InterationFlags: 可选字段,用于指定交互标志。
    • IgnoreInterationFlag, NetworkCtrl, IsVerifyProcInst: 布尔类型,可选字段,用于控制特定行为。
  2. 构建请求体

    根据上述定义的参数,我们构建请求体。假设我们从源平台获取了供应商编号为SUP12345的数据,那么请求体应如下所示:

    {
     "FormId": "BD_Supplier",
     "Numbers": ["SUP12345"],
     "InterationFlags": ["STK_InvCheckResult"],
     "IgnoreInterationFlag": true,
     "NetworkCtrl": false,
     "IsVerifyProcInst": false
    }
  3. 发送HTTP请求

    使用轻易云的数据集成平台,可以通过配置HTTP节点来发送POST请求。具体步骤如下:

    • 配置HTTP节点URL为金蝶云星空API的地址,例如:https://api.kingdee.com/CancelAssign
    • 设置HTTP方法为POST。
    • 将构建好的请求体作为HTTP请求的Body。
  4. 处理响应

    在发送请求后,需要处理响应结果。通常情况下,API会返回一个JSON格式的响应,其中包含操作结果和状态码。我们可以根据状态码判断操作是否成功,并记录相关日志以便后续追踪。

实践案例

假设我们有一个实际场景,需要撤销一个供应商资料申请驳回撤销操作。具体步骤如下:

  1. 从泛微系统获取待撤销的供应商编号

    {
     // 假设获取到的数据
     "_id": 123456,
     "_name": SUP12345,
     "_status": pending
    }
  2. 进行ETL转换

    将上述数据转换为金蝶云星空API可接受的格式:

    {
     // 构建请求体
     FormId: BD_Supplier,
     Numbers: [SUP12345],
     InterationFlags: [STK_InvCheckResult],
     IgnoreInterationFlag: true,
     NetworkCtrl: false,
     IsVerifyProcInst: false
    }
  3. 发送POST请求并处理响应

    {
     // 假设收到的响应
     statusCode: 200,
     message: Success,
     data: {
       result: success,
       details: null
     }
    }

通过以上步骤,我们完成了从泛微系统到金蝶云星空系统的数据ETL转换和写入过程。这不仅实现了不同系统间的数据无缝对接,也确保了业务流程的高效运作。 打通钉钉数据接口

更多系统对接方案