轻易云助力钉钉数据与金蝶云星空的高效集成

  • 轻易云集成顾问-胡秀丛

钉钉数据集成到金蝶云星空案例分享:exp-新报销退款单(付款退款)V4.0

在本次技术案例中,我们将详细探讨如何通过轻易云数据集成平台,将钉钉的数据高效地集成到金蝶云星空环境中。具体方案名称为“exp-新报销退款单(付款退款)V4.0”。该解决方案旨在实现两大系统间的数据无缝对接,确保从报销申请到最终审核的流程全程透明、高效且可靠。

技术核心:API接口调用与数据处理

为了完成这一目标,我们主要利用了两个关键API接口:

  1. 钉钉获取数据的API: v1.0/yida/processes/instances
  2. 金蝶云星空写入数据的API: batchSave

首先,在获取钉钉生成的新报销和退款信息时,通过调用v1.0/yida/processes/instances API接口,实时抓取相关业务数据。轻易云的平台支持定时、可靠地调度这一请求,有效保证了我们能够及时捕捉到每笔交易记录,从而避免任何漏单现象。

处理分页与限流问题

由于涉及大量数据信息导出和导入操作,必须应对分页和限流的问题。在调用上述API接口过程中,实现自动化分页策略,并结合限流算法,对大批量数据分段处理。这不但提高了吞吐量,还避免了因一次性请求过多引起的网络拥塞或超时情况。

数据转换与质量监控

不同于简单的数据传递,本次集成还需进行复杂的数据转换,以适配特定业务需求及目标系统结构。借助轻易云提供的自定义数据转换逻辑,将从钉钉处获取的数据映射至符合金蝶云星空要求的格式。同时,通过内置的数据质量监控机制,实时检测并校正异常值或格式错误,为后续的批量写入奠定基础。

批量写入与智能告警系统

最后一步是将经过清洗及转化后的数据信息,以较高吞吐量快速批量写入至金蝶云星空,这一过程依赖于batchSave API实现。此外,集中式监控和告警系统可随时跟踪任务执行状态,一旦出现性能瓶颈或错误,即刻触发告警并启动重试机制,使得整个流程更加稳定和可靠。

通过上述一系列技术手段,本次项目成功实现了多个异构系统间的信息互通,不仅提升了各环节运营效率,还极大程度上保障了业务连续 金蝶与SCM系统接口开发配置

调用钉钉接口v1.0/yida/processes/instances获取并加工数据

在数据集成生命周期的第一步中,调用源系统接口是至关重要的一环。本文将详细探讨如何使用轻易云数据集成平台调用钉钉接口v1.0/yida/processes/instances来获取并加工数据。

API接口配置

我们首先需要配置API接口的元数据。以下是具体的配置细节:

  • API路径: v1.0/yida/processes/instances
  • 请求方法: POST
  • 关键字段:
    • number: 标题
    • id: 流程实例ID (processInstanceId)
    • idCheck: true

请求参数配置

请求参数是API调用成功与否的关键。以下是具体的请求参数及其配置:

  1. 分页参数:

    • pageNumber: 分页页码,类型为字符串,值为{PAGINATION_START_PAGE}
    • pageSize: 分页大小,类型为字符串,值为{PAGINATION_PAGE_SIZE}
  2. 应用信息:

    • appType: 应用ID,类型为字符串,值为APP_WTSCMZ1WOOHGIM5N28BQ
    • systemToken: 应用秘钥,类型为字符串,值为IS866HB1DXJ8ODN3EXSVD750RBTK2X72R8MELL4
  3. 用户信息:

    • userId: 用户的userid,类型为字符串,值为16000443318138909
  4. 语言设置:

    • language: 语言设置,类型为字符串,可选值包括zh_CN(中文)和en_US(英文)。
  5. 表单信息:

    • formUuid: 表单ID,类型为字符串,值为FORM-0IA66C71A4V9JSAX6MEV45W77QOO2WI78EHGLQ
  6. 查询条件(嵌套对象):

    • searchFieldJson: 查询条件对象,包括以下字段:
      • selectField_lgkiepju: 是否退还余额,类型为字符串,值为“是”。
      • radioField_lgk9jn2v: 费用报销类型,类型为字符串,值为“借款核销”。
      • numberField_lgkiepjv: 退还余额数目,类型为数组(包含一个浮点数),值为 [0.0001]
      • selectField_lgk9jn35: 部门过滤。
  7. 时间范围:

    • 创建时间起始值:createFromTimeGMT, 类型为字符串, 值通过函数计算 _function DATE_FORMAT(DATE_ADD(NOW(),INTERVAL - 25 DAY),'%Y-%m-%d 00:00:00')
    • 创建时间终止值:createToTimeGMT, 类型为字符串, 值通过函数计算 {{CURRENT_TIME|datetime}}
  8. 其他参数:

    • 流程发起人工号查询:originatorId, 类型为字符串。
    • 修改时间起始值:modifiedFromTimeGMT, 类型为字符串。
    • 修改时间终止值:modifiedToTimeGMT, 类型为字符串。
    • 任务ID:taskId, 类型为字符串。
    • 实例状态:instanceStatus, 类型为字符串, 值设定为“COMPLETED”。
    • 流程审批结果:approvedResult, 类型为字符串, 值设定为“agree”。

