Creating Your First Workflow
This guide walks through creating a complete workflow from scratch.
-
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 viatransitionToStep. -
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 }}} -
Register the workflow and version
See the Quickstart for the exact API calls.
-
Tag as
$LIVEand submitOnce tagged, submit a job referencing the
$LIVEtag. The engine handles execution, retries, and state management automatically. -
Monitor execution
Use
GetJobto poll status andGetWorkflowStateto inspect step-by-step results.
- Start with
/justworkflowit/noopsteps to validate your workflow structure before adding real executors - Use
GetWorkflowStateto debug — it shows exact input/output for every step - Version definitions are immutable — iterate quickly by registering new versions and moving the
$LIVEtag - See Step Executors for all available executor types and their configuration