Skip to main content
Version: v5.0

How to create and run a workflow

Overview#

This page describes how to use the Workflow Service to create a new workflow that fetches data from a REST API using the REST_CONNECTOR task. The Workflow service will then process the result with a script using the SCRIPT_EXECUTION task.

Useful concepts#

There are some key concepts related to the Workflow Service that will help with understanding this example.

For a good overview of how the Workflow Service works, refer to the Workflow Service overview page.

To carry out this task, you will be also need to familiar with the Workflow Service REST API. For more information, refer to the Workflow Service REST API section.

Steps for creating and running a new workflow#

To create and run a new workflow, do the following:

  1. Create a workflow definition
  2. Run the workflow
  3. Check the workflow status
  4. Reference the task outputs
  5. Get individual task outputs/results

Step 1: Create a workflow definition#

To create a new workflow definition, use the IafWorkflowSvs.createWorkflowDef API call as shown in the sample code below.

import IafWorkflowSvc from '@dtplatform/platform-api';
// Define your workflow definitionconst workflowDef = {  _name: "REST to Script Workflow",  _description: "Fetch data from REST API and process with script",  _namespaces: ["your-namespace"],  _userType: "rest_script_demo",  _taskDefs: [    {      _name: "fetch_artist",      _type: "REST_CONNECTOR",      _sequenceno: 1,      _inputParams: {        _url: "https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg",        _to: "json",        _auth: {          _type: "Bearer",          _token: "YOUR_SPOTIFY_TOKEN"        }      }    },    {      _name: "process_artist",      _type: "SCRIPT_EXECUTION",      _sequenceno: 2,      _inputParams: {        "_userType": "artist_script",        "_scriptName": "ProcessArtist",        "artistData": "${fetch_artist.output}" // <-- Pass previous output as a parameter      }    }  ]};
// Create the workflow definitionconst ctx = { /* your context, e.g., auth info */ };const createdDef = await IafWorkflowSvc.createWorkflowDef(workflowDef, ctx);console.log('Created WorkflowDef:', createdDef);

Step 2: Run the workflow#

To start the workflow instance, use afWorkflowSvc.runWorkflow as shown in the sample code below.

const workflowDefId = createdDef._id;const runResult = await IafWorkflowSvc.runWorkflow(workflowDefId, null, ctx);console.log('Workflow Run Result:', runResult);

Step 3: Check the workflow status#

To check the status of your workflow, use IafWorkflowSvc.getWorkflowStatus.

const workflowId = runResult._id;const status = await IafWorkflowSvc.getWorkflowStatus(workflowId, ctx);console.log('Workflow Status:', status);

Step 4: Reference the task outputs#

You can reference task outputs in order to chain task outputs together. To chain tasks outputs, use the ${task_name.output} syntax in your workflow definition.

Step 5: Get individual task outputs/results#

Fetch the output/result of a specific task, by using IafWorkflowSvc.getTaskById as shown in the sample code below.

const taskId = status._tasks[0]._id; // or the specific task you wantconst taskResult = await IafWorkflowSvc.getTaskById(workflowId, taskId, ctx);console.log('Task Output:', taskResult);