数据请求与清洗

在完成上述元数据配置后,我们可以开始进行数据请求和清洗工作。轻易云平台提供了全透明可视化操作界面,使得每一步的数据处理过程都清晰可见。

  1. 发送请求: 使用POST方法发送请求到钉钉接口,并携带上述配置的所有参数。

  2. 接收响应: 钉钉接口返回的数据将包含多个流程实例的信息。我们需要对这些数据进行初步清洗和过滤,以确保后续处理的准确性。

  3. 数据清洗: 对于返回的数据,根据业务需求进行筛选。例如,只保留审批结果同意(agree)的记录,并且实例状态必须是已完成(COMPLETED)。

数据转换与写入

在完成数据请求与清洗之后,我们需要将处理后的数据转换并写入目标系统。这一步通常包括以下几个步骤:

  1. 格式转换: 将从钉钉获取的数据转换成目标系统所需的格式。例如,将JSON格式的数据转换成CSV或数据库表格式。

  2. 字段映射: 根据目标系统的要求,对字段进行映射和重命名。例如,将钉钉中的字段名转换成目标系统中的对应字段名。

  3. 写入操作: 最后,将转换后的数据写入到目标系统中。这可能涉及到数据库插入操作、文件写入操作等。

通过以上步骤,我们实现了从钉钉获取并加工数据的全过程。在整个过程中,通过轻易云平台的全生命周期管理功能,可以实时监控每个环节的数据流动和处理状态,从而确保业务流程的高效运行。 轻易云数据集成平台金蝶集成接口配置

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

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,最终转为目标平台金蝶云星空API接口所能够接收的格式,并写入目标平台。本文将详细探讨这一过程中涉及的技术细节和操作步骤。

数据转换与写入过程

