Для расширения базовой функциональности, в блоках рабочих процессов можно использовать серверные скрипты. Помимо классов серверного API, в скриптах рабочих процессов доступны три глобальных объекта:
current
scratchpad
activity
Объект current является экземпляром записи , для которой был создан контекст рабочего процесса. Названия свойств объекта current совпадают с названиями колонок записи (атрибут Наименование колонки).
Объект scratchpad является ассоциативным массивом (JSON), в который можно поместить значения для дальнейшего использования в рамках контекста. Значение объекта хранится в пол.
Объект activity является экземпляром записи текущего блока. Cвойства объекта activity совпадают с наименованиями колонок записи (атрибут Наименование колонки) в таблице Рабочие процессы: исполняемые активности (wf_executing_activity). Для форм записей
Глобальные объекты в рабочем процессе
Ниже приведен пример рабочего процесса для Задач (.
В начале процесса, блок Create Child Task создает дочернюю запись Задачи (task). Затем процесс приостанавливается на блоке ожидая статусаn Progress.
После изменения статуса на In Progress, процесс переходит к блоку Update Child Task, в котором обновляется дочерняя запись Задачи
Блок используется для создания записи Задач в соответствии с его настройками. ID текущей записи указывается в его поле Родитель:
new_task.parent_id = current.sys_id;
Для обновления записи, необходимо знать D. Однако блок не возвращает ID создаваемой записи.
Для поиска созданной записи, используйте выборку из Задач по полю Исполняемое действие.
для записи ID текущего блока:
const curentExecActivityId = activity.sys_id;
scratchpad.recGeneratorActivityId = curentExecActivityId;
Блок с названием Update Child Task осуществляет поиск записи Задачи и обновляет ее:
const task = new SimpleRecord('task');
task.get('wf_executing_activity', scratchpad.recGeneratorActivityId);
if (task.sys_id) {
task.state = '3'; // In Progress
task.update();
}