Versions Compared

Key

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

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

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

This server-side class provides methods and public functions that allow operating with workflows and theirs components, such as activities, transitions, and other.

To create an instance of the SimpleWorkflow class, follow the example below:

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

Параметры:

Name
Название
Type
Тип
MandatoryDefault Value
ОбязательныйЗначение по умолчанию
workflowId
Integer
String
N
Нет
NULL
null

cancel(current)


This method allows cancelling all active contexts of the current recordИспользуйте этот метод, чтобы отменить все активные контексты текущей записи.

Параметры:

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

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

Type
Тип
Description
Описание
Void
This method does not return a value
Метод не возвращает значение.

ExampleПример:

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

copy()

This method copies the workflow with creating a version in the Checked Out state and after that returns a copied workflow.

Return:

TypeDescriptionSimpleRecord object or NULLThis method returns NULL if the new SimpleWorkflow object has been created without specifying the workflowId parameter; otherwise, it returns an object of the Workflow (wf_workflow) table (of a SimpleRecord type).

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

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('Все контексты отменены');
  ss.setRedirect();
}

copy()


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

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

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

ПримерExample:

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

delete()

This method deletes the workflow and all its elements.

Return:

TypeDescriptionBooleanThis method returns 'true' if the workflow has been successfully deleted; otherwise, it returns 'false'.

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

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

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

ПримерExample:

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('WorkflowРабочий процесс deletedудален!');
}

hasActiveContexts(current)


This method checks the current record if there are any active workflow contexts presented or notИспользуйте данный метод, чтобы проверить текущую запись на наличие активных контекстов рабочего процесса.

Параметры:

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

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

Type
Тип
Description
Описание
Boolean
This method returns 'true' if the active workflow context presents; otherwise, it returns 'false'.
Если контекст активного рабочего процесса найден, метод возвращает значение true. Если такой контекст отсутствует, метод возвращает false.

ПримерExample:

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

revival(executingActivity, current)

This method restarts the workflow starting with the activity specified.


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

Info

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

Параметры:

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

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

Type
Тип
DescriptionWorkflow Context
Описание
SimpleRecord object
This method returns an object of the
Метод возвращает объект SimpleRecord таблицы Контекста рабочего процесса (wf_context
) table (of a SimpleRecord type
).

ExampleПример:

Code Block
languagejs
themeEclipse
titlerevival()
linenumberstrue
const current = new SimpleRecord('task');
current.get('164579976616724057');
const approval = new SimpleRecord('sys_approval');
approval.get('164625329711023536');
const activityexecutingActivity = new SimpleRecord('wf_executing_activity');
executingActivity.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();
  workflow.revival(activityexecutingActivity, current);
}

start(current)


Use this method to start the workflow. The method starts only the workflows where the Condition Type is set to ManualИспользуйте метод, чтобы запустить рабочий процесс. При помощи этого метода можно запустить только рабочие процессы, в которых Тип условия указан как Ручной.

Параметры:

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

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

Type
Тип
Description
Описание
SimpleRecord object
or NULL

This method returns NULL in the cases listed below:

  • the new SimpleWorkflow object has been created without specifying the workflowId parameter;
  • there are no workflow versions created by the current user.

Otherwise, it returns an object of the Workflow Context (wf_context) table (of a SimpleRecord type). 

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

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

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

ПримерExample:

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

startSubflow(executingActivity, current, workflowId)


This method allows starting a sub-workflow by executing activityИспользуйте этот метод, чтобы запустить подпроцесс путем выполнения действия.

Параметры:

Name
Название
Type
Тип
MandatoryDefault Value
ОбязательныйЗначение по умолчанию
executingActivitySimpleRecord object
Y
Да
N
Нет
currentSimpleRecord object
Y
Да
N
Нет
workflowId
Integer
String
Y
Да
N
Нет

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

Type
Тип
Description
Описание
SimpleRecord
object or NULL

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

This method returns NULL if there are no workflow versions created by the current user; otherwise, it returns an object of the Workflow Context

(wf_context)

table (of a SimpleRecord type)

.

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

ExampleПример:

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);
  }
)(current, activity);


Table of Contents
absoluteUrltrue
classfixedPosition