# Recipes

Recipes are used to define a set of values of Tags, and these values can then be loaded and/or saved while a project is in deployed mode. Each project can contain one or more set of Recipes, and each Recipe is composed of one or more Configuration that defines the values of the associated tags.

Recipes can be thought of as a traditional food recipe, where the Tags are the "ingredients", and the Recipe Configurations define the serving size. For example, in this scenario, if you wanted to make a chocolate cake, and you wanted to make a single slice of cake, that would be one configuration. A cake for 4-6 people would be another configuration, and a cake for 10-12 people would be yet another configuration. The ingredients are the same, but the quantity varies.

In the (Undefined variable: $System.Recipes.ProductName) application, this would mean you had a Recipe called "ChocolateCake", with Tags for $Eggs, $Flour, $Sugar, $Butter, and three Configurations of Small, Medium and Large.

- The Small Configuration would have $Eggs = 1, $Flour = .5, $Sugar = .33 and $Butter = .25
- The Medium Configuration would have $Eggs = 2, $Flour = 1, $Sugar = .5 and $Butter = .5
- The Large Configuration would have $Eggs = 3, $Flour = 2.5, $Sugar = 1.5 and $Butter = 1.5
- Note:

  - Recipes support tags of the following data types:

    - Boolean
    - Integer
    - Long
    - Double
    - String
    - DateTime
    - Byte []
    - A CogDictionary data type can be used to save an array of patterns or other specific VisionPro types.
  - To update the values for a complex type, e.g. VisionPro ToolBlock or Tool, you must click into it’s value column, and press the "Retrieve the value from the system." button. This will copy the current values from the Tool Block into this recipe configuration.