Задание
Назначение |
Предназначена для доставки на рабочие места пользователей информации о необходимости выполнения того или иного действия в рамках налаженного документооборота, а также доставки файлов, карточек и ссылок на внешние по отношению к системе Docsvision объекты. |
Класс карточки |
Для работы с карточкой предназначен сервис ITaskService
, с помощью которого можно работать с заданиями. Позволяет создавать задания, настраивать и управлять ими.
-
Создание задания.
-
Управление состоянием задания.
-
Управление комментариями к заданию.
-
Управление исполнителями и контроллерами задания.
-
Управление делегированием задания.
-
Управление подписями задания.
-
Подготовка вложений задания.
-
Управление настройками задания.
-
Управление дочерними и родительскими заданиями.
Далее перечислены базовые сценарии работы с объектной моделью карточки "Задание", для которых действительно следующее:
-
Контекст объектов может быть получен в соответствии с примером, приведенным в разделе Инициализация контекста объектов.
-
Сервисы получаем стандартным способом:
IDocumentService documentService = objectContext.GetService<IDocumentService>(); (1) ILinkService linkService = objectContext.GetService<ILinkService>(); (2) IReferenceListService referenceListService = objectContext.GetService<IReferenceListService>(); (3) IStaffService staffService = objectContext.GetService<IStaffService>(); (4) IStateService stateService = objectContext.GetService<IStateService>(); (5) ITaskService taskService = objectContext.GetService<ITaskService>(); (6)
1 Сервис для работы с документами. 2 Сервис для работы со "Справочником ссылок". 3 Сервис для работы со списками ссылок. 4 Сервис для работы со "Справочником сотрудников". 5 Сервис для работы с "Конструктором состояний". -
Для получения информации по классам и переменным, используемым в примерах, воспользуйтесь поиском.
Создание нового "Задания"
static void CreateTask()
{
KindsCardKind kind = objectContext.GetObject<KindsCardKind>(new Guid("AB801854-70AF-4B6C-AB48-1B59B5D11AA9")); (1)
StaffEmployee employee = objectContext.GetObject<StaffEmployee>(new Guid("00000000-0000-0000-0000-000000000000")); (2)
Task task = taskService.CreateTask(kind); (3)
task.MainInfo.Name = "Название задания";
task.Description = "Дайджест созданного задания";
task.MainInfo.Author = staffService.GetCurrentEmployee(); (4)
taskService.AddSelectedPerformer(task.MainInfo, employee); (5)
task.MainInfo.Priority = TaskPriority.Low; (6)
task.MainInfo.EndDate = DateTime.Now.AddDays(1); (7)
task.MainInfo.Content = "Данное задание является примером и не требует исполнения";
objectContext.SaveObject(task); (8)
}
1 | Получение вида для создаваемого задания. AB801854-70AF-4B6C-AB48-1B59B5D11AA9 — На исполнение . |
2 | Получение сотрудника, назначаемого исполнителем задания. |
3 | Создание задания и заполнение базовых данных. |
4 | Автор задания. |
5 | Добавление выбранного исполнителя. |
6 | Установка низкого приоритета. |
7 | Срок выполнения — "завтра". |
8 | Сохранение созданного задания. |
Добавление файла в "Задание"
static void AddFile()
{
string file = @"z:\Sample.docx"; (1)
Task task = objectContext.GetObject<Task>(new Guid("00000000-0000-0000-0000-000000000000")); (2)
ReferenceList referenceList = referenceListService.CreateReferenceList();
task.MainInfo.ReferenceList = referenceList; (3)
LinksLinkType linkType = linkService.FindLink("КЗ_ДополненияФайлы"); (4)
KindsCardKind kind = objectContext.GetObject<KindsCardKind>(new Guid("F9A8D158-9884-4765-859D-31C4EFCA149D")); (5)
Document fileCard = documentService.CreateDocument(file, kind); (6)
fileCard.MainInfo.Name = "Файл для задания";
objectContext.SaveObject(fileCard); (7)
referenceListService.CreateReference(referenceList, linkType, fileCard, string.Empty, true); (8)
objectContext.AcceptChanges();
}
1 | Загружаемый файл. |
2 | Получение задания, в которое производится добавление файла. |
3 | Создание нового списка ссылок. |
4 | Получение типа ссылки по имени. |
5 | Создание карточки Файл для последующей загрузки в задание. |
6 | Получение вида карточки. |
7 | Создание документа. |
8 | Требуется сохранение. |
Отправка Задания на исполнение
static void StartTask()
{
Task task = objectContext.GetObject<Task>(new Guid("00000000-0000-0000-0000-000000000000")); (1)
taskService.StartTask(task); (2)
StatesStateMachineBranch branch = stateService.FindBranchByBuiltIn(Task.InitializationToStartedByStart, task.SystemInfo.State); (3)
stateService.ChangeState(task, branch); (4)
}
1 | Получение задания. |
2 | Запуск задания на исполнение. |
3 | Получение перехода Подготовка — Не начато . |
4 | Изменение состояния. |
Делегирование задания
static void DelegateTask()
{
Task task = objectContext.GetObject<Task>(new Guid("00000000-0000-0000-0000-000000000000")); (1)
StaffEmployee newPerformer = staffService.Get(new Guid("00000000-0000-0000-0000-000000000001")); (2)
taskService.Delegate(task, new StaffEmployee[] { newPerformer }, null, false, false, "Необходимо выполнить задание"); (3)
stateService.ChangeState(task, stateService.FindStateByBuiltIn(Task.DelegatedState, task)); (4)
}
1 | Получение задания. |
2 | Получение сотрудника, которому осуществляется делегирование задания. |
3 | Делегирование задания сотруднику "newPerformer". |
4 | Установка для задания состояния Делегировано . |
Завершение "Задания"
static void CompleteTask()
{
Task task = objectContext.GetObject<Task>(new Guid("00000000-0000-0000-0000-000000000000")); (1)
BuiltInState state = taskService.CompleteTask(task, "Задание было завершено успешно"); (2)
StatesState cancelState = stateService.FindStateByBuiltIn(state, task); (3)
stateService.ChangeState(task, cancelState); (4)
}
1 | Получение задания. |
2 | Завершение задания с комментарием. |
3 | Поиск в "Конструкторе состояний" состояния, соответствующего "встроенного" состоянию Завершено . |
4 | Изменение состояния. |
Метод CompleteTask
выполняет проверку и установку параметров, необходимых для корректного завершения задания, но фактическое изменение состояние производит метод ChangeState
.
При работе с методами сервиса |