Skip to content

Flow#

🔒 Flow.Show

Overview#

A Flow represents a pre-defined route or path for Material.

A Flow is either a combination of other Flows or Steps. It is important to highlight that a Flow can only have either Flows or Steps at the same level.

A Flow can be shared by multiple Materials at any given time. A Material is always in a Flow. Since Flows can be nested, the Flow of the Material always refers to the top main Flow.

Because Steps and Flows can be repeated in a given Flow, the unique position of the Step (or Sub Flow) in the Flow is determined by a Flow Path. A Flow Path includes a sequence in the form of Flow:RevisionName:CorrelationId/Flow:RevisionName:CorrelationId/.../Step:CorrelationId. The CorrelationId allows changes to be made to a Flow - when creating a new version - and still preserve compatibility with previous Flow versions. For a particular Flow version, the CorrelationId also maps to a Position (or sequence), that defines the position of the Step/Flow in a particular Flow. When setting a new Flow version effective, the system will check that no Material stays in an invalid Flow Path using the CorrelationIds. This allows the Steps/Flows to be reordered, the addition of new Step/Flows and the removal of Step/Flows that have no Materials.

Info

Materials always store internally the Flow Path with references to CorrelationIds. In some places in the GUI, a user friendly Flow Path using the Positions instead of CorrelationIds is displayed.

The reusability potential of Flows and Steps is reflected in the use of Logical Names and Logical Flow Paths:

  • A Logical Name is an optional qualified name for a Flow or Step within a specific Flow version that designates the Intended Usage of the Flow or Step.

  • A Logical Flow Path is a simple sequence of all the Logical Names of the Flow and Step.

This means you do not need to duplicate Flows and Steps, and you can reuse the same Flows and Steps but with different contexts/intents. For example, in situations where you repeat a sequence of Steps but some parameters are different (Durables, Recipe, BOM, and other).

The Logical Name feature gives you the freedom to specify the usage, purpose or intent of your Step, and it is assigned when you create the Flow.

Note

Logical Names are pre-defined and managed at the Flow and Step level.

A Flow can be marked as Alternate. When a Flow is alternate, it means that only one of the Sub Flows or Sub Steps is taken by the Material in that Flow. At runtime, the specific path to be taken must be specified.

A Step within a Flow can be marked as Optional. This indicates that the Step can be performed or not. During runtime there must be the indication as to whether the Material moves to the optional Step or not.

A Flow can be a Non-Sequential Block. A Non-Sequential Block consists of a set of Steps that can be performed in any order. A Non-Sequential Block must contain at least one non-optional Step.

The following restrictions apply to Flows:

  • A Flow cannot be empty - it must have at least one Sub-Flow or one Step.
  • When a Flow has Steps and is not a Non-Sequential Block, the last Step cannot be an optional Step.
  • A Flow which is Alternate cannot have Optional Steps.
  • A Flow which is a Non-Sequential Block cannot be Alternate.
  • A Flow which is a Non-Sequential Block cannot have duplicated Steps.

Even though a Flow can span more than one Facility, indirectly via the Areas of the Steps that make up the Flow, during runtime, if a Step belongs to a different Facility, it will not be possible to perform a Material Move Next. The only way to transfer Material between Facilities is through a Ship Material transaction.

A Flow can be enabled or disabled. A disabled Flow prevents any material form being assigned to that Flow - be it from Material creation, Material flow change, or any other operation. In case the Material already exists in a disabled Flow, it can continue to be processed normally.

A Flow with Steps can have Rework Information configured for each Step. Rework Information is assigned to each Step individually. A Step can have multiple Reworking Paths. A Rework Path contains a Go To Flow Path, a return Step within the same Flow and optionally a Rework Reason of the Step used to indicate that the Rework Path is the default one for that Rework Reason.

Warning

A Flow that is used as a rework Flow may only contain Steps. Rework Flows composed of other Flows may not be used for rework.

Global and Versioned Data#

A Flow, being a change controlled object, contains global data and versioned data components as shown in the following image:

graph TD
subgraph Flow
Main1["Global Data<br>(Without Change Control)"] --- A1[IsEnabled]
Main2["Versioned Data<br>(With Change Control)"] --- A2[IsAlternate<br>SubFlows or Steps<br>Rework Paths<br>All other]
end


