Type parameters

Hierarchy

Properties

__id

__id: TString

Идентификатор экземпляра.

Readonly code

code: string

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

Readonly data

data: Based<Partial<ProcessInstanceData>>

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

Readonly fields

fields: Readonly<object>

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

Readonly id

id: string

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

Readonly namespace

namespace: string

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

Methods

fetch

getParent

  • Метод получает родительский экземпляр процесса.

    В компании в рамках процесса могут быть запущены подпроцессы. При работе с подпроцессом можно получить родительский процесс, в рамках которого был запущен данный процесс.

     const parentProcess = await instance.getParent();
    

    Returns Promise<ProcessInstanceItem<Context> | undefined>

    Родительский процесс, если он существует.

getTemplate

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

    Метод позволяет получить шаблон, на основе которого создан экземпляр процесса. Шаблон содержит поля контекста. Данные поля и их типы необходимо учитывать при запуске процесса и при работе с полями текущего экземпляра.

    Например, поля, ссылающиеся на приложение, могут содержать в себе Namespace и code приложения, на которое ссылаются.

    В примере указан процесс, который содержит в поле application ссылку на приложение dogovor в разделе documents. Зная данную информацию, возможно получить доступ к приложениям через Namespace.

         // `instance` — переменная, содержащая данные запущенного экземпляра процесса
        const template = await instance.getTemplate();
    
        // Извлекаем из шаблона поле, привязанное к приложению
        const applicationField = template.context['application'];
        if (!applicationField) {
            throw new Error('Поле приложения не найдено');
        }
    
        // После извлечения приложения возможно выполнять поиск, создание и другие операции
        const app = Namespace.app[applicationField.data.code];
    

    Returns Promise<ProcessTemplate<Context>>

    Шаблон процесса.

getTimer

  • getTimer(timerOwnerId: string): Promise<ProcessTimer | undefined>
  • Метод получает действующий таймер процесса.

    Метод вернёт экземпляр действующего таймера по идентификатору блока, к которому принадлежит таймер. Идентификатор блока можно скопировать на форме настроек блока Таймер. Это обычный UUID, записанный в виде строки. Если процесс на диаграмме ещё не дошёл до таймера или уже прошёл его, то метод вернёт undefined.

       // `instance` — переменная, содержащая данные запущенного экземпляра процесса
       const timer = await instance.getTimer('идентификатор блока');
       if (timer) {
           // Активный таймер найден — можно действовать
       }
    

    Parameters

    • timerOwnerId: string

    Returns Promise<ProcessTimer | undefined>

    Действующий таймер, если он запущен.

getTimers

  • Метод получает все действующие таймеры процесса.

    Метод возвращает массив экземпляров действующих таймеров. Если при вызове метода в экземпляре процесса не окажется действующих таймеров, то вернётся пустой массив.

       // `instance` — переменная, содержащая данные запущенного экземпляра процесса
       const timers = await instance.getTimers();
    

    Returns Promise<ProcessTimer[]>

    Действующие таймеры.

interrupt

  • interrupt(comment: string): Promise<void>
  • Метод позволяет прервать экземпляр процесса.

    Если экземпляр процесса завершен или в текущий момент исполняет активный блок, то метод прерывается исключением.

    В примере отображено прерывание процесса в том случае, если в поле someError в контексте содержится ошибка.

     if (Context.data.someError !== '') {
         try {
             await process.interrupt(Context.data.someError)
             } catch (e) {
             // Процесс уже завершен, можно обработать исключение
             }
     }
    

    Parameters

    • comment: string

    Returns Promise<void>

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

setResponsible

  • setResponsible(responsible: UserItemRef, comment?: undefined | string): Promise<void>
  • Метод позволяет изменить ответственного за экземпляр процесса.

    В примере выполняется изменение ответственного с использованием данных из контекста:

    • user — поле типа Пользователи;

    • comment — строка, записанная в контекст.

    const user = Context.data.newResponsible;
    const comment = Context.data.comment;
    
    await processInstance.setResponsible(user, comment);
    

    Parameters

    • responsible: UserItemRef
    • Optional comment: undefined | string

    Returns Promise<void>

updateContext

  • updateContext(context: Context, comment: string): Promise<void>
  • Метод изменяет контекст экземпляра процесса.

    Если экземпляр процесса завершён или в текущий момент исполняет активный блок, то метод прерывается исключением. В случае успешного выполнения изменяется контекст процесса, и метод отрабатывает без исключений.

    В примере контекст содержит номер договора, полученный из внешнего источника, например, с помощью запроса. Метод позволяет установить полученный номер в контекст стороннего процесса.

    async function updateContext(): Promise<void> {
        try {
         // Получаем номер контракта из контекста
         const contractNumber = Context.data.contructid
    
         // Запись процесса `newprocess` в переменную `processTemplate`
         const processTemplate = Application.processes.incomecontract;
         // Идентификатор экземпляра процесса берем из контекста процесса
         const instanceUUID = Context.data.instanceUUID;
    
         // Ищем экземпляр процесса
         const process = await processTemplate._searchInstances().where(x => x.__id.eq(instanceUUID)).first();
    
         // Комментарий для обновления получаем из контекста процесса
         const comment = Context.data.comment;
    
         // Новое значение номера договора
         const context = {contract: contractNumber};
    
         // Обновление контекста
         await process?.updateContext(context, comment);
        } catch (e) {
         // Процесс уже завершен, можно обработать исключение
        }
    }
    

    Parameters

    • context: Context
    • comment: string

    Returns Promise<void>