Запуск заданий PDI с помощью веб-служб

У меня есть задание, созданное с помощью ложки и импортированное в репозиторий DI. Без планирования с помощью планировщика заданий PDI, как я могу запустить задание PDI на сервере интеграции данных с помощью веб-служб REST? Чтобы я мог звонить, когда захочу.


person Marlon Abeykoon    schedule 03.04.2015    source источник


Ответы (1)



Прежде чем приступить к этим шагам, убедитесь, что ваш сервер Carte (или сервер Carte, встроенный в сервер DI) настроен на подключение к репозиторию для вызовов REST. Процесс и описание можно найти на вики-странице. Обратите внимание, что файл repositories.xml должен быть определен и указан в соответствующем расположение для DI-сервера.

Способ 1: (запустить задание и продолжить, без проверки состояния):

  1. Запустите задание PDI (/home/admin/Job 1):

    curl -L "http://admin:password@localhost:9080/pentaho-di/kettle/runJob?job=/home/admin/Job%201" 2> /dev/null | xmllint --format -

Метод 2: (регулярно запускайте задание и опрашивайте его статус):

  1. Создайте файл cookie для входа:

    curl -d "j_username=admin&j_password=password&locale=en_US" -c cookies.txt http://localhost:9080/pentaho-di/j_spring_security_check

  2. Проверьте статус сервера DI:

    curl -L -b cookies.txt http://localhost:9080/pentaho-di/kettle/status?xml=Y | xmllint --format -

Результат:

<?xml version="1.0" encoding="UTF-8"?>
<serverstatus>
  <statusdesc>Online</statusdesc>
  <memory_free>850268568</memory_free>
  <memory_total>1310720000</memory_total>
  <cpu_cores>4</cpu_cores>
  <cpu_process_time>22822946300</cpu_process_time>
  <uptime>100204</uptime>
  <thread_count>59</thread_count>
  <load_avg>-1.0</load_avg>
  <os_name>Windows 7</os_name>
  <os_version>6.1</os_version>
  <os_arch>amd64</os_arch>
  <transstatuslist>
    <transstatus>
      <transname>Row generator test</transname>
      <id>de44a94e-3bf7-4369-9db1-1630640e97e2</id>
       <status_desc>Waiting</status_desc>
       <error_desc/>
       <paused>N</paused>
       <stepstatuslist>
       </stepstatuslist>
       <first_log_line_nr>0</first_log_line_nr>
       <last_log_line_nr>0</last_log_line_nr>
       <logging_string>&lt;![CDATA[]]&gt;</logging_string>
     </transstatus>
  </transstatuslist>
  <jobstatuslist>
  </jobstatuslist>
</serverstatus>
  1. Запустите задание PDI (/home/admin/Job 1):

    curl -L -b cookies.txt "http://localhost:9080/pentaho-di/kettle/runJob?job=/home/admin/Job%201" | xmllint --format -

Результат:

<webresult>
  <result>OK</result>
  <message>Job started</message>
  <id>dd419628-3547-423f-9468-2cb5ffd826b2</id>
</webresult>
  1. Проверить статус задания:

    curl -L -b cookies.txt "http://localhost:9080/pentaho-di/kettle/jobStatus?name=/home/admin/Job%201&id=dd419628-3547-423f-9468-2cb5ffd826b2&xml=Y" | xmllint --format -

Результат:

<?xml version="1.0" encoding="UTF-8"?>
<jobstatus>
  <jobname>Job 1</jobname>
  <id>dd419628-3547-423f-9468-2cb5ffd826b2</id>
  <status_desc>Finished</status_desc>
  <error_desc/>
  <logging_string>&lt;![CDATA[H4sIAAAAAAAAADMyMDTRNzDUNzJSMDSxMjawMrZQ0FXwyk9SMATSwSWJRSUK+WkKWUCB1IrU5NKSzPw8LiPCmjLz0hVS80qKKhWiXUJ9fSNjSdQUXJqcnFpcTEibW2ZeZnFGagrEgahaFTSKUotLc0pso0uKSlNjNckwCuJ0Eg3yQg4rhTSosVwABykpF2oBAAA=]]&gt;</logging_string>
  <first_log_line_nr>0</first_log_line_nr>
  <last_log_line_nr>13</last_log_line_nr>
  <result>
    <lines_input>0</lines_input>
    <lines_output>0</lines_output>
    <lines_read>0</lines_read>
    <lines_written>0</lines_written>
    <lines_updated>0</lines_updated>
    <lines_rejected>0</lines_rejected>
    <lines_deleted>0</lines_deleted>
    <nr_errors>0</nr_errors>
    <nr_files_retrieved>0</nr_files_retrieved>
    <entry_nr>0</entry_nr>
    <result>Y</result>
    <exit_status>0</exit_status>
    <is_stopped>N</is_stopped>
    <log_channel_id/>
    <log_text>null</log_text>
    <result-file/>
    <result-rows/>
  </result>
</jobstatus>
  1. Получите описание статуса из jobStatus API:

curl -L -b cookies.txt "http://localhost:9080/pentaho-di/kettle/jobStatus?name=/home/admin/Job%201&id=dd419628-3547-423f-9468-2cb5ffd826b2&xml=Y" 2> /dev/null | xmllint --xpath "string(/jobstatus/status_desc)" -

Результат:

Finished

PS : curl и libxml2-utils установлены через apt-get. Пакет libxml2-utils является необязательным и используется исключительно для форматирования вывода XML с сервера DI. Здесь показано, как запустить задание PDI с помощью оболочки Bash.

Поддерживается в версии 5.3 и более поздних.

person Marlon Abeykoon    schedule 03.04.2015
comment
я пытаюсь вызвать API sagepay с помощью PDI, он отлично работает с использованием CURL в PHP, но у меня возникают проблемы с получением ответа на транзакции списка. я получаю неправильный ответ. Я не знаю, как отправить POSTFIELDS с помощью Rest Client, как мы отправляем в CURL curl_setopt($curl, CURLOPT_POSTFIELDS, $xml); - person shzyincu; 25.10.2016