Creating a Flow Model#
Estimated time to read: 19 minutes
Overview#
The following table defines some key concepts that are relevant for this tutorial:
| Concept | Description |
|---|---|
| Step | A Step is the smallest process tracking unit for a Material. |
| Flow | A Flow defines a sequence of Steps that a certain Material must follow. It’s possible to define a default Flow for every Product and Product Group that will be assigned automatically by the system when first creating a Material of that Product. A Flow can contain Flow Items of type Flow or Step. Since a Flow may contain duplicate Flow Items, the specific position within the Flow is called a Flow Path and it has a unique address within the Flow. |
| Product | A Product is a specification of what a current Material is or what it’s intended for the Material to become. A Product being a specification has no physical existence. |
| Material | A Material is a physical instantiation of a Product and it has a quantity associated with it. A Material, in Critical Manufacturing MES, is a very generic object and it can represent raw materials, semi-finished and finished goods, durables and work-in-progress (WIP). In addition to a reference to a Product, it is associated with a Flow, a Step, and a Facility. |
| Service | A Service is a certain process capability that is required by a Material for a certain context, and that are provided by Resources. When a Resource provides the Service that is required by the Material, the Material can be dispatched and processed at that Resource. |
| Reason | A Reason is used to categorize losses and bonuses as well as to justify Reworks, Off-Flows and Holds. |
Table: Core concepts
The next figure describes the simplified Flow object model:
graph TD
A1[Flow] -.- A2[Child Flow]
A1 -.- A3[Step]
A3 --> A4[Reason]
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 mermaid_businessdata
class A2,A3 mermaid_entitylinked
class A4 mermaid_context
Flow Item#
As previously mentioned, a Flow consists of a combination of Flow Items, which can be of type Step or Flow. So, a Flow may contain exclusively Steps, Flows, or a mixture of both Flows and Steps.
graph TD;
A[TopMost Flow]
A --> B(Step 1)--> C(Step 2)--> D(Step 3)--> E(Step 4)
A --> F(Flow 1)--> G(Flow 2)--> H(Flow 3)--> I(Flow 4)
A --> J(Flow 1)--> K(Step 1)--> L(Step 2)--> M(Flow 2)
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 A mermaid_businessdata
class F,G,H,I,J,M mermaid_entity
class B,C,D,E,K,L mermaid_entitylinked Since Flows can contain other Flows, it is important to understand the correct referencing approach. In the provided scenario, where a Flow has two Child Flows, Flow 1 would be the TopMost Flow, Flow 1.1 would be the Parent Flow, and Flow 1.1.1 would be the Child Flow. However, when delineating the relation between Flow 1 and Flow 1.1, we could also define Flow 1.1 as a Child Flow of the TopMost Flow.
Another possible scenario is displayed below, where Flow 1 is composed of two Flow Items of different types (Flow 1.1 and Step 3), while Flow 1.1 is comprised of two Flow Items of type Step (Step 1 and 2).
Note
When a Step has Flows at the same level, instead of the usual filled circle icon, it appears as an outlined circle resembling the standard Step icon.
Step Characteristics#
Each Step defines several relevant characteristics that determine the Material tracking and other behavior as listed in the next table:
Table: Step relevant properties
Flow Characteristics#
The table below describes important Flow characteristics.
Table: Flow characteristics
Types of Flows#
Sequential Flows#
This is the default mode when creating a Flow. A Sequential Flow may include Flow Items of both types (Flows or Steps), may contain optional Flow Items, may be skipped, and can also include Line Steps.
Info
In a Sequential Flow, the final Flow Item cannot be optional.
Non-Sequential Blocks#
A Non-Sequential Block defines a set of Steps (typically testing/metrology Steps) that need to be performed on a certain Material but for which the order of execution is not relevant. In the example below, the sequences Step 01 – Step 02 – Step 03; Step 02 – Step 01 – Step 03; and Step 03 – Step 01 – Step 02; are all valid sequences for the Material.
Warning
A Non-Sequential Block Flow must consist solely of Flow Items of type Steps, ensuring there is at least one non-optional Step. If the last Flow Item is a Step, it cannot be an optional one. Moreover, it cannot include Alternate or Line Flows and must not contain repeated Steps, regardless of any variation in their Logical Names.
Alternate Flows#
When a Flow is Alternate, only one of its branches, be it made of Flow Items of type Flow or Step, will be taken by a Material. That is, each Flow Item that makes up the Flow is mutually exclusive. The Alternate Flow Selection Type offers two options:
- Single: Only the first Flow Item whose condition resolves to true is considered when attempting to move the Material to the next Step.
- Multiple (default): All Flow Items whose conditions resolve to true are displayed for selection while attempting to move the Material to the next Step.
Warning
An Alternate Flow cannot have optional Flow Items, and it cannot be a Non-Sequential Block or a Line Flow. Additionally, it must not contain duplicated Flow Items, even if their Logical Names differ.
An Alternate Flow with Single Selection requires that every Flow Item has a defined Condition, which can be either an Expression or a Rule.
Line Flows#
The Line Flow outlines the sequential Sub-Steps aligning with the operations conducted across the Sub-Resources of the Line Resource. A Line Flow must only contain Flow Items of type Step, excluding Pass-Through Steps and any Step marked as Is Line. The first and last Step of a Line Flow cannot be optional. Additionally, it must not be a Non-Sequential Block or an Alternate Flow.
Info
For more information, see Line Material Tracking.
Rework Flow Paths#
In a Flow composed of Steps, it’s possible to define one or more Rework Paths at each Step. A Rework Path can be associated with an Off-Flow Reason linked to the Step, indicating its relevance for Rework, and it establishes both the Go To Flow Path and the Return point within the Flow.
Rework Paths can be defined at the Parent Flow level, allowing Return Paths to any Step within its structure. These Return Paths are anchored to the TopMost Flow where they are defined, rather than to a specific Flow Item. For instance, in the diagram below, the Return Path can be any Step (e.g., Step 1, Step 2, Step 3, or Step 4) within the TopMost Flow (Flow 1).
There are no limits to the number and levels of Rework. A Material which is in Rework, can be sent to Rework. Furthermore, a Flow inherits Rework Paths from their inner Flows. If an inner Flow has Rework Paths, they will also be available for Materials processed in the main Flow, alongside any other Rework Paths defined for the main Flow. You can specify whether a Rework Path applies when the Material is in Queued or Processed state. This is controlled by the flags Applies to Queued and Applies to Processed in the Rework Path Entity Type. It's also possible to define a Rule, of scope Material Tracking, triggered when the Material is sent for Rework via a specific Rework Path. This is managed by the On Rework Rule property of the Rework Path Entity Type.
When the Source Rework Flow (i.e., the Parent Flow of the Rework Step) is a Line Flow, the property IsInLineRework cannot be null - it's either set to True or False. If this property is True the Go To Flow must be a Line Flow and all the Steps in this Flow must exist in the current Source Rework Flow.
You can access a comprehensive list of Rework Paths configured for a Flow by selecting the View Rework Paths button located in the action bar.
Logical Names#
The reusability potential of Flows and Steps is enhanced through 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. This name designates the Intended Usage of the Flow Item.
-
A Logical Flow Path is a simple sequential list of all the Logical Names within the Flow Item.
This approach allows you to avoid duplicating Flow Items and instead reuse them in different contexts or for different purposes. For instance, you can repeat a sequence of Steps with varying parameters (such as Durables, Recipe, BOM, and others) without creating new Flow Items each time.
The Logical Name feature provides the flexibility to specify the usage, purpose, or intent of a Step when creating the Flow. You can use the same Flow Items with different Logical Names across various Flows, except for Alternate Flows, Non-Sequential Blocks, or Line Flows.
Note
Logical Names are predefined and managed at the Flow and Step level. For more information, see How to: Manage Step Logical Names.
Conditional Resolution of Optional Flow Items#
Optional Flow Items, whether of type Step or Flow, are elements that can be skipped during the process. The decision to skip them or not must be made when moving the Material to the next Flow and Step, either manually or automatically through a business rule. Additionally, optional Flow Items or those belonging to Alternate Flows can have associated conditions. These conditions will be evaluated when determining the possible next Steps for a Material, determining the Flow and Step to which the Material can move next taking into account the state and characteristics of the Material at that time. The conditions applied to the Flow Items, determined by the Condition Type property, can be one of the various types listed in the table below.
| Condition Type | Description |
|---|---|
| Expression |
|
| Rule |
|
| Step Sampling |
|
| Sampling Plan |
|
Info
Only Flow Items of type Step belonging to Flows other than Non-Sequential Blocks or Alternate Flows can have the Condition Type set to Step Sampling or Sampling Plan.
Execute Rules on Enter/Exit Step#
You can define Rules to be run when a Material enters or exists a Step. These Rules are linked to DEE Actions, enabling you to execute custom code to be triggered when entering or exiting a specific Step. The management of these Rules is handled by the Flow structure. In the Edit Flow Structure view, you can select a Rule with the scope Material Tracking to be executed for Enter and Exit events of Flow Items of type Step. This functionality is controlled by the On Enter Rule and On Exit Rule properties of the Flow Item.
Visual Conventions#
Critical Manufacturing MES includes icons to help you quickly identify each type of Flow and highlight any special configurations for Flow Items. The table below lists the possible icons and their corresponding meanings.
| Icon | Description |
|---|---|
| Indicates a Sequential Flow | |
| Indicates a Non-Sequential Block | |
| Indicates an Alternate Flow | |
| Indicates a Line Flow | |
| Indicates a Rework Path | |
| Indicates an Optional Flow Item | |
| Indicates a Pass-through Step | |
| Indicates the presence of a Condition | |
| Indicates the presence of a Rule |
Table: Visual Conventions
Step contexts are also represented by icons, making it easier to identify them at a glance. Below is a table listing these icons along with their meanings:
| Icon | Context |
|---|---|
| Service | |
| Resource | |
| Recipe | |
| Parameter | |
| Data Collection | |
| Chart | |
| Checklist | |
| BOM | |
| Durable | |
| Document | |
| Flow | |
| Yield and Cycle Time | |
| Future Action |
Table: Visual Conventions for Step Contexts
In the Context Matrix view, each entity is represented by an icon, and their meanings are provided in the table below:
| Icon | Description |
|---|---|
| Service | |
| Resource | |
| Recipe | |
| Parameter | |
| Data Collection | |
| Chart | |
| Checklist | |
| BOM | |
| Durable | |
| Document | |
| Sampling Pattern | |
| Inspection Plan: | |
| Time Constraints | |
| Flow | |
| Certification Requirements | |
| Yield and Cycle Time |
Table: Visual Conventions for Entities on the Context Matrix View








