Entity
Entities are the things moving through your process. Define a type for each kind of work you want to track separately.
What it is
An entity is one unit of work, such as a patient, a call, an order or a part. You define entity types, and generators create individual entities of those types during a run. In Lean terms, an entity is your flow unit, and the entities in the model at any moment are your WIP.
The question it helps answer
What am I measuring the flow of? Throughput, time in system and WIP are all reported per entity type, so separate types for urgent and routine patients let you see each one's numbers.
How it behaves
An entity is created by a generator, or by a Create, Split or Join action at an activity. It moves along connectors, waits in queues, and works through the actions at each activity.
It leaves the model in one of four ways. It finishes an activity with no outgoing connector, a Dispose action removes it, a Join consumes it, or a Split replaces it. Only the first counts as completed. Any resources it still holds are released as it leaves.
A type has no behavior of its own. It has no durations, costs or priority, so two types run the same way through the same steps. A type only changes the run where Entity Template routing or Applies to reads it. Otherwise it's the label that sorts your results.
Entities aren't shapes on your diagram. They're a list in the model. A model always has at least one entity type, and a new model starts with one named Default Entity, so you can build a first model without touching this list.
Each entity carries its own states, such as a priority. An entity state belongs to every type, not to one, so you can't give a state to Patients only. Each new entity starts at the state's Initial Value. The generator's States tab, a schedule row, or a Create, Split or Join action can then set a different value. Two entities of one type can hold different values.
Where a type is used
| Place | What it does | Lowest view |
|---|---|---|
| Entity, on a generator's Basic tab | The type it creates. This field shows in every view. New generators start on Default Entity, unless a draw.io model doesn't have it. See Default Entity. | Basic |
| Entity Template and Applies to, on a connector | Routes by type. These read a type and never change it. | Intermediate |
| Entity column, in an arrival schedule | The type for one row. The default, (generator's entity), uses the generator's Entity. | Advanced |
| Entity Template, on a Create action | The type of the new entity. Required. | Advanced |
| Entity Template, on a Split action | The type of the new entities. The default, Use original's template, keeps the original's type. | Advanced |
| Combined Template, on a Join action | The type of the combined entity. The default, Use first entity's template, takes the type of the first to arrive. | Advanced |
Entity types in results
Results group by the type's Name. A type with no entities in the run has no row at all.
| Where | What you see |
|---|---|
| Overview | Throughput, Time in system and Avg WIP cover all Flow types together. Helper types are left out. |
| Flow Analytics | With more than one type, an Entity type picker offers System (all types) or one type, and a table shows each type's verdict, Arrived, Completed, Consumed, Disposed, Mean WIP and Flow time. |
| Dashboard | A Data table card with Data set to Entity gives one row per type, including Completed Count, Throughput Rate, Time in System, Avg WIP and the two costs per entity. Role shows FLOW or HELPER. |
Throughput. Completed Count counts entities that left through an activity with no outgoing connector. Consumed, split and disposed entities have their own counts. Throughput Rate is those completions per unit of time, from the end of the warm-up to the last completion.
Time in system. This averages completed entities only. Entities still in the model when the run ends aren't in it. A type with no completions has no value, so Flow Analytics shows — for Flow time. Exports and the Data Table still read 0.
Cost. Direct and fully loaded cost per entity are reported by type. Helper types take their share of fully loaded cost like any other type. See Costing.
States. Results for an entity state are reported per type, so you can compare a state's average across types.
Properties
Entity types live on the Entities tab of the Model editor, which you see with nothing selected on your diagram. There is one list per model, and no separate editor for a type. The tab needs the Intermediate view. The editor is the same in draw.io and Lucidchart.
A view only changes what you can edit, never what runs. In the Basic view the tab is hidden, and a model with more than one type shows This uses more than one entity type, hidden in Basic, with a link to switch views. Role in flow needs the Advanced view. In a lower view, a line says This uses helper entity types, and the Helper tag still shows in the list.
Entity types have no Levers tab, and a what-if can't change one.
Entities tab
The tab shows a count, such as 2 entities, then one row per type with Edit and Delete. Add and Edit use the same form, at the top of the tab, headed Add Entity or Edit Entity.
| Property | Where to find it | What it does |
|---|---|---|
| Add Entity | Top of the tab, Intermediate view. | Opens a blank form. It's disabled while a form is open. |
| Name | Form, Intermediate view. | Names the type in results and in every list that offers a type. Required: Save stays disabled until it holds text, and spaces at either end are removed. There's no length limit. Names must be unique, and capitals count, so Part and part are different. Save lets a duplicate through, then validation stops the model with 2 Entities are named 'Part'. |
| Description (optional) | Form, Intermediate view. | A one-line note, shown under the name in the list. It has no effect on the run and doesn't appear in results. |
| Role in flow | Form, Advanced view. | How the type counts in flow analytics. Flow (work that arrives and leaves) is the default. Helper (carts, tokens, staff as entities) tags the row and the results. See Helper types. Editing a type in a lower view keeps its saved role. |
| Save, Cancel | Bottom of the form. | Enter in the Name or Description box saves, and Escape cancels. If a save fails, the form stays open and shows the error. |
| Edit | Each row, Intermediate view. | Opens the form on that type. You can rename any type, including Default Entity. Generators, connectors and actions point to a type by its id, so a rename keeps them all. Results use the name from the run, so older runs keep the old name. |
| Delete | Each row, Intermediate view. Not on Default Entity. | Opens the confirmation below. It's disabled on the last type, with the tip A model needs at least one entity. |
Validation also checks entity types. A duplicate name, above, stops the model. These are warnings, so the model still runs:
- Entity 'Spare' is not used: no generator, action or schedule row creates it. No generator, Create, Split or Join action, or schedule row names this type. Default Entity is exempt.
- Activity 'Pack' has a Create action with no entity type. Choose the entity type it creates. This stops the model. Deleting the type a Create action used leaves one like this.
- Every entity type is marked Helper, so the flow verdict has nothing to judge. See Helper types.
- Entity 'New Entity' is using default name. Shown for that exact name.
Where an issue names one type, Go to source opens the Entities tab. In the Basic view it reads Entities is hidden in the Basic view instead.
Default Entity
A model with no types gets one named Default Entity. Its row shows a 🔒, with the tip The Default Entity cannot be deleted, and it has no Delete. The lock stays if you rename it.
Deleting an entity type
Delete opens a box directly under the row, titled Delete Entity: "Cart"? It closes any open form. Cancel takes the focus, and Escape closes the box. Delete Entity confirms. If the delete fails, the box stays open with the error.
The box reads: Generators and self-generating activities that use this entity will switch to "Default Entity". Entity templates on connectors and Create actions will be cleared. This action cannot be undone. The name in quotes is the replacement. A self-generating activity creates its own entities, and the panel has no setting for one. Here's what happens everywhere a type can be used:
| Property | Where to find it | What happens on delete |
|---|---|---|
| Entity | Generator, Basic tab. | Switches to the replacement. The generator's entities now count as that type. |
| Entity Template, Applies to | Connector, Routing tab. | Cleared to (none) or (all entity types). Under Entity Template routing, if every connector ends up at (none), validation stops the model. |
| Entity Template | Create action. | Cleared to (none), and the action shows Create requires both an entity template and a destination activity to execute. Validation stops the model until you choose a type. |
| Entity Template | Split action. | Cleared to Use original's template, so the pieces take the original's type. |
| Combined Template | Join action. | Cleared to Use first entity's template, so the combined entity takes the type of the first to arrive. |
| Entity | Arrival schedule row. | Cleared to (generator's entity), so the row creates the generator's type. |
Helper types
Mark a type Helper when it supports the work rather than being the work, such as a cart that circulates, or staff modeled as entities. Quodsi then judges the process on your Flow types only. The process verdict uses the worst Flow type, Verdict Set By never names a Helper, and the system curve in Flow Analytics leaves Helpers out. A Helper type keeps its own verdict and curve, tagged Helper in the table and (helper) in the picker.
The simulation doesn't change. A Helper type keeps its own rows, by type, in every result, and still counts in the bottleneck ranking and in costs, but it is left out of the process totals: Overview's Throughput, Time in system and Avg WIP, and Flow Analytics' System figures.
If every type is Helper, the process verdict is Inconclusive, and Flow Analytics shows Every entity type is marked Helper, so there is no system flow to draw.
Example
A production line makes two products that share a cutting step and then split up. In the Intermediate view, add types Standard and Custom on the Entities tab. Add two generators, and set Entity to Standard on one and Custom on the other. Connect both to Cut, then draw connectors from Cut to Finish Standard and Finish Custom. Set Cut's Connect Type to Entity Template, and set each connector to its product.
After a run, Flow Analytics shows Flow time for each product. Since Standard and Custom share Cut, you can see which one pays for the queue there.
Common mistakes
- Creating a type for every small difference. If entities differ only by a value, such as priority, use one type and a state.
- Expecting a type to change how work runs. Making an Urgent type doesn't make it faster or put it first. Use routing, or a state with Queue Ranking.
- Modeling staff as entities without marking them. If a type circulates rather than flows through, set its Role in flow to Helper, or it can set your whole-process verdict.
- Forgetting a Helper type in the totals. Process totals leave Helper types out, so a cart's trips don't count as output. Its own rows still show them.
- Deleting a type that a schedule or Join uses. Those references stay behind and stop the model or the run.
- Trying to delete the last entity type. A model needs at least one, and Default Entity can't be deleted at all.