Skip to content

Step Executors

Every step in a JustWorkflowIt workflow is powered by a step executor — the component that determines what the step actually does. You specify the executor type in the step’s integrationDetails.type field.

TypeNameDescription
/justworkflowit/aws/lambda AWS Lambda Invokes an AWS Lambda function in your account.
/justworkflowit/waitForEventIds Wait for Events Pauses workflow execution until one or more external events are received.
/justworkflowit/runChildJob Run Child Job Submits one or more child workflow jobs and waits for them to complete.
/justworkflowit/runMarketplaceJob Run Marketplace Job Invokes a published workflow from the JustWorkflowIt Marketplace.
/justworkflowit/gcp/cloudfunction GCP Cloud Function Invokes a GCP Cloud Function (Gen2) in your GCP project.
/justworkflowit/noop No-Op A no-operation executor that immediately returns success.

AWS Lambda

Type: /justworkflowit/aws/lambda

Invokes an AWS Lambda function in your account. JustWorkflowIt assumes a cross-account IAM role (`JustWorkflowItExecutionRole`) in your AWS account and calls the specified function synchronously. The function receives the step input plus a `__jobContext` field containing the job ID, organization ID, and any resolved secrets.

Configuration Schema

Set these properties in integrationDetails.config:

PropertyTypeRequiredDescription
region string Yes
accountId string Yes
functionName string Yes
qualifier string No
timeoutMs number (integer) No

Example

Step definition (integrationDetails)
{
"integrationDetails": {
"type": "/justworkflowit/aws/lambda",
"config": {
"region": "us-east-1",
"accountId": "123456789012",
"functionName": "my-data-processor",
"qualifier": "prod",
"timeoutMs": 30000
},
"inputDefinition": {
"$ref": "#/definitions/workflowInput"
},
"outputDefinition": {
"$ref": "#/definitions/workflowInput"
}
}
}

