Вручную зарегистрировать плагин

Я пытаюсь запустить трансформацию с использованием PDI, встроенного в код Java, но получаю сообщение об отсутствии плагина (похоже, это шаг «Прервать»).

Я знаю, что могу использовать KETTLE_PLUGIN_BASE_FOLDERS, чтобы PDI загружал его автоматически (это работает), но чтобы упростить мое приложение, я хотел бы вручную зарегистрировать этот плагин с помощью Java, как я могу это сделать?

Я использую приведенные здесь примеры https://github.com/pentaho/pdi-sdk-plugins/tree/master/kettle-sdk-embedding-samples

2019/08/14 17:03:07 - Could not find on destination DB.0 - ERROR (version 8.2.0.7-719, build 8.2.0.7-719 from 2019-06-24 02.06.35 by buildguy) : Can't run transformation due to plugin missing
2019/08/14 17:03:07 - Could not find on source DB.0 - ERROR (version 8.2.0.7-719, build 8.2.0.7-719 from 2019-06-24 02.06.35 by buildguy) : Can't run transformation due to plugin missing
2019/08/14 17:03:07 - Could not find on destination DB.0 - ERROR (version 8.2.0.7-719, build 8.2.0.7-719 from 2019-06-24 02.06.35 by buildguy) : Error initializing step [Could not find on destination DB]
2019/08/14 17:03:07 - Could not find on source DB.0 - ERROR (version 8.2.0.7-719, build 8.2.0.7-719 from 2019-06-24 02.06.35 by buildguy) : Error initializing step [Could not find on source DB]
2019/08/14 17:03:07 - Could not find on destination DB 2.0 - ERROR (version 8.2.0.7-719, build 8.2.0.7-719 from 2019-06-24 02.06.35 by buildguy) : Can't run transformation due to plugin missing
2019/08/14 17:03:07 - Could not find on destination DB 2.0 - ERROR (version 8.2.0.7-719, build 8.2.0.7-719 from 2019-06-24 02.06.35 by buildguy) : Error initializing step [Could not find on destination DB 2]
2019/08/14 17:03:07 - Abort.0 - ERROR (version 8.2.0.7-719, build 8.2.0.7-719 from 2019-06-24 02.06.35 by buildguy) : Can't run transformation due to plugin missing
2019/08/14 17:03:07 - Abort.0 - ERROR (version 8.2.0.7-719, build 8.2.0.7-719 from 2019-06-24 02.06.35 by buildguy) : Error initializing step [Abort]

person ysn    schedule 14.08.2019    source источник


Ответы (1)


Чтобы зарегистрировать подключаемый модуль, вы должны установить системное свойство KETTLE_PLUGIN_CLASSES с полным именем класса метакласса подключаемых модулей перед инициализацией KettleEnvironment. Свойство может быть строкой всех подключаемых модулей, которые вы хотите зарегистрировать, через запятую.

Это пример того, как зарегистрировать плагин:

  void initEnv() {
    // Register plugins here
    System.setProperty("KETTLE_PLUGIN_CLASSES","org.pentaho.di.trans.steps.jsoninput.JsonInputMeta");
    try {
      KettleEnvironment.init();
    } catch (KettleException e) {
      e.printStackTrace();
    }
  }

В этом примере регистрируется шаг JSON Input, который является основным плагином. Чтобы PDI успешно загрузил плагин, его jar-файл должен быть доступен в пути к классам.

person MattsH    schedule 12.11.2019