Note that the capabilities of systems with respect to recipe management may be very different. In the following typical system setups are described without any claim to completeness. Note also that the behavior described is only one of several possibilities.
- Preconfigured system: a system that is configured outside the scope of this specification, starts automatically through states Preoperational and Initialized into Ready. It will immediately react to Start method, ignoring a possible recipe or product argument.
- Single recipe system: a system that can hold a single recipe; it may start through Preoperational into Initialized, then wait for a call to the AddRecipe method and immediately prepare this recipe and transition into Ready. It can immediately react to a Start method call, ignoring a possible recipe or product argument (or it will throw an error if this is not the current recipe/product).
- Single program system: a system that can hold several recipes but can have only a single prepared or active recipe; it starts through Preoperational into Initialized, then waits for one or more AddRecipe method calls, staying in Initialized. Upon a call to the PrepareRecipe method it will transition into Ready. It will immediately react to a Start method call with the appropriate recipe or product argument, but throw an error if this is not the prepared recipe/product.
- Multi program system: a system that can hold several recipes active; it behaves like a single program system until Ready. It will then allow for several additional recipes to be prepared (state handling is discussed later). For each of the prepared recipes, it will react to a Start method call immediately if the recipe or product is prepared and throw an error for a not-prepared recipe or product.
Note that all transitions are under the provision that no error occurs.