EXECUTE_SCRIPT

Шаг EXECUTE_SCRIPT запускает указанный скрипт с помощью выбранного интерпретатора.

Если к входному порту не подключено ребро, шаг запускает скрипт только один раз. В этом случае создается одна выходная запись.

Когда на входной порт поступают записи, выполняется одно выполнение скрипта для каждой записи и создается одна выходная запись для каждого выполнения скрипта.

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

Порты EXECUTE_SCRIPT:

Тип портаНомерОбязательныйОписаниеМетаданные
Input0нетПараметры запуска скрипта.Любые
Output0нетРезультаты выполнения скрипта.Любые

Атрибуты EXECUTE_SCRIPT:

АтрибутОбязательныйОписаниеВозможные значения
scriptнетКод скрипта, который будет выполнен.
scriptURLнетURL-адрес скрипта, который будет выполнен.scriptURL="./folder/data/stage/script.exe"
scriptCharsetнетКодировка символов, используемая в скрипте.scriptCharset="UTF-8 "
interpreterдаИспользуемый интерпретатор.interpreter="сmd"
workingDirectoryнетРабочий каталог исполняемого скрипта. Все относительные пути, используемые внутри скрипта, будут интерпретироваться относительно этого каталога. workingDirectory="./data-tmp/stage/ftpClearHistory/"
inputMappingнетЗадаёт параметры выполнения скрипта. Можно переопределить script, scriptURL, interpreter, workingDirectory.

<attr name="inputMapping">
    <![CDATA[
        function transform() {
            $out[0].script = 'zip -r '+fileNameWithoutExtension+'.zip '+fileName+ ' --password ${ARCHIVE_PASSWORD}';
        return ALL;
        }
    ]]>
</attr>

outputMappingнетСопоставляет результаты успешного выполнения скрипта с метаданными на выходном порте.

<attr name="outputMapping">
    <![CDATA[
        function transform() {
            $out[0] = $in[1];	
        return ALL;
        }
    ]]>
</attr>

Мапинг входных данных

Атрибут inputMapping позволяет переопределить настройки шага на основе данных из входящего потока.

Параметры, которые можно переопределить в inputMapping:

  • script,
  • scriptURL,
  • scriptCharset,
  • interpreter,
  • workingDirectory.

Маппинг выходных данных

outputMapping — это преобразование, которое используется для заполнения потока, передаваемого в нулевой выходной порт шага EXECUTE_SCRIPT. Этот маппинг используется для вывода данных при успешном выполнении графа.

Данные, которые шаг может подать на выход:

  • std_out,
  • err_out,
  • exit_value,
  • err_exception.

Пример. Выполнение скрипта, указанного в файле.

Нужно запустить скрипт и вывести результат его работы в файл. Для этого:

  1. Поместить шаг EXECUTE_SCRIPT на рабочую панель Дизайнера.
  2. Заполнить атрибуты EXECUTE_SCRIPT в редакторе шага:
АтрибутЗначение
scriptURLsome_directory_name/scriptURL.sh
interpretersh
outputMapping
function transform() {

$out[0].stdOut = $in[1].stdOut;
$out[0].errOut = $in[1].errOut;
$out[0].exitValue = $in[1].exitValue;
$out[0].errException = $in[1].errException;

return ALL;
}
  1. Поместить на рабочую область шаг FLAT_FILE_WRITER.
  2. Заполнить атрибуты FLAT_FILE_WRITER в редакторе шага:
АтрибутЗначение
fileURLdataout_dir/file_name.txt
  1. Соединить шаги ребром с метаданными:
Имя поляТип данных
stdOutstring
errOutstring
exitValuestring
errExceptionstring

Используемый скрипт:

echo 'scriptURL'

После запуска графа в файл "dataout_dir/file_name.txt" запишется следующее:

Имя поляЗначение
stdOutscriptURL
errOut
exitValueexit status: 0
errException