实现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>
相关推荐
郑州光合科技余经理38 分钟前
PHP构建:支撑欧美澳市场的同城生活服务平台开发
java·开发语言·数据库·uni-app·php·排序算法·生活
超级大只老咪8 小时前
数组相邻元素比较的循环条件(Java竞赛考点)
java
小浣熊熊熊熊熊熊熊丶8 小时前
《Effective Java》第25条:限制源文件为单个顶级类
java·开发语言·effective java
毕设源码-钟学长8 小时前
【开题答辩全过程】以 公交管理系统为例,包含答辩的问题和答案
java·eclipse
啃火龙果的兔子8 小时前
JDK 安装配置
java·开发语言
星哥说事8 小时前
应用程序监控:Java 与 Web 应用的实践
java·开发语言
派大鑫wink8 小时前
【JAVA学习日志】SpringBoot 参数配置:从基础到实战,解锁灵活配置新姿势
java·spring boot·后端
xUxIAOrUIII9 小时前
【Spring Boot】控制器Controller方法
java·spring boot·后端
Dolphin_Home9 小时前
从理论到实战:图结构在仓库关联业务中的落地(小白→中级,附完整代码)
java·spring boot·后端·spring cloud·database·广度优先·图搜索算法
等....9 小时前
Miniconda使用
开发语言·python