12 Console.Waterworks Flow
Craig Oates edited this page 4 years ago

To help you get up to speed on the way Console.Waterworks (C.W.) works, please view the image below.

console.waterworks basic data flow

The way it works is as follows:

  1. You call a method in CW-Liaison;
  2. which then forwards it on to CoOridinator;
  3. CoOrdinator then usually calls the various methods within the "specialist" classes (CommandsSpecialist, CoersionSpecialist Etc.);
  4. When the task is complete, CoOrdinator returns the result to CW-Liaison; and then
  5. CW-Liaison returns the result to the method which made the original call in C.W.

If you are unsure what the methods in CW-Liaison do, use Visual Studio's intellisense. You can, also, read the code in CW-Liaison with the following link:

Below is a more detailed version of the image above.

console.waterworks detailed data flow

One of the main stays of C.W. is how it controls the flow of data. It tries to maintain a high degree of consistency and reduce "cross-pollination". What I mean by that is C.W.  tries to manage how, when and where the data flows via its CoOrdinator class. Each "specialist" class only deals with the CoOrdinator. They (specialists) do not call methods to/from each other. If one specialist needs information from another, it must go through the CoOrdinator. If you are someone new to the project, I am hopeful this consistency will help you learn the system quicker. With that said, there are a several places where this pattern is not applied. They are when you are dealing with CW-Logger, CW-Constants and the "attribute" classes. These classes are accessible throughout the whole system. So, you can call them whenever/wherever you want. They are not accessible outside the project, though. In other words, you can only do this when working within this project's source code and not when you are consuming C.W. as a NuGet package.

Here is a list of links for the various files/classes mentioned above: