Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Этот серверный класс предоставляет собой методы и общедоступные функции, которые позволяют управлять рабочими процессами и их компонентами, такими как действия, переходы и другие.

Чтобы создать экземпляр класса SimpleWorkflow, следуйте приведенному ниже примеру:


Code Block
languagejs
themeEclipse
titleSimpleWorkflow
linenumberstrue
const simpleWorkflow = new SimpleWorkflow('159491114038814558');

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
workflowIdIntegerНетNULL

cancel(current)


Используйте этот метод, чтобы отменить все активные контексты текущей записи.


Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
currentSimpleRecord objectДаНет


Возвращаемое значение:

ТипОписание
VoidМетод не возвращает значение.


Пример:

Code Block
languagejs
themeEclipse
titlecancel
linenumberstrue
const simpleWorkflow = new SimpleWorkflow('159491114038814558');
if (simpleWorkflow.hasActiveContexts(current)) {
   	simpleWorkflow.cancel(current);
}


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

Code Block
languagejs
themeConfluence
titleПример:
linenumberstrue
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()


Используйте этот метод, чтобы скопировать рабочий процесс. При этом создается версия процесса в статусе "Заблокировано", после чего метод возвращает скопированный рабочий процесс.


Возвращаемое значение:

TypeDescription
SimpleRecord object or NULLМетод возвращает "null", если объект SimpleWorkflow был создан без указания параметра workflowId. Метод возвращает объект (SimpleRecord type) таблицы Рабочий процесс (wf_workflow).


Пример:

Code Block
languagejs
themeEclipse
titlecopy
linenumberstrue
const workflow = new SimpleWorkflow('159491114038814558');
const copiedWorkflow = workflow.copy();
const simpleWorkflow = new SimpleWorkflow(copiedWorkflow.sys_id);

delete()


Используйте этот метод, чтобы удалить рабочий процесс и все его элементы.


Возвращаемое значение:

TypeDescription
BooleanПри успешном удалении процесса метод возвращает "true". В случае неудачи метод возвращает "false".


Пример:

Code Block
languagejs
themeEclipse
titledelete
linenumberstrue
const simpleWorkflow = new SimpleWorkflow('159491114038814558');
const copiedWorkflow = simpleWorkflow.copy();
const simpleWorkflow = new SimpleWorkflow(copiedWorkflow.sys_id);
if (simpleWorkflow.delete()) {
	ss.info('Рабочий процесс удален!');
}


hasActiveContexts(current)


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


Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
currentSimpleRecord objectДаНет


Возвращаемое значение:

ТипОписание
BooleanЕсли контекст активного рабочего процесса найден, метод возвращает значение "true". Если такой контекст отсутствует, метод возвращает "false".


Пример:

Code Block
languagejs
themeEclipse
titlehasActiveContext
linenumberstrue
const simpleWorkflow = new SimpleWorkflow('159491114038814558');
if (simpleWorkflow.hasActiveContexts(current)) {
	simpleWorkflow.cancel(current);
}

revival(executingActivity, current)


Используйте этот метод, чтобы перезапустить рабочий процесс с указанного действия.


Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
executingActivitySimpleRecord objectДаНет
currentSimpleRecord objectДаНет


Возвращаемое значение:

TypeDescription
SimpleRecord objectМетод возвращает объект (SimpleRecord type) таблицы Контекста рабочего процесса (wf_context).


Пример:

Code Block
languagejs
themeEclipse
titlerevival
linenumberstrue
const current = new SimpleRecord('task');
current.get('164579976616724057');
const approval = new SimpleRecord('sys_approval');
approval.get('164625329711023536');
const activity = approval.wf_executing_activity_id;
const workflow = new SimpleWorkflow();
workflow.revival(activity, current);

start(current)


Данный метод предназначен для запуска рабочего процесса. При помощи метода start(current) можно запустить только рабочие процессы, в которых Тип условия указан как Ручной.


Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
currentSimpleRecord objectДаНет


Возвращаемое значение:

ТипОписание
SimpleRecord object или NULL

В случае успеха метод возвращает объект (SimpleRecord type) таблицы Контекст рабочего процесса (wf_context)


Метод возвращает NULL в следующих случаях:

  • новый объект SimpleWorkflowбыл создан без указания параметра workflowId;
  • нет версий рабочего процесса, созданных текущим пользователем.


Пример:

Code Block
languagejs
themeEclipse
titlestart
linenumberstrue
const simpleWorkflow = new SimpleWorkflow('159491114038814558');
const context = simpleWorkflow.start(current);
if (context.state === 'finished') {
	ss.info('Рабочий процесс завершен!');
}


startSubflow(executingActivity, current, workflowId)


Используйте этот метод, чтобы запустить подпроцесс путем выполнения действия.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
executingActivitySimpleRecord objectДаНет
currentSimpleRecord objectДаНет
workflowIdIntegerДаНет


Возвращаемое значение:

TypeDescription
SimpleRecord object или NULL

Метод возвращает объект (SimpleRecord type) таблицы Контекст рабочего процесса (wf_context).

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

Пример:

Code Block
languagejs
themeEclipse
titlestartSubflow
linenumberstrue
;
(
  (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);



Table of Contents
absoluteUrltrue
classfixedPosition