Мне не удалось заставить его работать с шагом пользовательского класса Java, но вместо этого я использовал шаг Javascript. Вам нужно сначала скопировать JAR в папку pentaho / lib или / libext. Затем в шаге модифицированного JavaScript я просто позвонил в класс. Вот мой шаг XML
<entry>
<name>JavaScript</name>
<description />
<type>EVAL</type>
<script>
var filename=parent_job.getVariable("filename","");
var filenameClean=filename+"_clean";
package.CsvCleaner(filename,filenameClean);
</script>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>800</xloc>
<yloc>1008</yloc>
</entry>
Важная часть package.CsvCleaner(filename,filenameClean);
на самом деле вызывает конструктор класса с двумя параметрами, и я добавил свой код в конструктор. Вы также можете вызывать методы и прочее.
Полагаю, пользовательская Java вызывается аналогичным образом - добавьте jar в / lib, импортируйте класс и используйте его.
У меня есть один совет, хотя. По моему мнению, лучше оставить JAR с фактическим кодом ETL (и не делать его частью pentaho, добавив его в / lib или / libext) и выполнить его с помощью команды оболочки - что-то вроде java -jar MyProg.jar
В противном случае у вас будет странные проблемы:
- со старой версией Jar в папке установки pentaho
- сложная установка, потому что этот jar не там, где находятся файлы kjb и kjt
- если pentaho установлен с пользователем, отличным от пользователя, развертывающего ETL, он может не иметь прав доступа к папкам / lib и / libext
- Если у вас более сложный java-код и логика, лучше хранить его в jar, а не в преобразовании (наличие java-кода в двух местах - адское обслуживание). Поэтому добавление jar в pentaho не даст вам никакой выгоды, чем просто вызов java -jar MyJar.jar