--- entityname: Flow entitynamelowercase: flow alias: user-guide-create-flow description: "Create and manage automated material flows within a system, defining steps and conditions for processing" --- # Create Flow :lock: Flow.**Create** ## Overview This operation is used to create a **Flow**. For more information, see the [[tutorials-flowmodeling|]] Tutorial. ## Setup No specific setup is required other than to meet the preconditions of the transaction. ## Preconditions * The **Flow** does not currently exist in the system. ## Sequence of Steps {% include-markdown 'includes/pages/info_creating_versioned_entities.md' %} ### Step 1: Change Set {% include-markdown 'includes/pages/step_one_versioned_entities.md' %} ### Step 2: General Data 1. Provide a name for the **Flow**. !!! warning A Flow name may not contain the following characters: `:` and `/`. 2. If you are creating a new version, the revision that was selected when you started the process will be the revision to which this version will be associated. If you are creating a new entity or revision (with a new version associated to it), provide a name for the revision or it will be automatically generated for you. For more information on revision naming, see [Revision Naming](../../../general/revisions#Naming/). 3. Optionally, provide a description of the **Flow**. 4. Select the **Flow** type. The list of possible values is taken from the lookup table [[flowtype-lt]]. 5. Select the type of **Flow**: * Sequential * Alternate (choose Single or Multiple Selection) * Non-Sequential Block * Line !!! warning Non-Sequential Block Flows or Line Flows can only contain Steps. 6. Set the **Flow** as enabled or disabled. !!! info A disabled Flow prevents any Material from being assigned to that Flow, whether from traditional creation or through rework, adjustment or any other reason. However, if the Material already exists in a Flow that is disabled, processing can continue normally. 7. Select **Create** to complete the transaction and a new object will be created. ![Screenshot showing the "Create" button in the context of entering general data for a new object.](images/create_flow_wizard_sequential_flow.png) ### Step 3: Flow Items At this point the **Flow** is created but there are no **Steps** or **Flows** defined for it. To start building the **Flow** structure, select the :material-pencil: button in the center of the window. ![Screenshot showing an empty Flow with a highlighted pencil icon to add steps and flows.](images/create_flow_step_two.png) To add to the **Flow** structure, select either **Add Step** or **Add Flow**. This action will insert a new row will into the structure. ![Screenshot showing the standard cookie flow options in the flow items section of a workflow editor.](images/create_flow_step_three.png){width=600} Compose the structure of the **Flow**, bearing in mind the following restrictions: * A **Flow** cannot be empty - it must have at least one Child Flow or one **Step**. * When a **Flow** has Steps, the last **Step** cannot be an optional **Step** (even in the case of a Non-Sequential block, although it can be performed at any time). * A **Flow** which is Alternate cannot have Optional Steps. * A **Flow** which is Non-Sequential Block cannot be Alternate. * A **Flow** which is Non-Sequential Block cannot have duplicated Steps. Each **Step** added to the **Flow** can be customized as outlined by the table below: | Flow Type | Optional | Line Step | Skippable | |-----------|-----------|-----------|-----------| | Sequential | X | X | X | | Non-Sequential Block | X | X | X | | Alternate | | X | X | | Line | X | | | Table: Flow Types and Step Options !!! note The Skippable option is only used in the context of Experiments. For more information, see [[user-guide-create-experiment-definition]]. You can add any desired **Flow Item** to the structure and rearrange it as needed during the editing process. ![Screenshot showing a UI with two editable fields labeled "Coomecn" and "anand ne", alongside a rearrangement option.](images/create_flow_step_four.png) !!! info If a Step has defined any Logical Names, the same Logical Names can be selected for the Flow, in order to represent a specific logical Step. For more information, see [[tutorials-flowmodeling#logical-names|Flow with Logical Names]]. ### Optional Flow Items Optional **Flow Items**, whether **Step** or **Flow**, can be skipped during the process. The decision to skip is made when moving the **Material** to the next **Flow** or **Step**, either manually or via a business rule. You can define conditions for optional **Flow Items** and those in Alternate **Flows** to determine the next **Steps** for a **Material**, based on its state and characteristics. These conditions are set by the Condition Type property and include the following types: === "Expression" Requires a [Case Sensitive](#case-sensitivity) expression in [JSONata](https://jsonata.org/) that evaluates the state of the Material and returns `true` or `false`. This expression can reference direct properties, attributes, and characteristics of the Material, as well as properties of its Product, Product Group, and Step. Some examples are: