Шаги

Шаг есть задача, рассмотренная с точки зрения последовательности выполнения. Шаги позволяют реализовать простейший workflow внутри пакета, т.е. ветвление логики выполнения задач в зависимости от результата работы предыдущих этапов (см. рис.6). Несмотря на то, что объектная модель DTS рассматривает шаг как самостоятельную, отличную от задачи сущность, нам будет удобно представлять себе шаг в виде обертки вокруг задачи. ActiveX-код этой обертки (контекстное меню задачи шага, пункт Workflow Properties, закладка Options, Use ActiveX Script -> Properties) выполняется ранее привязанной к ней задачи, что позволяет нам на основе результатов этого кода принять решение о способе выполнения соответствующей задачи: пропустить, выполнить пять раз, выполнять, пока не ... и т.д. Переход от одного шага к другому может происходить в случае успешного завершения предыдущего шага, в случае неудачного завершения, либо просто по завершении независимо от результата. Например, первый шаг включает в себя ActiveX Script-задачу создания базы данных с помощью SQL-DMO, в случае успешного создания производится переход к шагу, состоящему из SQL-задачи создания таблиц, в случае неудачи выполняется шаг с задачей SQL Mail, отсылающей сообщение администратору. Возможны ситуации, когда шаг имеет право выполняться только если не один, а несколько предшествующих шагов закончились, допустим, успешно, или наоборот, когда в результате выполнения одного шага происходит переход сразу к нескольким шагам, как мы видим на рис.6 (зеленые пунктирные стрелки означают "при успехе"). В этом случае сразу несколько шагов, т.е. задач будут выполняться параллельно, например, данные из Oracle и Sybase будут одновременно грузиться в таблицы на SQL Server на разных потоках внутри одного процесса. (Процесс соответствует пакету). По умолчанию, все потоки выполняются с одинаковыми приоритетами, равными приоритету процесса, но для более важных и критичных задач можно подправить относительный приоритет. Это делается из контекстного меню задачи, пункт Workflow Properties, закладка Options, бегунок Task Priority. Приоритет всего пакета в целом управляется из диалогового окна DTS Package Properties, закладка General, группа Execution Parameters, бегунок Priority Class. Там же определяется максимальное число параллельно выполняющихся задач (по умолчанию 4). Если не прибегать к DTS Designer, то все это можно сделать изнутри приложения с использованием DTS API: свойства DTSPackage.PackagePriorityClass и DTSStep.RelativePriority.

Назад | Содержание | Вперед