Primeton BFT Primeton BFT
Primeton BFT7.6GA文档库
  • 添加自定义文件处理函数
  • 文件处理函数实现
  • 函数说明
  • 参数说明
  • 文件处理函数字典值配置
  • 策略中使用新增处理函数

# 添加自定义文件处理函数

该章节旨在指导用户通过接口实现,增加自定义文件处理函数。

# 文件处理函数实现

  1. 新建java项目

    fileProcess1

    fileProcess2

    将BFT Agent根目录bftagent/lib/com.primeton.filetransfer.common-7.6.0.jar加入项目依赖。

  2. 编写接口实现类

    创建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;
        }
    }
    
  3. 将写好的代码进行打包,将打好的jar报放置在BFTAgent根目录/bftagent/lib下。

  4. 重新启动BFTAgent,加载新建文件处理函数。

# 函数说明

字段名 说明
processingLine 文件按行读取, 此方法会被多次调用, 用来处理每一行的信息, 返回的数据会重写到文件的这一行中
isRightFunction 只会被调用一次, 主要用来验证策略定义的解析函数是否正确; 建议解析定义函数在此方法实现

# 参数说明

字段名 说明
line 按行读取的每一行, 此数据是被处理的主要对象
functionStr 自定义处理函数, 建议在isRightFunction方法中验证, 并初始化好
date 会计日日期, 按实际需求决定是否使用

# 文件处理函数字典值配置

在BFT Console中点击菜单【系统管理】→【字典码表】,如下图所示:

搜索【类型代码】“PROCESS_FILE_FUNCTION”

fileProcess3

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

fileProcess4

​

名称 说明
字典类型 固定值,代表文件处理函数类型,不可填写
字典项编号 函数值
字典项名称 函数实现类路径
排序 该自定义函数的显示位置

# 策略中使用新增处理函数

在BFT Console中点击菜单【策略管理】->【传输策略】,右侧区域显示 “传输策略” 界面

点击 【新增】>【一对一传输】新增传输策略,在高级属性文件处理栏选择新增的文件处理函数

fileProcess5

← 添加文件出口入口函数 升级指南 →