Этот класс содержит методы и общедоступные функции, которые позволяют управлять рабочими процессами и их компонентами, такими как действия, переходы и другие.
Чтобы создать экземпляр класса SimpleWorkflow, следуйте приведенному ниже примеру, передайте в конструктор ID рабочего процесса, как в примере ниже:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | SimpleWorkflow() |
---|
linenumbers | true |
---|
|
const simpleWorkflow = new SimpleWorkflow('159491114038814558'); |
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
workflowId |
IntegerNULLcancel(current)
Используйте этот метод, чтобы отменить все активные контексты текущей записи.
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
current | SimpleRecord object | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|
Void | Метод не возвращает значение. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | cancel() |
---|
linenumbers | true |
---|
|
const simpleWorkflow = new SimpleWorkflow('159491114038814558');
if (simpleWorkflow.hasActiveContexts(current)) {
simpleWorkflow.cancel(current);
} |
Если для рабочего процесса были созданы подпроцессы, используйте следующий скрипт, чтобы отменить все контексты рабочего процесса и все связанные с ним подпроцессы:
Code Block |
---|
language | js |
---|
theme | Confluence |
---|
title | Пример |
---|
linenumbers | true |
---|
|
const currentDocId = ss.getDocIdByIds(current.sys_db_table_id, current.sys_id);
const wfContext = new SimpleRecord('wf_context');
wfContext.addQuery('related_record_id', currentDocId);
wfContext.addQuery('active', true);
wfContext.orderBy('sys_id');
wfContext.selectAttributes(['workflow_version_id']);
wfContext.query();
const doesActiveWfExist = wfContext.getRowCount() > 0;
while (wfContext.next()) {
const simpleWorkflow = new SimpleWorkflow(wfContext.workflow_version_id.getValue('workflow_id'));
if (simpleWorkflow.hasActiveContexts(current)) {
simpleWorkflow.cancel(current);
}
}
if (doesActiveWfExist) {
ss.addInfoMessage('AllВсе contexts have been canceled!контексты отменены');
ss.setRedirect();
} |
copy()
Используйте этот метод, чтобы скопировать рабочий процесс. При этом создается версия процесса в статусе "Заблокировано", после чего метод возвращает скопированный рабочий процесс.
Возвращаемое значение:
Тип | Описание |
---|
SimpleRecord object |
или NULL | Метод возвращает null, если объект SimpleWorkflow был создан без указания параметра workflowId. Метод возвращает объект |
( type) таблицы Рабочий процесс(wf_workflow). |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | copy() |
---|
linenumbers | true |
---|
|
const workflow = new SimpleWorkflow('159491114038814558');
const copiedWorkflow = workflow.copy();
const simpleWorkflow = new SimpleWorkflow(copiedWorkflow.sys_id); |
delete()
Используйте этот метод, чтобы удалить рабочий процесс и все его элементы.
Возвращаемое значение:
Тип | Описание |
---|
Boolean | При успешном удалении процесса метод возвращает true. В случае неудачи метод возвращает false. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | delete() |
---|
linenumbers | true |
---|
|
const simpleWorkflow = new SimpleWorkflow('159491114038814558');
const copiedWorkflow = simpleWorkflow.copy();
const simpleWorkflow = new SimpleWorkflow(copiedWorkflow.sys_id);
if (simpleWorkflow.delete()) {
ss.info('Рабочий процесс удален!');
} |
hasActiveContexts(current)
Используйте данный метод, чтобы проверить текущую запись на наличие активных контекстов рабочего процесса.
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
current | SimpleRecord object | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|
Boolean | Если контекст активного рабочего процесса найден, метод возвращает значение true. Если такой контекст отсутствует, метод возвращает false. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | hasActiveContext() |
---|
linenumbers | true |
---|
|
const simpleWorkflow = new SimpleWorkflow('159491114038814558');
if (simpleWorkflow.hasActiveContexts(current)) {
simpleWorkflow.cancel(current);
} |
revival(executingActivity, current)
Используйте этот метод, чтобы перезапустить рабочий процесс с указанного действия.для указанной записи.
Info |
---|
Метод работает только если контекст рабочего процесса и выполняющееся действие не находятся в статусе Завершен. Добавляйте это условие к вашим скриптам, когда используете этот метод. |
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
executingActivity | SimpleRecord object | Да | Нет |
current | SimpleRecord object | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|
SimpleRecord object | Метод возвращает объект |
( type) таблицы Контекста рабочего процесса (wf_context). |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | revival() |
---|
linenumbers | true |
---|
|
const current = new SimpleRecord('task');
current.get('168320271607687220164579976616724057');
const eventapproval = new SimpleRecord('sys_eventapproval');
eventapproval.addQueryget('name', 'workflow_timer164625329711023536');
const executingActivity = new SimpleRecord('wf_executing_activity');
event.addQuery('instance', current.sys_id);
event.addQuery('state', 'ready');
event.query();
event.next();
const executingActivity = new SimpleRecord('wf_executing_activity');
executingActivity.get(event.param_1);
const simpleWorkflowexecutingActivity.get(approval.getValue('wf_executing_activity_id'));
const context = new SimpleRecord('wf_context');
context.get(executingActivity.getValue('context_id'));
if (context.getValue('state') == 'finished' || executingActivity.getValue('state') == 'finished') {
ss.info(`Перезапуск выполняющегося действия ${executingActivity.sys_id} и текущего контекста рабочего процесса ${current.getTableName()}:${current.sys_id} невозможен из-за того, что выполняющееся действие или контекст рабочего процесса уже завершены`);
} else {
const workflow = new SimpleWorkflow();
simpleWorkflow workflow.revival(executingActivity, current);
} |
start(current)
Данный метод предназначен для запуска рабочего процессаИспользуйте метод, чтобы запустить рабочий процесс. При помощи этого метода start(current) можно запустить только рабочие процессы, в которых Тип условия указан как Ручной.
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
current | SimpleRecord object | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|
SimpleRecord object |
или NULL | В случае успеха метод возвращает объект |
( type) таблицы Контекст рабочего процесса (wf_context). Метод возвращает |
NULL null в следующих случаях: - новый объект SimpleWorkflow был создан без указания
|
параметра ;- .
- нет версий рабочего процесса, созданных текущим пользователем.
|
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | start() |
---|
linenumbers | true |
---|
|
const simpleWorkflow = new SimpleWorkflow('159491114038814558');
const context = simpleWorkflow.start(current);
if (context.state === 'finished') {
ss.info('Рабочий процесс завершен!');
} |
startSubflow(executingActivity, current, workflowId)
Используйте этот метод, чтобы запустить подпроцесс путем выполнения действия.
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
executingActivity | SimpleRecord object | Да | Нет |
current | SimpleRecord object | Да | Нет |
workflowId |
IntegerВозвращаемое значение:
object или NULL ( type) таблицы Контекст рабочего процесса (wf_context). Метод возвращает значение null, если нет версий рабочего процесса, созданных текущим пользователем. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | startSubflow() |
---|
linenumbers | true |
---|
|
;
(
(current, activity) => {
const wfActivitySubflow = new SimpleRecord('wf_activity_subflow');
wfActivitySubflow.get(activity.getValue('activity_id'));
const workflowManager = new SimpleWorkflow();
const subflowContext = workflowManager.startSubflow(activity, current, wfActivitySubflow.getValue('workflow_id'));
ss.info(subflowContext.state);
// Info: executing
}
)(current, activity); |