ASBJOB OBJECT


Конструкторы

Create Создать проект задания
Get Разыскать задание на сервере, создать соответствующий объект

Свойства

Account Учетная запись, от имени которой должно выполняться задание
ASBClientPath Путь к ASB-клиенту
ClientProjectPath Путь к RED-файлу проекта
Name Имя задания
OnStart Предназначено для хранения команды запуска ASL-процедуры
Password Пароль учетной записи, от имени которой должно выполняться задание
PatienceTimeout Таймаут в секундах от момента TimeLastActivity, по истечении которого процесс будет принудительно завершен
RestartOnFailure Флаг "задание должно быть перезапущено в случае неудачного завершения"
TimeCreation Местное время последнего создания процесса ASB-клиента, соответствующего заданию
TimeLastActivity Местное время последнего успешного вызова метода Apply
Valid Флаг "задание действительно"

Методы

Apply Передать все свойства на сервер
Eliminate Уничтожить задание на сервере
Refresh Обновить все свойства, получив состояние задания с сервера

Наборы констант

PatienceTimeout Предопределенные значения свойства PatienceTimeout

Описание

Объект данного класса представляет собой описатель задания, либо проекта задания. Задание идентифицируется именем, т.е. значением свойства Name, представляет собой процесс клиента ASB, запускаемый и контролируемый непосредственно сервером ASB.

Предполагается следующий порядок работы. Проект задания создается конструктором Create. Далее можно модифицировать значения некоторых свойства задания (Account, Password, OnStart, RestartOnFailure, PatienceTimeout) и запустить задание на сервере методом Apply. В случае неудачи метод Apply выбросит исключение. Впоследствии перечисленные выше свойства задания могут быть снова модифицированы; для передачи новых значений свойств вновь потребуется вызвать метод Apply.

Исполнитель задания на сервере - это обычное подключение клиента ASB, у которого непуста ссылка APP.MyConnection.Job, а свойства задания на старте имеют те же значения, что и у экземпляра класса ASBJOB, для которого подключение-инициатор задания выполнило метод Apply. Предполагается, что стартовая программа клиента-исполнителя задания (обычно autoexec.asl) проанализирует описание собственного задания (APP.MyConnection.Job) и начнет выполнять затребованную работу. Предполагается, что в свойстве OnStart указан вызов процедуры или модуля, которые и нужно исполнить.

Конструктор Get разыскивает на сервере задание по имени и создает соответствующий ему объект. Метод Refresh обновляет все свойства задания с ASB-сервера. Метод Eliminate уничтожает задание.

Свойство Valid - это флаг действительности задания. Задание становится недействительным в следующих случаях.

  1. Конструктор Get или метод Refresh не нашел на сервере соответствующее задание.
  2. Метод Apply завершился неудачно, т.е. не удалось запустить задание.
  3. Задание уничтожено на сервере методом Eliminate.

Читать и модифицировать свойства недействительного задания нельзя, будет выброшено исключение 530.

Метод Apply передает текущие значения свойств задания на сервер и помещает в TimeLastActivity текущее время. Если изменилась учетная запись или команда OnStart, процесс клиента ASB будет перезапущен. Если изменился флаг RestartOnFailure или таймаут PatienceTimeout, новые значения просто запоминаются на сервере. Таймаут PatienceTimeout определяет интервал времени от момента TimeLastActivity, по истечении которого процесс ASB-клиента, выполняющий задание, будет принудительно завершен ASB-сервером. Пока не истек таймаут, момент принудительного завершения можно отодвинуть в будущее вызовом метода Apply. Флаг RestartOnFailure регулирует поведение сервера в случае неудачного завершения процесса ASB-клиента. Неудачным считается завершение с кодом возврата, отличным от нуля; при поднятом флаге RestartOnFailure процесс будет перезапущен сервером.

Есть два варианта использования задания. В первом варианте PatienceTimeout постоянно имеет небольшое значение (несколько минут), а флаг RestartOnFailure как правило поднят. Задание должно регулярно вызывать метод Apply, отодвигая в будущее предполагаемый момент принудительного завершения процесса. Если задание перестанет вызывать Apply, по истечении таймаута процесс будет принудительно завершен, а если поднят флаг RestartOnFailure - перезапущен. Т.о. сервер постоянно контролирует активность задания. Во втором варианте PatienceTimeout содержит реальное время, достаточное для завершения задания, а флаг RestartOnFailure как правило сброшен. Такое задание по техническим причинам не может регулярно вызывать метод Apply (например, создание резервной копии) и должно самостоятельно завершиться к указанному сроку, а иначе будет завершено принудительно.