Выполнение обработки данных.
У всего рабочего процесса есть состояние выполнен или не выполнен. Это состояние зависит от всех нод входящих в этот процесс. И оно очень условно, т.е. нет никакой необходимости выполнять весь процесс целиком. Каждая нода может быть выполнена самостоятельно и условно "финальных" точек процесса может быть несколько. Это могут быть сохранения различных файлов, отправка писем и т.д.
У нод 3 состояния, которые показаны индикаторами под иконкой ноды.
- Красный - нода не готова к выполнению. Не указаны обязательные параметры в настройках, ну подключены обязательные входы (как на примере) и т.д. Нода в таком состоянии выполнена быть не может.
- Желтый - нода настроена и готова к выполнению.
- Зеленый - нода отработала успешно, данные обработаны (созданы объекты подключения и т.д.) Результат выполнения ноды записан.
Треугольник с восклицательным знаком поверх статуса говорит о наличии предупреждения, которое не мешает работе ноды, но предупреждает о возможных проблемах с обработкой данных. Пример такого предупреждения пустая таблица с данными. Что не влияет на обработку данных, но скорее всего влияет на результат этой обработки.
Любую ноду можно выполнить через контекстное меню или по F7, а так же сбросить (Reset) ее состояние к готова к выполнению, так же через контекстное меню или по F8.
Последовательность запуска нод.
Несколько правил определяющих последовательность запуска нод и влияющих на запуск других зависимых нод.
- для выполнения ноды необходимо, чтобы все ноды в цепочке до нее были выполнены или готовы к выполнению
- выполненная нода сохраняет результат выполнения и никак не контролирует его, обращение к этому результату никак не влияет на эту ноду
- выполнение ноды приводит к принудительному выполнению всех нод до нее, если они уже были выполнены, то с ними ничего не происходит, а просто читается их результат прошлого выполнения
- сброс ноды приводит к сбросу всех нод после нее, последовательно по рабочему процессу
- сброс ноды приводит к удалению данных прошлого выполнения
- все ноды могут быть выполнены параллельно, если это не противоречит последовательности выполнения нод
- при выполнении всего процесса (всех нод за раз), каждая отдельная нода будет выполнена, как только выполнены все ноды до нее или до нее нет нод
- ноды подключений к БД и другим источникам, так же не следят за состоянием этого подключения, они установили его и передали его свойства далее другим нодам, но если подключение отключилось по таймауту или другим причинам, то автоматически никакого переподключения не произойдет
- нельзя никаким образом перезапустить ноды, по цепочке до текущей. При построении процесса обработки данных не допускается его зацикливание (циклы можно использовать, для этого есть специальный набор нод, подробнее про это в других статьях)
Важно понимать что нода выполняется как только возможно, а не тогда когда ее результат нужен. Это может быть важно например при подключении к БД, допустим идет процесс обработки данных, результат которого должен быть сохранен в БД и если этот процесс долгий, а нода подключения к БД отработает сразу, то это подключение может быть отключено по таймауту еще до того как дойдет очередь до записи в БД. Что приведет к ошибке записи.
Как уже сказано выше все выполненные ноды хранят результат выполнения, соответсвенно можно в любой момент посмотреть этот результат. Так же и весь процесс обработки данных, при его сохранении хранит и состояние нод и результаты их работы, при наличии.
Т.е. выполнив процесс и сохранив его вы всегда сможете посмотреть результат его работы и что-то сделать с этими данными. В любой момент в любом процессе можно обратиться к уже выполненным нодам подключить к ним другие ноды построить дополнительный процесс обработки никак не трогая текущий.
Вы можете использовать результат работы ноды сколько угодно раз, подключая его к различным последующим нодам, но при этом на вход можно подключить только одну ноду. И если нужно объединить данные (переменные, объекты), то для этого нужно использовать специальные ноды.
Типизация входов.
Все входы и выходы у нод строго типизированы. О типе говорит значок этого входа или выхода. Важны его форма и цвет. Никогда нельзя соединить напрямую значки разной формы и в большинстве случаев нельзя подключить значки разного цвета. Бывает исключение в виде серого квадрата, когда это универсальное подключение и не так важен его тип, для ноды работающей с этим подключением.
Всегда если нужно поменять тип данных, например перейти от данных БД к таблице, то нужно использовать специальные ноды осуществляющие требуемое преобразование.
Особый тип подключение переменные (красный круг). Он может быть как и основным выходом или входом ноды и такие ноды как правило предназначены для работы с переменными. А так же у каждой ноды есть по умолчанию скрытые входы и выходы для переменных. Отобразить их можно через контекстное меню или если взять выход переменной и перетянуть его к любой ноде, то при подключении появится вход автоматически.
Переменные так же передаются вместе с любыми данными и объектами. Они передаются по любому типу подключения. Подробнее о переменных и почему они так важны, в следующих статьях.
С помощью этих дополнительных подключений переменными можно достаточно просто управлять последовательностью выполнения нод. Важно в этот момент не нарушить процесс выполнения, если вдруг значения этих переменных меняются в процессе и тогда такое подключение может нарушить процесс.
Заключение
Построение процесса обработки данных идет по правилам построения прямого ациклического графа. Да, есть ноды для построения циклов, но они встраиваются в процесс по общим правилам.