导入
1.导入前验证APL代码
用于导入前对数据的函数校验
配置方式:
在对象管理的导入设置中,点击添加前验证APL代码
注: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;
}
}