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 - это флаг действительности задания. Задание становится недействительным в следующих случаях.
Читать и модифицировать свойства недействительного задания нельзя, будет выброшено исключение 530.
Метод Apply передает текущие значения свойств задания на сервер и помещает в TimeLastActivity текущее время. Если изменилась учетная запись или команда OnStart, процесс клиента ASB будет перезапущен. Если изменился флаг RestartOnFailure или таймаут PatienceTimeout, новые значения просто запоминаются на сервере. Таймаут PatienceTimeout определяет интервал времени от момента TimeLastActivity, по истечении которого процесс ASB-клиента, выполняющий задание, будет принудительно завершен ASB-сервером. Пока не истек таймаут, момент принудительного завершения можно отодвинуть в будущее вызовом метода Apply. Флаг RestartOnFailure регулирует поведение сервера в случае неудачного завершения процесса ASB-клиента. Неудачным считается завершение с кодом возврата, отличным от нуля; при поднятом флаге RestartOnFailure процесс будет перезапущен сервером.
Есть два варианта использования задания. В первом варианте PatienceTimeout постоянно имеет небольшое значение (несколько минут), а флаг RestartOnFailure как правило поднят. Задание должно регулярно вызывать метод Apply, отодвигая в будущее предполагаемый момент принудительного завершения процесса. Если задание перестанет вызывать Apply, по истечении таймаута процесс будет принудительно завершен, а если поднят флаг RestartOnFailure - перезапущен. Т.о. сервер постоянно контролирует активность задания. Во втором варианте PatienceTimeout содержит реальное время, достаточное для завершения задания, а флаг RestartOnFailure как правило сброшен. Такое задание по техническим причинам не может регулярно вызывать метод Apply (например, создание резервной копии) и должно самостоятельно завершиться к указанному сроку, а иначе будет завершено принудительно.