Quodsi Docs

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

PlaceWhat it doesLowest view
Entity, on a generator's Basic tabThe 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 connectorRoutes by type. These read a type and never change it.Intermediate
Entity column, in an arrival scheduleThe type for one row. The default, (generator's entity), uses the generator's Entity.Advanced
Entity Template, on a Create actionThe type of the new entity. Required.Advanced
Entity Template, on a Split actionThe type of the new entities. The default, Use original's template, keeps the original's type.Advanced
Combined Template, on a Join actionThe 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.

WhereWhat you see
OverviewThroughput, Time in system and Avg WIP cover all Flow types together. Helper types are left out.
Flow AnalyticsWith 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.
DashboardA 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.

PropertyWhere to find itWhat it does
Add EntityTop of the tab, Intermediate view.Opens a blank form. It's disabled while a form is open.
NameForm, 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 flowForm, 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, CancelBottom 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.
EditEach 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.
DeleteEach 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:

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.

In Lucidchart Every model has Default Entity, and you can't remove it. So the last type is always the locked one, new generators use it, and it's always the replacement when you delete a type.
In draw.io Default Entity is only added to a model with no types. A model that comes with its own types doesn't have it, so no row is locked. The last remaining type still can't be deleted. New generators use Default Entity if it's there, otherwise the first type in the list. The replacement after a delete follows the same rule.

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:

PropertyWhere to find itWhat happens on delete
EntityGenerator, Basic tab.Switches to the replacement. The generator's entities now count as that type.
Entity Template, Applies toConnector, 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 TemplateCreate 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 TemplateSplit action.Cleared to Use original's template, so the pieces take the original's type.
Combined TemplateJoin action.Cleared to Use first entity's template, so the combined entity takes the type of the first to arrive.
EntityArrival 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.

Helper still counts in the bottleneck ranking. In a model with a light Flow type and an overloaded Helper type, the busiest step can be the Helper's. Pick the type in Flow Analytics to see each one on its own.

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

Related pages