Propagation of data through the system specifically in case of graphic representation
The case described here can be depicted with the following schematic:
For a BrightCore system to represent control network data graphically, there have to be three components:
- the control network whose data we want to represent
- the network controller to translate and process the data
- the client (BrightLet) to show the data on a screen
An object processes input data. That processing adds meaning to the data and thus an object produces information which can further be used by a client.
There are many types (or classes) of objects. Objects are data-processors and an object's class defines how the data which is sent to a specific object will be processed. There are some basic classes of objects but all others are not defined, they are created by the user through the BrightCore's configuration tool (the Builder).
BrightCore clients are called BrightLets and are in essence computer programs which use the BrightCore Shell (an API) to connect to the network controller and read, write or subscribe to its data. Here is a more detailed schematic:
The Shell handles low-level tasks such as connecting to the controller, handling the data traffic, etc. There is a "Graphics lib" on top of it. That is a library (a reusable piece of code) which retrieves the Graphics plug-in from the Shell and uses it to build a graphic model of the data. Graphics plug-ins are pieces of BrightCore configuration which do not interest the network controller, nor the Shell. They do interest the clients however and are passed on by the controller and Shell for the clients to use. The GUI layer uses the graphics library's graphics model to display the data on the screen.
For data to be represented on a screen in real-time (as it changes) the client has to be notified of the data change events. If data is to be used by a GUI, it has to notify the Graphics lib which in turn notifies the Shell. The Shell then sends a subscription request to the network controller:
When data on the control net changes, the network controller is notified of the change. It looks up its list of subscribers and notifies them of the change:
The Shell receives the notification, passes it on to the Graphics lib which updates its model. The graphics update is sent to the GUI which displays the graphical change on the screen.