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

To create an instance of the SimpleWorkflow class, pass the workflow ID as in the example below:

SimpleWorkflow
const simpleWorkflow = new SimpleWorkflow('159491114038814558');

Parameter(s):

NameTypeMandatoryDefault value
workflowIdStringNnull

cancel(current)


Use this method to cancel all active contexts of the current record.

Parameter(s):

NameTypeMandatoryDefault value
currentSimpleRecord objectYN

Return:

TypeDescription
VoidThis method does not return a value.

Example:

cancel
const simpleWorkflow = new SimpleWorkflow('159491114038814558');
if (simpleWorkflow.hasActiveContexts(current)) {
   	simpleWorkflow.cancel(current);
}

If a workflow has subflows, use the following script to cancel all contexts of the workflow and all subflows related to it:

Example:
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()


Use this method to copy the workflow. The system creates a version of the in the Checked out state, after that the method returns the copied workflow.

Return:

TypeDescription
SimpleRecord objectThis method returns null if the new SimpleWorkflow object has been created without the workflowId parameter specified; otherwise, it returns a SimpleRecord object of the Workflow (wf_workflow) table.

Example:

copy
const workflow = new SimpleWorkflow('159491114038814558');
const copiedWorkflow = workflow.copy();
const simpleWorkflow = new SimpleWorkflow(copiedWorkflow.sys_id);

delete()


Use this method to delete the workflow and all its elements.

Return:

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

Example:

delete
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)


Use this method to check the current record for any active workflow contexts.

Parameter(s):

NameTypeMandatoryDefault value
currentSimpleRecord objectYN

Return:

TypeDescription
BooleanThis method returns true if the active workflow context exits; otherwise, it returns false.

Example:

hasActiveContext
const simpleWorkflow = new SimpleWorkflow('159491114038814558');
if (simpleWorkflow.hasActiveContexts(current)) {
	simpleWorkflow.cancel(current);
}

revival(executingActivity, current)


Use this method to restart the workflow for the specified record.

This method only works when the workflow context and the required activity are not in the Finished state. Add this condition to your scripts when this method is used.

Parameter(s):

NameTypeMandatoryDefault value
executingActivitySimpleRecord objectYN
currentSimpleRecord objectYN

Return:

TypeDescription
SimpleRecord objectThis method returns an SimpleRecord object of the Workflow Context (wf_context) table.

Example:

revival
const current = new SimpleRecord('task');
current.get('164579976616724057');

const approval = new SimpleRecord('sys_approval');
approval.get('164625329711023536');

const executingActivity = 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(`Revival for executing activity ${executingActivity.sys_id} and current ${current.getTableName()}:${current.sys_id} is not called because executing activity or context is already finished`);
} else { 
  const workflow = new SimpleWorkflow();
  workflow.revival(executingActivity, current);
}

start(current)


Use this method to start the workflow. The method only starts the workflows with the Condition type set to Manual.

Parameter(s):

NameTypeMandatoryDefault value
currentSimpleRecord objectYN

Return:

TypeDescription
SimpleRecord object

The method returns a SimpleRecord object of the Workflow Context (wf_context) table. 

This method returns null in the following cases:

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

Example:

start
const simpleWorkflow = new SimpleWorkflow('159491114038814558');
const context = simpleWorkflow.start(current);
if (context.state === 'finished') {
	ss.info('Workflow finished!');
}

startSubflow(executingActivity, current, workflowId)


Use this method to start a subflow by executing activity.

Parameter(s):

NameTypeMandatoryDefault value
executingActivitySimpleRecord objectYN
currentSimpleRecord objectYN
workflowIdStringYN

Return:

TypeDescription
SimpleRecord object

This method returns a SimpleRecord object of the Workflow Context (wf_context) table. 

It returns null if there are no workflow versions created by the current user.

Example:

startSubflow
;
(
  (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);

  • No labels