<< Click to Display Table of Contents >> Объектная модель > Workflow – управление бизнес-процессами > Scheme – схема GetOutputEdges – получить список переходов, которые выходят из блока |
![]() ![]() |
Метод используется для получения информации об исходящих переходах для блока. С помощью него можно разрабатывать код для выполнения сложных вычислений в схеме: проверять схему и определять примерное время завершения задачи или выяснять, в каком направлении будет двигаться схема в зависимости от выбранного результата выполнения. Метод доступен только в серверном коде.
Например, при выполнении задания с результатом «Согласовать» нужно проверять права на документ у исполнителя задания, которое сформируется далее по процессу. Если прав не хватает, то отображать для пользователя диалог назначения прав. С помощью метода разработчик может получать все результаты выполнения из блока задания и в программном коде добавлять проверку прав доступа и отображение диалога.
Метод позволяет получать:
•список исходящих переходов из заданного блока;
•значение каждого перехода у блока.
Синтаксис
C# |
public IEdgeCollection GetOutputEdges(ISchemeBlock block); |
Параметры
block – блок.
Возвращаемое значение
Переходы, которые выходят из блока.
ISchemeEdge – переход между блоками
Свойства
Имя |
Тип |
Описание |
---|---|---|
Else |
bool |
Признак того, что текущий переход – переход «Иначе» |
Source |
Блок, из которого направлен переход |
|
Target |
Блок, в который направлен переход |
|
Unconditional |
bool |
Признак того, что текущий переход – безусловный |
Value |
Enumeration |
Значение перехода |
Пример. Получение исходящих переходов из блока
// Обратиться к схеме варианта процесса.
IScheme scheme = _obj.Scheme;
// Получить блок с типом "Задание".
var assignmentBlock = AssignmentSchemeBlocks.Get(scheme, assignment.BlockUid);
// Получить исходящие переходы из блока.
var outputEdges = scheme.GetOutputEdges(assignmentBlock);
// Получить безусловный переход.
var unconditionalEdge = outputEdges.FirstOrDefault(e => e.Unconditional);
// Получить переход "Иначе".
var elseEdge = outputEdges.FirstOrDefault(e => e.Else);
// Получить переход по ожидаемому результату выполнения задания.
var edgeByValue = outputEdges.FirstOrDefault(e => e.Value == executionResult) ?? elseEdge ?? unconditionalEdge;
© Компания Directum, 2024 |