Usage Notes

  • Your AWS account must have a `JustWorkflowItExecutionRole` IAM role that trusts the JustWorkflowIt account.
  • The role needs `lambda:InvokeFunction` permission for the target function.
  • Use `qualifier` to pin a specific function version or alias.
  • Use `timeoutMs` to set a client-side timeout (Lambda's own timeout still applies).
  • Secrets configured via `secretBindings` are injected into `__jobContext.secrets`.

Output

Returns the Lambda function's response payload. If the function returns JSON, it is included as the step output payload.


Wait for Events

Type: /justworkflowit/waitForEventIds

Pauses workflow execution until one or more external events are received. Use this for approval gates, webhook callbacks, or any scenario where a step must wait for external input before proceeding.

Configuration Schema

Set these properties in integrationDetails.config:

PropertyTypeRequiredDescription
eventIds array Yes Array of event IDs to wait for

Example

Step definition (integrationDetails)
{
"integrationDetails": {
"type": "/justworkflowit/waitForEventIds",
"config": {
"eventIds": [
"manager-approval",
"compliance-review"
]
},
"inputDefinition": {
"$ref": "#/definitions/workflowInput"
},
"outputDefinition": {
"$ref": "#/definitions/workflowInput"
}
}
}

Usage Notes

  • Send events using the `SendJobEvent` API with a matching `eventId`.
  • The step re-executes periodically; once all expected events are found in the execution history, it completes.
  • Event payloads are available in the execution history for downstream steps to reference.

Output

Returns `expectedEventIds`, `receivedEventIds`, and `missingEventIds` arrays along with a status message.


Run Child Job

Type: /justworkflowit/runChildJob

Submits one or more child workflow jobs and waits for them to complete. Supports single child, multiple concurrent children, and dynamic fan-out where child jobs are spawned from an array in the execution data.

Configuration Schema

Set these properties in integrationDetails.config:

PropertyTypeRequiredDescription
children array Yes Array of child jobs to spawn (use single element for one child)

Example

Step definition (integrationDetails)
{
"integrationDetails": {
"type": "/justworkflowit/runChildJob",
"config": {
"children": [
{
"id": "process-batch",
"workflowName": "batch-processor",
"workflowVersion": {
"tag": "$LIVE"
},
"input": {
"batchSize": 100
}
}
]
},
"inputDefinition": {
"$ref": "#/definitions/workflowInput"
},
"outputDefinition": {
"$ref": "#/definitions/workflowInput"
}
}
}

Usage Notes

  • For a single child job, use `children` with one element.
  • For concurrent children, add multiple elements to the `children` array.
  • For sequential children, use separate `RunChildJob` steps in the workflow.
  • Use `forEach.arrayPath` to dynamically fan out — one child job is spawned per element in the resolved array.
  • Use `tag: "$LIVE"` in `workflowVersion` to always run the current live version.
  • Child job outputs are available in the step's execution history.

Output

Returns `childJobIds`, per-child status (`PENDING`/`SUCCEEDED`/`FAILED`), and counts of completed, pending, and failed jobs.


Run Marketplace Job

Type: /justworkflowit/runMarketplaceJob

Invokes a published workflow from the JustWorkflowIt Marketplace. The job runs in the publisher's organization to protect workflow internals. The consumer sees high-level status and the output payload, but not the full execution details.

Configuration Schema

Set these properties in integrationDetails.config:

PropertyTypeRequiredDescription
publisherOrgKey string Yes Organization key of the marketplace listing publisher
listingKey string Yes Key of the marketplace listing
versionNumber number (integer) Yes Marketplace listing version number to use
input object No Input data to pass to the marketplace workflow

Example

Step definition (integrationDetails)
{
"integrationDetails": {
"type": "/justworkflowit/runMarketplaceJob",
"config": {
"publisherOrgKey": "acme-corp",
"listingKey": "sentiment-analysis",
"versionNumber": 3,
"input": {
"text": "Analyze this sentence."
}
},
"inputDefinition": {
"$ref": "#/definitions/workflowInput"
},
"outputDefinition": {
"$ref": "#/definitions/workflowInput"
}
}
}

Usage Notes

  • Your organization must have access to the marketplace listing (either public or allowlisted).
  • A valid payment method is required unless using a demo organization.
  • Rate limits are enforced per consumer per listing.
  • Secret bindings allow you to pass credentials to the publisher's workflow without exposing them.
  • Publishers cannot invoke their own listings.

Output

Returns the marketplace job ID, publisher details, and the workflow output payload (prefixed with the step name).


GCP Cloud Function

Type: /justworkflowit/gcp/cloudfunction

Invokes a GCP Cloud Function (Gen2) in your GCP project. JustWorkflowIt authenticates via Workload Identity Federation, impersonating a GCP service account configured by the JustWorkflowIt GCS Terraform module. The function receives the step input plus a `__jobContext` field containing the job ID, organization ID, and any resolved secrets.

Configuration Schema

Set these properties in integrationDetails.config:

PropertyTypeRequiredDescription
projectId string Yes GCP project ID
region string Yes GCP region (e.g., us-central1)
functionUrl string Yes Full HTTPS URL of the Cloud Function (Gen2)
workloadIdentityPoolProvider string Yes Full resource name of the Workload Identity Federation provider (from Terraform output)
serviceAccountEmail string Yes Email of the GCP execution service account (from Terraform output)
timeoutMs number (integer) No Client-side timeout in milliseconds

Example

Step definition (integrationDetails)
{
"integrationDetails": {
"type": "/justworkflowit/gcp/cloudfunction",
"config": {
"projectId": "my-gcp-project",
"region": "us-central1",
"functionUrl": "https://us-central1-my-gcp-project.cloudfunctions.net/my-step-handler",
"workloadIdentityPoolProvider": "projects/123456789/locations/global/workloadIdentityPools/justworkflowit-prod/providers/justworkflowit-aws",
"serviceAccountEmail": "jwi-execution-prod@my-gcp-project.iam.gserviceaccount.com",
"timeoutMs": 30000
},
"inputDefinition": {
"$ref": "#/definitions/workflowInput"
},
"outputDefinition": {
"$ref": "#/definitions/workflowInput"
}
}
}

Usage Notes

  • Your GCP project must have the JustWorkflowIt GCS Terraform module applied.
  • The Terraform module creates a Workload Identity Pool, execution service account, and grants Cloud Function invoker permissions.
  • Provide the `workloadIdentityPoolProvider` and `serviceAccountEmail` from the Terraform module outputs.
  • The `functionUrl` must be the full HTTPS URL of the Gen2 Cloud Function.
  • Use `timeoutMs` to set a client-side timeout (the Cloud Function's own timeout still applies).
  • Secrets configured via `secretBindings` are injected into `__jobContext.secrets`.

Output

Returns the Cloud Function's HTTP response body parsed as JSON.


No-Op

Type: /justworkflowit/noop

A no-operation executor that immediately returns success. Useful for testing workflow definitions, placeholder steps during development, or conditional branching where one path does nothing.

Usage Notes

  • No configuration required.
  • Returns `success` immediately with no output payload.

Output

Returns success with no payload.