Pentaho数据集成(Kettle)中'User Defined Java Class'步如何获取所有参数

How to Fetch All Parameters in 'User Defined Java Class' Step in Pentaho Data Integration (Kettle)

场景: 我正在 PDI 中创建转换。此转换有一个步骤 'User Defined Java Class',我在其中调用外部库。
此转换具有“参数”,现在,我必须单独获取所有参数 以在这一步中使用它们(传递到我的外部罐子)像这样:

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

我必须在这一步中使用 50-60 个这样的参数。我必须像这样单独获取它们中的每一个并将其传递给外部 java 库。

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. 添加新参数时,我必须在所有转换中处理修改此步骤

我的问题: 有没有办法像这样获取所有参数:

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

我试过的:

  1. 我尝试在 Pentaho Wiki & This thread 的论坛中搜索, 但是没有找到任何东西。

  2. 我可以添加一个步骤将这些参数写入 .properties 文件,然后 阅读我外部 jar 中的内容。

有人可以提出更好的想法来实现这一目标吗? 谢谢。

在 UserDefinedJavaClass 的进程行中使用这样的方法

String[] variables =    super.parent.listVariables();