导入

    1.导入前验证APL代码

用于导入前对数据的函数校验

配置方式:

​ 在对象管理的导入设置中,点击添加前验证APL代码

8-1-10导入前验证函数1

    注:1、 导入前验证函数和新建编辑的前验证函数类似,可以提示验证信息,同时支持阻断;

​ 2、若数据导入失败,或校验出现错误,错误信息会回填到Excel失败列表中

​ 3、返回值类型为validateResult

函数编写模板:

Groovy:

//校验逻辑
ValidateResult validate = ValidateResult.builder()
  .success(false)
  .errorMessage("错误信息")
  .build()
return validate

Java:

import java.util.List;
import java.util.Map;

public class Import implements ImportAction {
  /**
   * 导入函数的运行方法
   */
  @Override
  public ValidateResult execute(FunctionContext context, Map<String, Object> args) {
    //校验逻辑
    ValidateResult validate = ValidateResult.builder()
      .success(false)
      .errorMessage("错误信息")
      .build();
    return validate;
  }
}

   2. 导入预处理APL代码

用于在导入前分批批量预加载所有导入数据,做数据的预处理。

配置方式:

​ 在对象管理的导入设置中,点击添加预处理APL代码

函数编写模板:

预处理函数:

Groovy:

// 获取导入的任务id 和 以及是否为最后一批数据
def taskId = context.task.taskId as String
log.info(context.task.taskId)
log.info(context.task.lastBatch)

// 在 cache 中缓存信息,供前验证函数使用
Cache cache = Fx.cache.defaultCache
List<Map> dataList = context.dataList as List
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()
// 返回 false 将终止本次导入
  .success(false)
  .errorMessage("我是导入预处理函数!!!!")
  .build()

Java:

import java.util.List;
import java.util.Map;

public class Import implements ImportAction {
  /**
   * 导入函数的运行方法
   */
  @Override
  public ValidateResult execute(FunctionContext context, Map<String, Object> args) {

    // 获取导入的任务id 和 以及是否为最后一批数据
    String taskId = context.getTask().get("taskId").toString();
    Fx.log.info(context.getTask().get("taskId").toString());
    Fx.log.info(context.getTask().get("lastBatch").toString());

    // 在 cache 中缓存信息,供前验证函数使用
    Cache cache = Fx.cache.getDefaultCache();

    List dataList = (List) context.getDataList();

    for (Object item:dataList) {
      Map map =(Map<String, Object>)item;

      String rowNo = map.get("_RowNo").toString();
      String name = map.get("name").toString();
      String key = taskId + "_" + rowNo;

      Fx.log.info(key);
      String value = name;
      cache.put(key, value, 30);
    }

    ValidateResult validate = ValidateResult.builder()
    // 返回 false 将终止本次导入
      .success(false)
      .errorMessage("我是导入预处理函数!!!!")
      .build();
    return validate;
  }
}

前验证函数:

Groovy:

log.info(context.data)
def data = context.data as Map
// 获取 任务id 和数据所属的行号
def taskId = data._TaskId as String
def rowNo = data._RowNo as String

log.info(taskId)
log.info(rowNo)

// 从缓存中获取预处理函数保存的信息
Cache cache = Fx.cache.defaultCache
def key = taskId + "_" + rowNo

def value = cache.get(key)

log.info(value)

return ValidateResult.builder()
  .success(true)
  .errorMessage("我是导入前验证函数!!!!")
  .build()

Java:

import java.util.List;
import java.util.Map;

public class BeforeImport implements ImportAction {
  /**
   * 导入函数的运行方法
   */
  @Override
  public ValidateResult execute(FunctionContext context, Map<String, Object> args) {

    Fx.log.info(context.getData());
    Map data = (Map) context.getData();
    // 获取 任务id 和数据所属的行号
    String taskId = data.get("_TaskId").toString();
    String rowNo = data.get("_RowNo").toString();
    Fx.log.info(taskId);
    Fx.log.info(rowNo);


    // 从缓存中获取预处理函数保存的信息
    Cache cache = Fx.cache.getDefaultCache();
    String key = taskId + "_" + rowNo;
    String value = cache.get(key).toString();

    Fx.log.info(value);

    ValidateResult validate = ValidateResult.builder()
      .success(true)
      .errorMessage("我是导入前验证函数!!!!")
      .build();
    return validate;
  }
}

results matching ""

    No results matching ""