<< Click to Display Table of Contents >> Разработка > Элементы разработки > Разработка задач и заданий > Настройка блоков бизнес-процессов Блок «Мониторинг» |
«Мониторинг» (MonitoringBlock). Блок предназначен для контроля наступления определенного события. Например, блок добавляют, чтобы отправить уведомление, когда у документа изменится свойство.
Свойства блока
Свойство |
Описание |
---|---|
Заголовок (Title) |
Отображается в схеме задачи |
Период (Period) |
Интервал времени, через который выполняется мониторинг |
Срок прекращения (Deadline) |
Срок принудительного завершения мониторинга относительно даты и времени старта |
Выходные свойства блока
Свойство |
Описание |
---|---|
Результат выполнения (ExecutionResult) |
Результаты выполнения блока. Значения по умолчанию: Success (Успешно), Deadline (Срок истек). <Результат выполнения> – произвольный результат, добавленный разработчиком |
События блока
Событие |
Назначение |
Аргументы события |
Возвращаемое значение |
---|---|---|---|
Старт блока (<Имя блока>Start) |
Заполнение свойств блока. Событие выполняется на сервисе выполнения блоков схем задач (WorkflowBlockService) при старте обработки блока |
_obj – задача, в рамках которой обрабатывается блок; _block – блок, в рамках которого выполняется событие |
|
Результат мониторинга (<Имя блока>Result) |
Определение завершения мониторинга. Событие выполняется на сервисе выполнения блоков схем задач (WorkflowBlockService) при каждом выполнении мониторинга |
_obj – задача, в рамках которой обрабатывается блок |
Результат мониторинга. Возможные значения: True. Ожидаемое событие наступило, переход по стрелке Успешно. Мониторинг завершится. False. Ожидаемое событие не наступило. В этом случае проверяется свойство Срок прекращения (RelativeDeadline): •если время, указанное в свойстве, еще не наступило, то вычисляется, что ближе по времени: следующий период мониторинга или срок прекращения. Сообщение с этим временем отправляется в DelayOperationService. Событие будет запущено еще раз через заданный период, при наступлении срока прекращения или при вызове события из кода; •если время, указанное в свойстве, наступило, то происходит переход по стрелке Срок истек. Мониторинг завершится |
Асинхронное выполнение операции при завершении блока. Событие выполняется на сервисе выполнения блоков схем задач (WorkflowBlockService) при завершении обработки блока |
_obj – задача, в рамках которой обрабатывается блок; _block – блок, в рамках которого выполняется событие |
|
Пример. Результат мониторинга в зависимости от выполнения всех заданий по текущей задаче
// Результат мониторинга. Если все задания по текущей задаче выполнены, то
// мониторинг завершится с результатом true, иначе – false.
public virtual bool MyMonitoringBlockResult()
{
// Поиск заданий по текущей задаче.
var assignments = Sungero.Workflow.Assignments.GetAll()
.Where(a => a.MainTask == _obj.Id);
// Если все задания выполнены, создать уведомление автору задачи.
if (assignments.All(a => a.Status ==
Sungero.Workflow.Assignment.Status.Completed))
{
var notice = Sungero.Workflow.Notices.Create(_obj);
notice.Performer = _obj.Author;
notice.Subject = _block.Subjects;
notice.Task = _obj;
// Ожидаемое событие наступило. Завершение мониторинга.
return true;
}
// Ожидаемое событие не наступило. Завершение мониторинга.
return false;
}
© Компания Directum, 2024 |