⌘CtrlK
Appearance
Appearance
该章节旨在指导用户通过接口实现,增加自定义文件处理函数。
新建java项目


将BFT Agent根目录bftagent/lib/com.primeton.filetransfer.common-7.6.0.jar加入项目依赖。
编写接口实现类
创建java类, 实现com.primeton.filetransfer.function.ProcessingFileFunction
以下示例实现的功能: 对每一行字符前增加函数指定的content
package com.primeton.fun;
import com.primeton.filetransfer.function.ProcessingFileFunction;
import com.primeton.filetransfer.util.Pair;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SelfFileFunc implements ProcessingFileFunction {
private final String REG = "^add_test\\((.+)\\)"; // 自定义函数类似: add_test(addContent)
private final Pattern ADD_TEST_FUNCTION_PATTERN = Pattern.compile(REG);
private String addContent;
@Override
public Pair<Boolean, String> processingLine(String line, String functionStr, Date date) {
// date参数, 此处演示, 暂时不使用, 按实际需求决定是否使用
// 此函数会被多次调用, functionStr建议在 isRightFunction 方法体里边初始化好
// 这里主要对line参数处理
if (line == null) {
return Pair.of(true, line);
}
line = addContent + line;
return Pair.of(true, line);
}
@Override
public boolean isRightFunction(String functionStr) {
// 这里主要校验自定义函数的合法性, 需按自己实际需求实现
final Matcher matcher = ADD_TEST_FUNCTION_PATTERN.matcher(functionStr);
if (!matcher.find()) {
return false;
}
int groupCount = matcher.groupCount();
if (groupCount != 1) {
return false;
}
addContent = matcher.group(1);
return true;
}
}将写好的代码进行打包,将打好的jar报放置在BFTAgent根目录/bftagent/lib下。
重新启动BFTAgent,加载新建文件处理函数。
| 字段名 | 说明 |
|---|---|
| processingLine | 文件按行读取, 此方法会被多次调用, 用来处理每一行的信息, 返回的数据会重写到文件的这一行中 |
| isRightFunction | 只会被调用一次, 主要用来验证策略定义的解析函数是否正确; 建议解析定义函数在此方法实现 |
| 字段名 | 说明 |
|---|---|
| line | 按行读取的每一行, 此数据是被处理的主要对象 |
| functionStr | 自定义处理函数, 建议在isRightFunction方法中验证, 并初始化好 |
| date | 会计日日期, 按实际需求决定是否使用 |
在BFT Console中点击菜单【系统管理】→【字典码表】,如下图所示:
搜索【类型代码】“PROCESS_FILE_FUNCTION”

点击【新增字典项】添加文件处理函数,如下图所示:

| 名称 | 说明 |
|---|---|
| 字典类型 | 固定值,代表文件处理函数类型,不可填写 |
| 字典项编号 | 函数值 |
| 字典项名称 | 函数实现类路径 |
| 排序 | 该自定义函数的显示位置 |
在BFT Console中点击菜单【策略管理】->【传输策略】,右侧区域显示 “传输策略” 界面
点击 【新增】>【一对一传输】新增传输策略,在高级属性文件处理栏选择新增的文件处理函数
