2015-11-30 2 views
0

Я пытаюсь определить трансформацию Pentaho Kettle (ktr) через код. Я хотел бы добавить к преобразованию Шаг ввода текстового файла: http://wiki.pentaho.com/display/EAI/Text+File+Input.Pentaho SDK, как определить ввод текстового файла

Я не знаю, как это сделать (обратите внимание, что я хочу достичь результата в пользовательском приложении Java, не используя стандартный графический интерфейс Spoon). Я думаю, что я должен использовать класс TextFileInputMeta, но когда я пытаюсь определить имя файла, trasformation больше не работает (он кажется пустым в Spoon).

Это код, который я использую. Я думаю, что третья линия имеет что-то неправильно:

PluginRegistry registry = PluginRegistry.getInstance(); 
TextFileInputMeta fileInMeta = new TextFileInputMeta(); 
fileInMeta.setFileName(new String[] {myFileName}); 
String fileInPluginId = registry.getPluginId(StepPluginType.class, fileInMeta); 
StepMeta fileInStepMeta = new StepMeta(fileInPluginId, myStepName, fileInMeta); 
fileInStepMeta.setDraw(true); 
fileInStepMeta.setLocation(100, 200); 
transAWMMeta.addStep(fileInStepMeta);   

ответ

3

Для запуска преобразования программным образом, необходимо сделать следующее:

  1. инициализации чайник
  2. Подготовить TransMeta объект
  3. Prepare ваши шаги
    • Не забывайте о объектах Meta и Data!
  4. Добавьте их в TransMeta
  5. Создать Trans и запустить его
    • По умолчанию каждое преобразование прорастает нить за шагом, так что используйте trans.waitUntilFinished(), чтобы заставить ваш поток ждать, пока выполнение не завершится
  6. При необходимости выбери результаты исполнения

Используйте этот тест в качестве примера: https://github.com/pentaho/pentaho-kettle/blob/master/test/org/pentaho/di/trans/steps/textfileinput/TextFileInputTests.java

Кроме того, я бы рекомендовал вам создать преобразование вручную и загрузить его из файла, если это приемлемо для ваших обстоятельств. Это поможет избежать большого количества шаблонов. В этом случае довольно легко выполнить преобразования, см. Пример: https://github.com/pentaho/pentaho-kettle/blob/master/test/org/pentaho/di/TestUtilities.java#L346

+0

Спасибо. К сожалению, я не могу загрузить trasformation из файла, я должен создать его с нуля. Код, который вы опубликовали о «TextFileInputMeta», дает мне предупреждения об устаревших классах (например, «TextFileInputField»), и я не знаю, как их решить. Во всяком случае, теперь я использую «CsvInputMeta». Он работает лучше. Но я должен загружать поля так же, как кнопка «Get fields» в Spoon. Как я могу получить это? – ufo

+0

@ufo, в 6.0, шаг TextFileInput был устарел, и рекомендуется новый (рефакторинг) - https://github.com/pentaho/pentaho-kettle/blob/master/engine/src/org/pentaho/di/ trans/steps/fileinput/text/TextFileInput.java. Если вы разместите здесь свой код, я могу попытаться вам помочь. Не зная, где ваши проблемы, на самом деле трудно угадать :) –

 Смежные вопросы

  • Нет связанных вопросов^_^