You can see plenty of fully working examples at our GitHub repo.

Keep Workflow Engine designed to streamline and automate operational tasks by integrating triggers, steps, actions, and conditions. This documentation provides an overview of the core concepts used to define and execute workflows effectively.

General Structure

Each workflow compose of:

  1. metadata - id, description
  2. triggers - when this workflow runs?
  3. steps/actions - what this workflow should do?

The general structure of a workflow is:

workflow:
  id: aks-example
  description: aks-example
  triggers:
    # list of triggers
    - type: manual
  steps:
    # list of steps
    - name: some-step
      provider:
        type: some-provider-type
        config: "{{ providers.provider_id }}"
        with:
          # provider configuration
    - ...
  actions:
    - name: some-action
      provider:
        type: some-provider-type
        with:
          # provider configuration
    - ...

Let’s dive into building workflows:

Triggers

Define how a workflow starts, such as manually, on a schedule, or in response to alerts with optional filters for specific conditions.

See syntax

Steps And Actions

Represent sequential operations, like querying data or running scripts, using configurable providers.

See syntax

Conditions

Allow decision-making in actions based on thresholds, assertions, or previous step results.

See syntax

Functions

Built-in helpers like datetime_compare or is_business_hours simplify complex operations.

See syntax

Context

Enables access to and reuse of outputs from earlier steps within actions or conditions.

See syntax

Providers

External systems or services (e.g., Slack, Datadog, ServiceNow) integrated into workflows through a standard configuration interface.

See syntax

Foreach Loops

Iterate over a list of results from a step to perform repeated actions for each item.

See syntax

Alert Enrichment

Add context to alerts, like customer details or ticket metadata, using enrichment mechanisms in steps or actions.

See syntax