Type parameters
Hierarchy
- BaseItem<ProcessInstanceData>
- ItemRef<ProcessInstanceItem<Context>>
-
ProcessInstanceItemRef<Context>
- ProcessInstanceItem
Properties
__id
Идентификатор экземпляра.
Readonly code
Код приложения цели ссылки (код приложения).
Readonly data
Значения полей объекта.
Readonly fields
Описание полей объекта.
Readonly id
Идентификатор цели ссылки.
Readonly namespace
Пространство имен цели ссылки (код раздела приложения).
Methods
fetch
-
Запрос полных данных объекта-ссылки.
Returns Promise<ProcessInstanceItem<Context>>
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
-
Метод получает действующий таймер процесса.
Метод вернёт экземпляр действующего таймера по идентификатору блока, к которому принадлежит таймер. Идентификатор блока можно скопировать на форме настроек блока Таймер. Это обычный 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
-
Метод позволяет прервать экземпляр процесса.
Если экземпляр процесса завершен или в текущий момент исполняет активный блок, то метод прерывается исключением.
В примере отображено прерывание процесса в том случае, если в поле
someError
в контексте содержится ошибка.if (Context.data.someError !== '') { try { await process.interrupt(Context.data.someError) } catch (e) { // Процесс уже завершен, можно обработать исключение } }
Parameters
-
comment: string
Returns Promise<void>
-
normalize
-
Удаление дублирующихся данных в массивах.
Выполнить удаление дубликатов в полях, в которых хранятся массивы ссылок на объекты системы (пользователи, файлы, элементы приложений, документы).
Этот метод, например, можно вызвать после массового изменения данных в объекте.
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
-
Метод позволяет изменить ответственного за экземпляр процесса.
В примере выполняется изменение ответственного с использованием данных из контекста:
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
-
Метод изменяет контекст экземпляра процесса.
Если экземпляр процесса завершён или в текущий момент исполняет активный блок, то метод прерывается исключением. В случае успешного выполнения изменяется контекст процесса, и метод отрабатывает без исключений.
В примере контекст содержит номер договора, полученный из внешнего источника, например, с помощью запроса. Метод позволяет установить полученный номер в контекст стороннего процесса.
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>
-
Объект экземпляра процесса