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.
Available Executors
Section titled “Available Executors”| Type | Name | Description |
|---|---|---|
/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:
| Property | Type | Required | Description |
|---|---|---|---|
region | string | Yes | |
accountId | string | Yes | |
functionName | string | Yes | |
qualifier | string | No | |
timeoutMs | number (integer) | No |
Example
{ "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:
| Property | Type | Required | Description |
|---|---|---|---|
eventIds | array | Yes | Array of event IDs to wait for |
Example
{ "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:
| Property | Type | Required | Description |
|---|---|---|---|
children | array | Yes | Array of child jobs to spawn (use single element for one child) |
Example
{ "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:
| Property | Type | Required | Description |
|---|---|---|---|
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
{ "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:
| Property | Type | Required | Description |
|---|---|---|---|
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
{ "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.