Skip to content

Creating Your First Workflow

This guide walks through creating a complete workflow from scratch.

  1. Plan your steps

    Identify the sequence of operations your workflow needs to perform. Each step has an executor type (in integrationDetails.type) and flows into the next via transitionToStep.

  2. Write the definition

    {
    "workflowName": "my-first-workflow",
    "steps": [
    {
    "name": "validateInput",
    "integrationDetails": {
    "type": "/justworkflowit/noop",
    "inputDefinition": { "$ref": "#/definitions/workflowInput" },
    "outputDefinition": { "$ref": "#/definitions/workflowInput" }
    },
    "transitionToStep": "fetchData"
    },
    {
    "name": "fetchData",
    "integrationDetails": {
    "type": "/justworkflowit/aws/lambda",
    "config": {
    "region": "us-east-1",
    "accountId": "123456789012",
    "functionName": "fetch-data"
    },
    "inputDefinition": { "$ref": "#/definitions/workflowInput" },
    "outputDefinition": { "$ref": "#/definitions/fetchOutput" }
    },
    "transitionToStep": "processResult"
    },
    {
    "name": "processResult",
    "integrationDetails": {
    "type": "/justworkflowit/noop",
    "inputDefinition": { "$ref": "#/definitions/fetchOutput" },
    "outputDefinition": { "$ref": "#/definitions/fetchOutput" }
    },
    "transitionToStep": null
    }
    ],
    "definitions": {
    "workflowInput": { "type": "object", "properties": { "query": { "type": "string" } }, "required": ["query"], "additionalProperties": false },
    "fetchOutput": { "type": "object", "properties": { "result": { "type": "string" } }, "required": ["result"], "additionalProperties": false }
    }
    }
  3. Register the workflow and version

    See the Quickstart for the exact API calls.

  4. Tag as $LIVE and submit

    Once tagged, submit a job referencing the $LIVE tag. The engine handles execution, retries, and state management automatically.

  5. Monitor execution

    Use GetJob to poll status and GetWorkflowState to inspect step-by-step results.

  • Start with /justworkflowit/noop steps to validate your workflow structure before adding real executors
  • Use GetWorkflowState to debug — it shows exact input/output for every step
  • Version definitions are immutable — iterate quickly by registering new versions and moving the $LIVE tag
  • See Step Executors for all available executor types and their configuration