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:
const simpleWorkflow = new SimpleWorkflow('159491114038814558');
Parameter(s):
Name | Type | Mandatory | Default value |
---|---|---|---|
workflowId | String | N | null |
cancel(current)
Use this method to cancel all active contexts of the current record.
Parameter(s):
Name | Type | Mandatory | Default value |
---|---|---|---|
current | SimpleRecord object | Y | N |
Return:
Type | Description |
---|---|
Void | This method does not return a value. |
Example:
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:
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:
Type | Description |
---|---|
SimpleRecord object | This 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:
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:
Type | Description |
---|---|
Boolean | This method returns true if the workflow has been successfully deleted; otherwise, it returns false. |
Example:
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):
Name | Type | Mandatory | Default value |
---|---|---|---|
current | SimpleRecord object | Y | N |
Return:
Type | Description |
---|---|
Boolean | This method returns true if the active workflow context exits; otherwise, it returns false. |
Example:
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):
Name | Type | Mandatory | Default value |
---|---|---|---|
executingActivity | SimpleRecord object | Y | N |
current | SimpleRecord object | Y | N |
Return:
Type | Description |
---|---|
SimpleRecord object | This method returns an SimpleRecord object of the Workflow Context (wf_context) table. |
Example:
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):
Name | Type | Mandatory | Default value |
---|---|---|---|
current | SimpleRecord object | Y | N |
Return:
Type | Description |
---|---|
SimpleRecord object | The method returns a SimpleRecord object of the Workflow Context (wf_context) table. This method returns null in the following cases:
|
Example:
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):
Name | Type | Mandatory | Default value |
---|---|---|---|
executingActivity | SimpleRecord object | Y | N |
current | SimpleRecord object | Y | N |
workflowId | String | Y | N |
Return:
Type | Description |
---|---|
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:
; ( (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