Java 如何在Clover ETL中使用重新格式化组件更改参数值

Java 如何在Clover ETL中使用重新格式化组件更改参数值,java,etl,cloveretl,Java,Etl,Cloveretl,我试图找到一种方法,来改变我定义的参数的值,以及如何使用Clover ETL中的REFORMAT组件动态创建一个新参数 我已经在我的转换方法中编写了一些小逻辑,该转换方法提供了重新格式化组件: function integer transform() { string myparam1 = getParamValue("MY_PARAM1"); string changeParam = getParamValue("CHANGE_P

我试图找到一种方法,来改变我定义的参数的值,以及如何使用Clover ETL中的REFORMAT组件动态创建一个新参数

我已经在我的转换方法中编写了一些小逻辑,该转换方法提供了重新格式化组件:

        function integer transform() {
            string myparam1 = getParamValue("MY_PARAM1");
            string changeParam = getParamValue("CHANGE_PARAM_VALUE");

            if(changeParam =="true"){
                myparam1 = myparam1 +"_changed";
            }
       // update the value of parameter MY_PARAM1     
       // updateParameter("MY_PARAM1", myparam1 );  

       // create a new parameter
       // createNewParameter("MY_NEW_PARAM", "some_sample_data"); 

            return OK;
        }
从三叶草设计师我试图检查可用的方法,但我没有找到任何相关的方法,帮助我提供功能,我正在寻找

我不熟悉Clover ETL,因此我在如何实现这一点上面临困难,请帮助我,我们是否可以使用重新格式化组件实现这一点,或者我们是否需要使用其他组件?

您无法更改值(简单地说,可能有一种方法可以通过java和图形模型直接访问,但这可能不是您需要的)在CloveETL中,由于参数是以静态方式使用的,所以在图形编译过程中,所有出现的参数都会得到解决,并替换为结果值

如果需要动态变量,请查看字典

但你需要想一想,这本字典并不是参数的死替代品。参数的静态用法有一些不能用字典替换的点和用法位置


顺便问一下,为什么在运行图形期间需要更改参数值?请解释一下用例,也许我可以给你一些提示…

你不能更改图形参数的值,因为它们是在图形的初始化阶段设置的。 但是,有两种方法可以实现您可能想要的目标:

  • 选项1:按计划运行图形,然后从计划程序传递参数值

  • 选项2:需要修改参数值的组件将其放入子图中,创建一个同名子图参数,并将修改后的值作为输入映射的一部分从主图传递到子图