<< Click to Display Table of Contents >> Объектная модель > Workflow – управление бизнес-процессами > Assignment, Notice – задания и уведомления ForwardingLocation – позиция добавления задания в маршрут задачи |
Перечисление Sungero.Core.ForwardingLocation представляет набор констант. В константах хранятся позиции маршрута задачи, куда можно добавить задания на переадресацию новому исполнителю.
Константы
Имя |
Описание |
---|---|
End |
Добавить задание в конец маршрута. В этом случае оно стартует после выполнения всех заданий |
Next |
Добавить задание после текущего задания. В этом случае оно стартует после выполнения текущего задания |
Пример. Добавить дополнительного согласующего в задание на согласование документа
/// <summary>
/// Добавить исполнителя в задание на согласование.
/// </summary>
/// <param name="assignment">Задание.</param>
/// <param name="newApprover">Новый согласующий.</param>
/// <param name="deadline">Новый срок для задания.</param>
[Public, Remote]
public void AddApprover(IAssignment assignment, IEmployee newApprover, DateTime? deadline)
{
var operation = new Enumeration(Constants.ApprovalAssignment.AddApprover);
/// Переадресация задания новому исполнителю и с новым сроком.
/// Задание стартует после выполнения текущего.
assignment.Forward(newApprover, ForwardingLocation.Next, deadline);
assignment.History.Write(operation, operation, Company.PublicFunctions.Employee.GetShortName(newApprover, false));
var task = ApprovalTasks.As(assignment.Task);
var approvalAsg = ApprovalAssignments.As(assignment);
if (task != null && approvalAsg != null)
{
var requiredApprovers = Functions.ApprovalTask.GetAllRequiredApprovers(task);
if (approvalAsg.Stage.StageType == Docflow.ApprovalStage.StageType.Approvers &&
approvalAsg.Stage.AllowAdditionalApprovers == true &&
!requiredApprovers.Contains(newApprover) &&
!task.AddApproversExpanded.Select(x => x.Approver).Contains(newApprover))
{
using (var session = new Session())
{
var approver = task.AddApproversExpanded.AddNew();
approver.Approver = newApprover;
if (!task.AccessRights.CanUpdate())
AddFullAccessRightsInSession(session, task);
task.Save();
}
}
}
}
© Компания Directum, 2024 |