How to model recipes in ValueFlows
A starter or suggested model, with some questions:
(Some of those names have been changed, so I'll use the new names in the text and change the diagram later.)
RecipeProcess in the diagram has been changed to ProcessClassification. ResourceCategory has been renamed to ResourceClassification. RecipeInput and RecipeOutput have not been renamed. Yet.
Basic recipe model:
A chain or tree or graph of ProcessClassifications with RecipeInputs and RecipeOutputs. One ProcessClassification may be connected to another if the ResourceClassification of one of its RecipeOutputs or RecipeInputs is the same as the ResourceClassification of a RecipeInput or RecipeOutput of another ProcessClassification.
So the basic node in a recipe is a ProcessClassification.
- Include ExchangeClassifications as nodes so a recipe can encompass Exchanges as well as Processes. That would require something analogous to RecipeInputs and RecipeOutputs for ExchangeClassifications.
- Allow for something like Workflow Recipes in NRP, where the input Resource has the same identity as the output Resource but is changed by the Process. Bill McCarthy calls such resources Carrier Resources. In food processing manufacturing systems, they were called Stream Resources. They need special treatment to differentiate the CarrierResource at one process stage from the same CarrierResource after another process has changed it. NRP used a "stage" property which was a link to the ProcessClassification of the Process that had last changed the Resource. This model has also been used in supply chain planning systems, and is documented in the book The Haystack Syndrome.
This type of recipe in NRP was originally designed for translations, as in this example:
They have subsequently used a lot by Sensorica for organizational processes.
Major design question:
Should a recipe have a container class, probably called Recipe, that is connected to a set of recipe nodes? Such a container is not necessary. NRP does not have one, you can start a recipe in NRP from any output ResourceClassification and a ProcessClassification that can create it, and you can traverse for display or planning purposes from the ProcessClassification through all of its RecipeInputs to other ProcessClassifications where the ResourceClassification of the first ProcessClassification is specified in a RecipeOutput.