| 纷享销客 | 帮助中心 - 北京易动纷享科技有限责任公司

对象导入规则

功能描述

导入数据时,如果希望在导入数据之前进行一些预先的处理工作,可在导入前运行APL代码实现。如:
场景一:导入订单时,需要计算所有订单行内物料金额之和然后赋值到订单头的"总金额"字段内。
场景二:导入预处理时希望数据不会一条出错就全部回滚,让数据分批执行(如一批20条)。

功能说明

操作路径:【管理后台】→【对象管理】→【自定义对象管理】→【导入设置】

一、导入数据预处理

导入的预先处理方式有两种:前验证和预处理。

1.1 前验证

  • 导入前验证函数和新建编辑的前验证函数类似,可以提示验证信息,同时支持阻断;
  • 若数据导入失败,或校验出现错误,错误信息会回填到Excel失败列表中;
  • 返回值类型为validateResult。
前验证APL代码示例:
// 对导入数据进行赋值 context.data.owner = ["1000"] //校验逻辑 ValidateResult validate = ValidateResult.builder() .success(false) //校验是否成功 .errorMessage("错误信息") //校验失败时的错误提示 .build() return validate

1.2 预处理

  • 导入预处理APL代码在导入前验证APL代码前先执行;
  • 一些复杂的导入校验逻辑可以在导入预处理APL代码做好相关计算并写入缓存中;
  • 到导入前验证APL代码执行的时候再从缓存中读出计算结果进行校验。  
预处理APL代码示例:
def taskId = context.task.taskId as String log.info(context.task.taskId) // 获取导入的任务id log.info(context.task.lastBatch) //是否为最后一批数据 // 导入预处理时数据是分批执行的,一批20条,放在context.dataList中 List<Map> dataList = context.dataList as List // 在 cache 中缓存信息,供前验证函数使用 Cache cache = Fx.cache.defaultCache dataList.each{ data -> def rowNo = data._RowNo as String def name = data.field_MG1ch__c as String def key = taskId + "_" + rowNo log.info(key) def value = "" + name cache.put(key, value, 30) } return ValidateResult.builder() .success(false) // 返回 false 将终止本次导入 .errorMessage("test") .build()

二、处理时机

导入的处理时机有两种:新建导入时或更新导入时。两种处理时机均支持添加预处理和前验证APL。
以上两种导入时机分别对应前台导入时的两种方式:添加新数据和更新现有数据。
在前台使用这两种导入方式时会运行对应配置的APL代码。
每种处理时机下的预处理APL和前验证APL都仅可添加一个,处理逻辑请在一个APL代码中写全。

三、 管控导入方式(改名)

两种处理时机均可”管控导入方式“,两者可管控范围不同:
新建导入:【是否触发工作流和阶段推进器】和【是否触发审批流】
更新导入:【是否触发工作流】
在管理后台处为租户级管控,此处设置后前台导入时该选项将同步此处配置且禁用。
2024-02-29
0 0
Baidu
map