如何获取Pentaho数据集成(Kettle)中“用户定义的Java类”步骤中的所有参数

时间:2017-07-07 07:47:29

标签: pentaho pentaho-spoon

情境: 我在PDI中创建了一个转型。这个转换有一个Step'User Defined Java Class',我在其中调用一个外部库 此转换具有“参数”,目前,我必须获取所有参数 单独 以传递以在此步骤中使用它们(传递到我的外部jar),如下所示:< / p>

PgSqlHost = getVariable("PostgresHost"); 
PgSqlPort = getVariable("PgSqlPort"); 
PgSqlLoginUserId = getVariable("PgSqlLoginUserId"); 
PgSqlLoginPassword = getVariable("PgSqlLoginPassword");

我必须在此步骤中使用这些类似的50-60个参数。我必须单独获取它们并将它传递给外部java lib。

TransformationParameters tparams= new TransformationParameters();
tparams.PgSqlHost = PgSqlHost;
tparams.PgSqlPort = Integer.parseInt(PgSqlPort);
tparams.PgSqlLoginUserId = PgSqlLoginUserId;
tparams.PgSqlLoginPassword = PgSqlLoginPassword;
Configuration config =  ConfigurationReader.getConfiguration();
config.setParameters(tparams);

这种方法的问题是:

  1. 我必须单独获取所有参数。
  2. 添加新参数时,我必须处理在所有转换中修改此步骤
  3. 我的问题: 有没有办法获取所有参数,如下所示:

    HashMap<K,V> params = getAllVariables();
    Configuration config =  ConfigurationReader.getConfiguration();
    config.setParametersMap(tparams);
    

    我尝试了什么:

    1. 我尝试在Pentaho Wiki&amp;论坛中的thread, 但没有发现任何接近。

    2. 我可以添加一个步骤将这些参数写入.properties文件和 阅读我的外部罐子里的那些。

    3. 有人可以建议更好的想法来实现这一目标吗? 感谢。

1 个答案:

答案 0 :(得分:1)

在UserDefinedJavaClass

的流程行中使用此方法
String[] variables =    super.parent.listVariables();