实现java执行kettle并传参数

java 复制代码
 @Override
    public void setStatus(String id, Integer bpmStatus) {
        List<LyntglAmmeterInfoDO> lyntglAmmeterInfoDOS = lyntglAmmeterInfoMapper.selectBpmList(id);
        if (lyntglAmmeterInfoDOS != null && lyntglAmmeterInfoDOS.size()>0){
            lyntglAmmeterInfoDOS.forEach(item->{
                item.setStatus(Long.parseLong(bpmStatus.toString()));
                lyntglAmmeterInfoMapper.updateById(item);
            });
        }
        if (bpmStatus == 3){
            if (!lyntglAmmeterInfoDOS.isEmpty()) {
                String subNoBatch = lyntglAmmeterInfoDOS.get(0).getSubBatchNo(); // 假设subnobatch是你需要的参数
                // 执行kettle,传递subnobatch参数
                kettleUtils.runKTR(kettleFileName,subNoBatch);
            }
        }
    }

审批成功后执行kettle传递批次号参数

runKTR:

java 复制代码
    /**
     * @title runKTR
     * @description 执行KTR文件
     * @param fileName
     * @param subBatchNo 提交批次号
     * @return Map
     */
    public Map<String,Object> runKTR(String fileName,String subBatchNo) {
        Map<String,Object> map = new HashMap<>();
        int code = 200;
        String msg = "";
        try {

            System.setProperty("KETTLE_PLUGIN_CLASSES", "org.pentaho.di.trans.steps.append.AppendMeta");

            // 初始化环境
            KettleEnvironment.init();

            TransMeta transMeta = new TransMeta(kettleFilePath+fileName);
            Trans trans = new Trans(transMeta);

            // 向作业中添加参数-批次号
            trans.setParameterValue("sub_batch_no", subBatchNo);

            // 执行Kettle作业
            trans.execute(null);
            trans.waitUntilFinished();
            if (trans.getErrors() > 0) {
                code = 500;
                msg = "KTR failed with errors.";
            }
            msg = "KTR executed successfully.";
        } catch (KettleException e) {
            msg = "Error-KTR: " + e.getMessage();
        }
        map.put("code",code);
        map.put("msg",msg);
        return map;
    }

需要的pom依赖:

java 复制代码
      <!-- 关联kettle -->
        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>kettle-core</artifactId>
        </dependency>
        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>kettle-engine</artifactId>
        </dependency>
java 复制代码
     <dependency>
            <groupId>org.pentaho.di.plugins</groupId>
            <artifactId>pdi-core-plugins-impl</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
相关推荐
wxm631几秒前
TCP监听--监听指定IP的端口号
java·网络·tcp/ip
csdn2015_12 分钟前
java 把对象转化为json字符串
java·前端·json
想带你从多云到转晴13 分钟前
03、数据结构与算法--单向链表
java·数据结构·算法
Elnaij15 分钟前
从C++开始的编程生活(24)——C++11标准Ⅰ
开发语言·c++
无籽西瓜a15 分钟前
【西瓜带你学设计模式 | 第七期 - 适配器模式】适配器模式 —— 类适配器与对象适配器实现、优缺点与适用场景
java·后端·设计模式·软件工程·适配器模式
mjhcsp17 分钟前
AT_arc205_c [ARC205C] No Collision Moves 题解
开发语言·c++·算法·题解
Oliver_LaVine21 分钟前
idea启动后端项目-控制台中文乱码处理
java·ide
Flittly21 分钟前
【SpringAIAlibaba新手村系列】(6)PromptTemplate 提示词模板与变量替换
java·spring boot·agent
MLGDOU26 分钟前
【Qt开发】信号与槽
开发语言·数据库·qt
yaaakaaang29 分钟前
3.springboot,用eclipse轻松创建~
java·spring boot·eclipse