在轻易云数据集成平台上,我们可以通过配置元数据来实现对源数据的转换和写入。以下是具体的元数据配置:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "batchArraySave",
    "rows": 1,
    "rowsKey": "array"
  },
  "request": [
    {"field":"FBillNo","label":"单据编号","type":"string","value":"{serialNumberField_lgk9jn2s}(FKTK)"},
    {"field":"FSETTLEORGID","label":"结算组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{tableField_lgk9jn4p.textField_lgk9jn45}}"},
    {"field":"FEXCHANGETYPE","label":"汇率类型","type":"string","value":"HLTX01_SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
    {"field":"FDATE","label":"业务日期","type":"string","value":"_function FROM_UNIXTIME( ( {dateField_lgkieplu} / 1000 ) ,'%Y-%m-%d' )"},
    {"field":"FCURRENCYID","label":"币别","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"FKTKDLX02_SYS"},
    {"field":"FBUSINESSTYPE","label":"业务类型","type":"string","value":"3"},
    {"field":"FCONTACTUNITTYPE","label":"往来单位类型","type":"string","value":"BD_Empinfo"},
    {"field":"FCONTACTUNIT","label":"往来单位","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value": "{textField_llyjeu7o}"},
    {"field": "FPAYUNITTYPE", "label": "付款单位类型", "type": "string", "value": "BD_Empinfo"},
    {"field": "FPAYUNIT", "label": "付款单位", "type": "string", "parser":{"name": "ConvertObjectParser", "params": "FNumber"}, 
"value": "{textField_llyjeu7o}"},
    {"field": "FDepartment", 
"label": 
"部门", 
"type":
"string",
"parser":
{"name":
"ConvertObjectParser",
"params":
"FNumber"}, 
"value":
"{{tableField_lgk9jn4p.textField_lgk9jn46}}"
},
{"field":
"FPAYORGID",
"label":
"付款组织",
"type":
"string",
"parser":
{"name":
"ConvertObjectParser",
"params":
"FNumber"}, 
"value":
"{textField_lgkieple}"
},
{"field":
"FSETTLECUR",
"label":
"结算币别",
"type":
"string",
"parser":
{"name":
"ConvertObjectParser",
"params":
"FNumber"}, 
"value":
"PRE001"
},
{"field":
"FREMARK",
"label":
"备注",
"type":
"strings
"value:
"{textareaField_lgkiepk7}"
},
{
        “ field”:“ FREFUNDBILLENTRY”,“ label”:“退款单明细”,“ type”:“ array”,“ children”:[
            {“ field”:“ FSETTLETYPEID”,“ label”:“结算方式”,“ type”:“ string”,“ parser”:{“ name”:“ ConvertObjectParser”,“ params”:“ FNumber”},“ value”:“ JSFS04_SYS”,“ parent ”:“ FREFUNDBILLENTRY”},
            {“ field”:“ FREFUNDAMOUNTFOR”,“ label”:“表体-应退金额”,“ type”:“ string”,“ value”: “ {numberField_lgkiepjv}”,“ parent”: “ FREFUNDBILLENTRY” },
            {“ field”:“ FNOTE”,“ label”: “备注”, “ type”: “ string”, “ value”: “ {textareaField_lgkiepk7}”, “ parent”: “ FREFUNDBILLENTRY” },
            {“ field”:“ FACCOUNTID”, “ label”: “我方银行账号”, “ type”: “ string”, “ parser”: {“ name”: “ ConvertObjectParser”, “ params”: “ FNumber” },“ value”:“ {selectField_lgkieplh} ”, parent:”“ FREFUNDBILLENTRY ”},
            {“ field”:“ FEXPENSEDEPTID_E ”,“ label”:“费用承担部门”,“ type”:“ string”,“ parser”: {“ name”:“ ConvertObjectParser ”,“ params”:“ FNumber ” },“ value”: {{tableField_lgk9jn4p.textField_lgk9jn46}},“ parent”:“ FREFUNDBILLENTRY ” },
            {“ field”:“ FPURPOSEID ”,“ label”:“原付款用途”,“ type”:“ string”,“ value”:“ SFKYT23_SYS ”,“ parent ”:”“ FREFUNDBILLENTRY”,解析器:{名称:ConvertObjectParser,参数:FNumber}},
            {字段:退款金额,标签:退款金额,类型:字符串,值:numberField_lgkiepjv,父级:退款单明细}
            {
                parent:退款单明细,标签:承担部门,字段:F_QKZI_Base1,类型:字符串,值:{{tableField_lgk9jn4p.textField_lgk9jn46}},解析器:{名称:ConvertObjectParser,参数:FNumber}
            },
            {
                parent:退款单明细,标签:费用项目,字段:F_QKZI_Base,类型:字符串,值:{{tableField_lgk9jn4p.textField_lgk9jn47}},解析器:{名称:ConvertObjectParser,参数:FNumber}
            }
    ]},
{
    label:
往来类型,
    field:
    F_QKZI_Assistant,
    type:
    string,
    value:
_function case '{selectField_lglw55x0}' when '否' then '\" \"' when '是' then '{selectField_lgkiepl6_id}' end,
    parser:
{name:
ConvertObjectParser,
    params:
    FNumber
}
}],
其他请求:[{
    field:
FormId,
    label:
业务对象表单Id,
    type:
    string,
    describe:
必须填写金蝶的表单ID如:PUR_PurchaseOrder,
    value:
AP_REFUNDBILL
},{
    field:
操作,
    label:
执行的操作,
    type:
    string,
    value:
批量保存
},{
    field:
IsAutoSubmitAndAudit,
    label:
提交并审核,
    type:
    bool,
    value:
true
},{
    field:
IsVerifyBaseDataField,
    label:
验证基础资料,
    type:
    bool,
    describe:
是否验证所有的基础资料有效性,布尔类,默认false(非必录),
    value:
false
}]
}

元数据配置详解

  1. API接口与方法
    配置中指定了使用batchSave API接口,通过POST方法进行数据提交。

  2. 字段映射与转换

    • 单据编号(FBillNo):通过序列号生成。
    • 结算组织(FSETTLEORGID)汇率类型(FEXCHANGETYPE)等字段使用ConvertObjectParser进行对象转换。
    • 业务日期(FDATE)通过函数FROM_UNIXTIME进行时间戳转换。
    • 币别(FCURRENCYID)等字段直接指定固定值,如PRE001
  3. 数组处理
    对于退款单明细(FREFUNDBILLENTRY),使用数组结构处理多个子项,并对每个子项进行相应的字段映射和转换。

  4. 其他请求参数
    包括表单Id、操作类型、是否自动提交并审核等,这些参数确保了在调用API时能够正确执行相应操作。

实际应用案例

假设我们从源系统获取了一条新的报销退款单记录,需要将其转换并写入金蝶云星空。首先,我们按照上述元数据配置,将源系统的数据字段映射到目标系统所需的格式。然后,通过轻易云的数据集成平台调用金蝶云星空的API接口,将处理后的数据提交到目标系统中。

例如,对于一个具体的报销退款单记录:

{
  "serialNumberField_lgk9jn2s": "12345678",
  ...
}

经过上述配置和处理后,将生成如下格式的数据:


{
  ...
  {
    ...
      {
        ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                {
                  ...
                  {
                    ...
                    {
                      ...
                      {
                        ...
                        {
                          ...
                          {
                            ...
                            {
                              ...
                              {
                                ...
                                {
                                  ...
                                  {
                                    ...
                                    {
                                      ...
                                      {
                                        ...
                                        {
                                          ...
                                          {
                                            ...
![数据集成平台API接口配置](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)
更多系统对接方案