---
search:
  exclude: true
---

# <a id="bitdrift.public.unary.workflows.v1.Flow"></a>Flow

An individual flow within a workflow.

| Field | Type | Description |
|---|---|---|
| steps | <span class="proto-type proto-type-message">repeated [<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">workflows</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">Step</i>](bitdrift_public_unary_workflows_v1_Step.md#bitdrift.public.unary.workflows.v1.Step){ title="bitdrift.public.unary.workflows.v1.Step"}</span> | The steps that make up this flow. |
| exclusive | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">workflows</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">Flow</i><i class="proto-type-dot">.</i><i class="proto-type-part">ExclusiveFlow</i>](#bitdrift.public.unary.workflows.v1.Flow.ExclusiveFlow){ title="bitdrift.public.unary.workflows.v1.Flow.ExclusiveFlow"}</span> | Any match on the initial step causes the flow to reset. This is the default if not  specified.<br><br>(Only one of <em>exclusive</em>, or <em>parallel</em> can be set) |
| parallel | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">workflows</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">Flow</i><i class="proto-type-dot">.</i><i class="proto-type-part">ParallelFlow</i>](#bitdrift.public.unary.workflows.v1.Flow.ParallelFlow){ title="bitdrift.public.unary.workflows.v1.Flow.ParallelFlow"}</span> | Multiple "runs" of the flow can occur in parallel. Runs are replaced FIFO if the active  runs exceeds max_active_runs. A new run that matches and extracts the same field values  on the initial step as an existing active run will replace the existing run. This  execution mode is primarily used for flows that correlate on a specific field value.<br><br>(Only one of <em>parallel</em>, or <em>exclusive</em> can be set) |

#### Example
```json
{
  "exclusive": {},
  "steps": [
    {
      "exit_conditions": [
        {
          "match_rule": {
            "generic_match": {
              "base_matcher": {
                "log_field": "field_name",
                "operator": "EQUAL",
                "string_value": "example"
              }
            },
            "match_id": "_i1yUnHjKfmWpCaD5Tazo",
            "sample_rate": 100
          }
        }
      ],
      "loop_match_id": "_i1yUnHjKfmWpCaD5Tazo",
      "match_rule": {
        "generic_match": {
          "base_matcher": {
            "log_field": "field_name",
            "operator": "EQUAL",
            "string_value": "example"
          }
        },
        "match_id": "_i1yUnHjKfmWpCaD5Tazo",
        "sample_rate": 100
      },
      "save_fields": [
        {
          "field_name": "",
          "id": "",
          "regex_capture": ""
        }
      ]
    }
  ]
}
```

# <a id="bitdrift.public.unary.workflows.v1.Flow.ExclusiveFlow"></a>Flow.ExclusiveFlow

No fields

# <a id="bitdrift.public.unary.workflows.v1.Flow.ParallelFlow"></a>Flow.ParallelFlow

| Field | Type | Description |
|---|---|---|
| max_active_runs | <span class="proto-type proto-type-primitive">optional uint32</span> | The maximum number of active "runs" for this flow. Defaults to 10 if not specified. |

#### Example
```json
{
  "max_active_runs": 1
}
```

