Разработка пользовательского компонента Talend: как создать что-то действительно настраиваемое, не требующее ввода или вывода? - PullRequest
0 голосов
/ 08 июля 2019

Чтобы подключиться к API-интерфейсу мыла для получения некоторых аналитических данных, мне нужно использовать пользовательское библиотека и пользовательский код для запуска запроса и загрузки результата в виде файла CSV.

PoC выполняется вне Talend, и все работает отлично.

Теперь мне нужно интегрировать эти вещи в работу Talend. Разработать что-то самое простое, насколько это возможно, без процесса перестройки, уже включенного в Talend.

Например, я хочу разработать простой компонент, который принимает базовые учетные данные в параметрах, и просто выполнить запрос и загрузить результат csv. Затем я смогу использовать tFileInputDelimited для анализа файла csv и продолжения моей работы с Talend. И в какой-то момент это работает, но я не могу очистить хаки, которые я сделал для этого второго PoC, чтобы работать ... Потому что Talend мешает мне это делать.


Чтение всей (нескольких) документов на нем (

)

Я понял, что вы можете создавать ТОЛЬКО 3 типа компонентов.

  • Компонент ввода [I] =>, который не требует ввода, автоматически запускается, если не зависит от какого-либо родительского задания, и ДОЛЖЕН сопровождаться другим компонентом для обработки его результата.

    [I] --> (...)
    
  • Компонент вывода [O] ​​=> Он принимает входные данные, но не имеет выходных данных (как, например, регистратор строк). Поскольку он зависит от родительского компонента, он не может быть запущен сам по себе.

    (...) --> [O]
    
  • Гибридный компонент под названием Processor [P], это не что иное, как выходной компонент, который также может производить что-то в результате, поэтому он может быть связан с другим (но это не обязательно). Но так как это всего лишь альтернативная версия компонента вывода, она должна зависеть от родителя

    (...) --> [P] --> (...)
    

Хорошо, давайте перечислим, что мне нужно сделать для моего компонента, и посмотрим, что подходит лучше всего:

  1. Он должен иметь возможность срабатывать сам по себе, потому что ему не нужно вводить
  2. Он должен отправить событие "onComponentOk", когда его работа завершена
  3. Он не должен требовать какого-либо компонента вывода, потому что результат не является чем-то, что связывает цепочку со следующим, а просто сигнализирует: «Эй, CSV-файл готов, найдите его там, где знаете»

Да! идеально. Теперь давайте выясним, какой тип компонента соответствует каждому требованию:

  1. => Входной компонент
  2. => Компоненты входа, выхода и процессора
  3. => Компоненты вывода и процессора

Так какой из них соответствует всем этим требованиям? Никто ...


(Для упрощения давайте рассмотрим компоненты Вывода и Процессора для остальной части этого поста.)

Итак, я попробовал две возможные реализации:

  • Используя компонент ввода, он будет работать правильно. Но Talend не скомпилирует мою работу, если я не подключу другой компонент после моего. Так что это дерьмо, но у меня должен быть компонент, который (не) использует мой (не) результат, чтобы построить работу ..... Это сводит меня с ума.

  • Используя компонент процессора, он будет работать правильно, на этот раз мне не нужно подключать другой компонент после. НО, моя процедура инициализации компонента никогда не запустится, если она не получит никаких данных. Поэтому я должен подключить поддельный компонент, который передает (нет) данные в мой компонент (который ничего не требует) для запуска. бхваАААААААА !!!

Итак, я прочитал все, что смог найти по этому вопросу, даже пробовал некоторые мистические ритуалы. Но я не могу найти ни одного (чистого) решения!

Я также пытался возиться с Java-аннотациями инструментария Talend, чтобы отключить ввод или вывод.

ПОМОГИТЕ, если кто-то знает секретные советы по инструментарию Talend, у меня широко открыты уши.

Но я думаю, что ответ - пересмотреть проблему. Потому что это связано с моим требованием, которое не соответствует возможностям Talend.Я знаю, что должен предоставить данные результата. Но зачем заново создавать tFileInputDelimited ??? Мне придется поддерживать больше кода, и я не хочу дублирования.

В идеальном мире решением было бы просто отправить путь вывода файла csv следующему компоненту. Но, к сожалению, tFileInputDelimited, похоже, не может установить свою конфигурацию из предыдущего вывода компонента. Но я могу ошибаться. Честно говоря, я только начал работать с Talend 2 недели назад. Я знаю только 1% материала.

У кого-нибудь есть идеи?

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