classDef mermaid_title color:#000, fill:#fafafa, stroke:#fafafa, stroke-width:0x, font-size:100%, font-weight:200;
classDef mermaid_start color:#000, fill:#fafafa, stroke:#fafafa, color:#fafafa, stroke-width:0x, font-size:100%, visibility: hidden;
classDef mermaid_businessdata color:#000, fill:#65CDE8, stroke:#65CDE8, stroke-width:0px, font-size:100%;
classDef mermaid_nonbusinessdata color:#000, fill:#B7DEE8, stroke:#B7DEE8, stroke-width:0px, font-size:100%;
classDef mermaid_entity color:#000, fill:#FB9F53, stroke:#FB9F53, stroke-width:0px, font-size:100%;
classDef mermaid_entitylinked color:#000, fill:#FCD5B5, stroke:#FCD5B5, stroke-width:0px, font-size:100%;
classDef mermaid_context color:#000, fill:#B9CDE5, stroke:#B9CDE5, stroke-width:0px, font-size:100%;
classDef mermaid_optional color:#000, fill:#B7DEE8, stroke:#65CDE8, stroke-width:1px, font-size:100%, stroke-dasharray: 5 5;
classDef mermaid_state color:#000, fill:#d7e4bd, stroke:#000, stroke-width:1px, font-size:100%, font-weight:300;
class Main1,Main2 mermaid_entity
class A1,A2 mermaid_entitylinked

A Flow is also an optional element in several context resolution tables:

Tying Everything Together#

graph LR
    A1[Notification] -.- Main[Flow]
    A2[Product] -.- Main
    A3[Schedule Scenario Job] --- Main
    A4[Protocol Instance] -.- Main
    Main --- A5[Material]
    Main -.- A6[Data Collection Instance]
    Main -.- N1[Flow Logical Name]
    Main === L1[Sub Flow]
    Main === L2[Flow Step]
    L2 --- L3[Rework Path]
    L3 --- A7[Reason]
    Main -.- C1[Context Smart Tables]

classDef mermaid_title color:#000, fill:#fafafa, stroke:#fafafa, stroke-width:0x, font-size:100%, font-weight:200;
classDef mermaid_start color:#000, fill:#fafafa, stroke:#fafafa, color:#fafafa, stroke-width:0x, font-size:100%, visibility: hidden;
classDef mermaid_businessdata color:#000, fill:#65CDE8, stroke:#65CDE8, stroke-width:0px, font-size:100%;
classDef mermaid_nonbusinessdata color:#000, fill:#B7DEE8, stroke:#B7DEE8, stroke-width:0px, font-size:100%;
classDef mermaid_entity color:#000, fill:#FB9F53, stroke:#FB9F53, stroke-width:0px, font-size:100%;
classDef mermaid_entitylinked color:#000, fill:#FCD5B5, stroke:#FCD5B5, stroke-width:0px, font-size:100%;
classDef mermaid_context color:#000, fill:#B9CDE5, stroke:#B9CDE5, stroke-width:0px, font-size:100%;
classDef mermaid_optional color:#000, fill:#B7DEE8, stroke:#65CDE8, stroke-width:1px, font-size:100%, stroke-dasharray: 5 5;
class Main mermaid_entity
class A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12 mermaid_businessdata
class L1,L2,L3,L4,L5,L6 mermaid_entitylinked
class C1,C2,C3,C4,C5,C6 mermaid_context
class N1,N2,N3,N4,N5,N6 mermaid_nonbusinessdata

click Main "../../business-data/flow"
click A1 "../../business-data/notification"
click A2 "../../business-data/product"
click A4 "../../business-data/protocol/protocol-instance"
click A5 "../../business-data/material"
click A6 "../../business-data/data-collection/data-collection-instance"
click A7 "../../business-data/reason"
click L1 "../../business-data/flow"
click L2 "../../business-data/step"

Sequence Of Steps#

The necessary steps for correctly using a Flow are the following:

  1. Create the necessary Steps and create the necessary sub Flows for the Flow.
  2. Create a Flow - note that it is necessary to associate the Flow Version to a Change Set.
  3. Approve the Change Set, which contains the Flow Version that has been created.

Info

For convenience, the Flow can be configured to use implicit Change Sets. Please refer to the Change Set section for more information.

Info

For more information, see the Flow Modeling tutorial.