实现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>
相关推荐
亦暖筑序26 分钟前
AgentScope-Java 入门:用 Middleware 审计 Agent 调用
java·ai编程·agentscope
shylyly_34 分钟前
C++中的类型转换
开发语言·c++·匿名对象·隐式类型转换·拷贝优化
你驴我36 分钟前
WhatsApp 消息撤回与编辑的幂等性设计实践
java·服务器·前端·后端·python
北冥you鱼1 小时前
Go 语言新手扫盲:指针 * 和 & 使用场景详解
开发语言·后端·golang
cui_ruicheng1 小时前
Python数据分析(一):数据分析概述与环境搭建
开发语言·python·数据分析
青山木1 小时前
Hot 100 ---腐烂的橘子
java·数据结构·后端·算法·leetcode·广度优先
心平气和量大福大1 小时前
C#-WPF-UserControl-生命周期(加载 退出)
开发语言·c#·wpf
小龙报1 小时前
【优选算法】1. 水果成蓝 2.找到字符串中所有字母的异位词
java·c语言·数据结构·数据库·c++·redis·算法
sunywz2 小时前
【c#】 Web Deploy一键发布,IIS部署全流程
开发语言·前端·c#
自强的小白2 小时前
重点!起始时间和结束时间与创建时间和修改时间的区别(localdate与LocaldateTIME区别)以及增删改查什么时候设置目前时间(添加和更新员工时)
java