Как мне обновить данные соединения Pentaho transformations с помощью Java?

Я использую Java для создания спокойного API на основе функций интеграции данных Pentaho.

Я реализовал несколько конечных точек, таких как возможность создания репозитория содержащие задания и преобразования, выполнение заданий и преобразований, отображение изображения задания и преобразований, отображение соединений с базой данных в репо, а также многое другое.

Я пытаюсь создать конечную точку, которая позволяет изменять источники данных, такие как имя хоста, имя базы данных и т. д. Но я столкнулся с проблемой, когда дело доходит до сохранения новых деталей подключения.

Вот фрагмент кода, который у меня есть. Я жестко запрограммировал значения просто для тестирования. Я просматриваю список массивов, содержащий DatabaseMeta, а затем меняю значения полей.

for(DatabaseMeta meta: databaseMeta) {
       meta.setHostName(“test_host”) ;
       meta.setDBPort(“test_port”);
       meta.setDBName(“test_database”);
       repositoryService.updateDataSource(databaseMeta);
 }

Метод updateDatasource () просто вызывает repository.save () (который является частью пакета org.pentaho.di.repository) и передает DatabaseMeta.

Когда этот метод выполняется, он создает файл .kdb в моем репозитории со значениями, которые я установил выше, и выполнение запроса GET к конечной точке возвращает сведения о соединении из нового файла. Однако я просто хочу перезаписать значения в существующем соединении преобразования и вернуть их в запросе GET. Можно ли как-нибудь достичь этого? Любая помощь будет оценена.

Спасибо.

Просто чтобы убедиться, что вы не изобретаете велосипед: (1) знаете ли вы о создании веб-API вокруг PDI? (2) вы знаете файл чайник.properties?

AlainD 11.10.2018 10:51

Итак, вы хотите получать значений нового соединения без создания нового .kdb в репозитории?

AlainD 11.10.2018 10:53

Я знаю о Carte, но компания, в которой я работаю, хочет, как вы говорите, «изобретать велосипед».

J.A 11.10.2018 11:28

Да, я хочу иметь возможность хранить новые данные о подключении в существующем .ktr, а затем иметь возможность получать их в запросе GET, не создавая новый .kdb в репозитории. Это возможно? Я ломал голову 3 дня, пытаясь решить эту проблему.

J.A 11.10.2018 11:35

Я так не думаю. UpdateDatasource, который является обязательным, автоматически создаст новый .kdb. Однако вы можете создать новый источник данных tmp, который впоследствии удалите.

AlainD 11.10.2018 19:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
484
1

Ответы 1

Я не знаю о части интеграции JAVA, но что касается чистого Pentaho, соединение с базой данных, указанное в KTR / KJB, должно иметь те же параметры, что и в KTR / KJB, как таковые:

Таким образом, любые параметры, которые вы передаете в KTR / KJB, будут заменены в соединении.

Другие вопросы по теме