Type parameters

Hierarchy

Properties

Readonly code

code: string

Код приложения цели ссылки (код приложения).

Readonly data

data: Based<Partial<ProcessTaskData>>

Значения полей объекта.

Readonly fields

fields: Readonly<object>

Описание полей объекта.

Readonly id

id: string

Идентификатор цели ссылки.

Readonly namespace

namespace: string

Пространство имен цели ссылки (код раздела приложения).

Methods

changeDueDate

  • changeDueDate(dueDate: TDatetime, comment?: undefined | string): Promise<void>
  • Изменение времени выполнения задачи.

    Установка новой даты выполнения задачи:

    try {
      // Получаем комментарий из контекста процесса
      const comment = Context.data.comment;
    
      // Получаем ID задачи из контекста процесса
      const taskUUID = Context.data.taskid;
    
      let task = await System.processes._searchTasks().where(x => x.__id.eq(taskUUID)).first();
      // Если задача не найдена, то выводим ошибку
      if (!task) {
        throw new Error('Задача не найдена');
      }
      // Получаем текущую дату
      let newDueDate = new Datetime();
    
      // Прибавляем один день
      newDueDate = newDueDate.addDate(0, 0, 1);
    
      await task.changeDueDate(newDueDate, comment);
    } catch (error) {
      // Процесс уже завершен, можно обработать исключение
    }
    

    Parameters

    • dueDate: TDatetime
    • Optional comment: undefined | string

    Returns Promise<void>

createReminder

  • Создание напоминания.

    Пример поиска задачи и создания напоминания для неё:

    // Получаем объект задачи
    let task = await System.processes._searchTasks().where(x => x.__id.eq(taskUUID)).first();
    // Если объект задачи не найден, то заканчиваем выполнение скрипта
    if (!task) {
     return;
    }
    
    // Получаем текущего пользователя
    const user = await System.users.getCurrentUser();
    
    // Получаем текущую дату и прибавляем один день
    // Временная зона берётся из поля `System.timezones.current`
    let dateReminder = new Datetime();
    dateReminder = dateReminder.add(new Duration(1, 'days'))
    
    // Создаём напоминание о задаче на следующий день
    await task.createReminder(dateReminder, user);
    

    Parameters

    Returns Promise<ReminderItem>

    Напоминание.

fetch

getExits

  • Получение вариантов выхода по задаче.

    Поиск и завершение задачи:

    try {
      // Получаем объект задачи
      let task = await System.processes._searchTasks().where(x => x.__id.eq(taskUUID)).first();
      // Если объект задачи не найден, то заканчиваем выполнение скрипта
      if (!task) {
      return;
      }
      // Получаем выходы для задачи
      const exits = await task.getExits();
    
      // Завершаем задачу
      // Передаем идентификатор выхода и данные формы
      await task.submitTask(exits[0].id, {comment: 'Task completed'});
    } catch (e) {
      // Процесс уже завершен, можно обработать исключение
    }
    

    Returns Promise<TaskItemExit[]>

getPerformers

  • Метод получает список исполнителей задачи.

    const instance = await task.getPerformers();
    

    Returns Promise<UserItem[]>

    Пользователи, выполняющие задачу.

getProcessInstance

  • Метод получает объект процесса.

    const instance = await task.getProcessInstance();
    

    Returns Promise<ProcessInstanceItem<Context>>

    Процесс, в рамках которого запущена задача.

normalize

  • normalize(): void
  • Удаление дублирующихся данных в массивах.

    Выполнить удаление дубликатов в полях, в которых хранятся массивы ссылок на объекты системы (пользователи, файлы, элементы приложений, документы).

    Этот метод, например, можно вызвать после массового изменения данных в объекте.

    const app1 = await Context.data.app1.fetch();
    const app2 = await Context.data.app2.fetch();
    
    app1.data.executors.push(app2.data.executors);
    app1.normalize();
    
    // Далее перебираем элементы нового массива
    app1.data.executors.forEach( ... );
    

    Returns void

reassign

  • Переназначение задачи на одного или нескольких новых исполнителей.

    Причина переназначения записывается в ленту задачи. Задачи ознакомления/cогласования и системные будут переназначены на первого пользователя, указанного в наборе новых исполнителей. Если экземпляр процесса завершен, или задача уже закрыта, то исполнение прерывается исключением.

    В первом примере происходит переназначение задачи по ID из контекста на нового исполнителя в единственном числе.

    async function reassign(): Promise<void> {
        // Идентификатор задачи для переназначения берем из контекста процесса
        const taskID = Context.data.TaskForReassignUUID;
    
        // Ищем задачу
        const task = await Application.processes._searchTasks().where(x => x.__id.eq(taskID)).first();
        // Пользователя получаем из контекста
        const user = Context.data.NewPerformer;
    
        const comment = "Замена исполнителя";
        await task.reassign(user, comment);
    }
    

    Рассмотрим ещё один пример.

    В этом примере происходит переназначение задачи по ID из контекста на пользователей из группы.

    async function reassignMany(): Promise<void> {
        // Идентификатор задачи для переназначения берем из контекста процесса
        const taskID = Context.data.TaskForReassignUUID;
    
        // Ищем задачу
        const task = await Application.processes._searchTasks().where(x => x.__id.eq(taskID)).first();
        // Идентификатор группы пользователя получаем из контекста
        const userGroupID = Context.data.groupUUID;
        // Ищем группу пользователей
        const userGroup = await System.userGroups.search().where(x => x.__id.eq(userGroupID)).first();
        const newPerformers = <UserItemRef[]>await userGroup.users();
    
        const comment = "Задаем на нескольких исполнителей";
        await task.reassign(newPerformers, comment);
    }
    

    Parameters

    Returns Promise<void>

submitTask

  • submitTask(exitID: string, data?: Context): Promise<void>
  • Выполнение задачи.

    Поиск и завершение задачи:

    try {
      // Получаем объект задачи
      let task = await System.processes._searchTasks().where(x => x.__id.eq(taskUUID)).first();
    
      // Получаем выходы для задачи
      const exits = await task.getExits();
    
      // Передаем идентификатор выхода и данные формы
      await task.submitTask(exits[0].id, {comment: 'Task completed'});
    } catch (e) {
      // Процесс уже завершен, можно обработать исключение
    }
    

    Parameters

    • exitID: string
    • Optional data: Context

    Returns Promise<void>