> ## Documentation Index
> Fetch the complete documentation index at: https://docs.h3aven.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

A process is composted by steps. The only important definitions of a process are its `name` and `iconName`.

Each step has its corresponding data parameters.

It is possible to configure a step with no approval order.
If the order needs to be followed, configure the `orderedPolicies` variable. Otherwise, just use the variable \`policyNames

It is possible to configure a step that has dependence on other(s), both approval and reproval dependencies.
For aproval dependencies, you will set variable `stepIdsDependencies` which is and array of step ids as strings.
For reproval dependencies, you will set variable `stepIdsReprovalDependencies` which is and array of step ids as strings.

Ex:

* It is only possible to measure step B, case by step A, this measure approved by all participants. In this case, step B has dependence on step A
* It is only possible to measure step C, if steps A and B are approved by their respective participants. In this case, step A depends on step A and B.
* It is only possible to measure at step E, in case step D is reproved (a reproval of a participant is enough) In this case, step E is dependent on reproval of step D.
* It is only possible to measure at step E, in the case of step D and C, there are reprovadas (just one reproval of a participant in each step) In this case, step E is dependent on the reproval of steps D and C.

The variable `stepIdsDependencies` is an array of ids of other steps, defined when there is a dependence on reproval
A variable `stepIdsReprovalDependencies` is an array of ids of the other steps, defined when there is a reproval dependency

## Relationship Graph (bullets)

* Step.process -> Process (Step N — 1 Process) \[fk: processId -> id] (onDelete: Cascade)
* Data.step -> Step (Data N — 1 Step) \[fk: stepId -> id]
* Parameter.step -> Step (Parameter N — 1 Step) \[fk: stepId -> id] (optional) (onDelete: SetNull)
* OptionItem.parameter -> Parameter (OptionItem N — 1 Parameter) \[fk: parameterId -> id] (optional)
* AdvancedOptions.parameter -> Parameter (AdvancedOptions 1 — 1 Parameter) \[fk: parameterId -> id] (optional) (unique: parameterId)

## Cardinality Summary (one line per pair)

* Process ↔ Step: Process 1 — N Step
* Step ↔ Data: Step 1 — N Data
* Step ↔ Parameter: Step 1 — N Parameter (optional on Parameter)
* Parameter ↔ Data: Parameter 1 — N Data (optional on Data)
* Parameter ↔ OptionItem: Parameter 1 — N OptionItem (optional on OptionItem)
* Parameter ↔ AdvancedOptions: Parameter 1 — 1 AdvancedOptions (optional on both sides; parameterId unique)
* Parameter ↔ Parameter: self 1 — N (optional child fk) \[relation: "listParameters"]
