Component Communication Table

sends/receives Schema Data Storage Data Entry Query Reporting Logging UI
Schema N/A table, row, field, data type, defined list/value, timestamp last modified, version/build, OK/Error string/severity N/A N/A N/A version/build, Error/OK string/severity N/A
Data Storage table, row, field, data type, defined list/value, version/build, OK/Error string/severity N/A component version/build, OK/Error string/severity table, row, field, data type, defined list/value, version/build, OK/Error string/severity N/A version/build, Error/OK string/severity N/A
Data Entry N/A table, row, field, data type, defined list/value, version/build N/A version/build, Error/OK string/severity N/A version/build, Error/OK string/severity table, row, field, data type, defined list/value, version/build
Query N/A SQL Query/boolean, version/build, OK/Error string/severity table, row, version/build, Error/OK string/severity N/A table, row, field, data type, defined list/value, version/build, Error/OK string/severity version/build, Error/OK string/severity N/A
Reporting N/A N/A N/A SQL query/boolean, version/build, Error/OK string/severity N/A version/build, Error/OK string/severity table, row, field, data type, define list/value, version/build, OK/Error string/severity, misc text
Logging N/A N/A N/A N/A N/A N/A N/A
UI N/A N/A table, row, field, data type, defined list/value N/A SQL query/boolean, reporting selections, version/build, Error/OK string/severity version/build, Error/OK string/severity N/A


The Schema component only communicates with the Data Storage component and has one-way communication with the Logging component. The Schema sends the Data Storage format information for the record type the Data Storage is trying to save. The Schema will have tables that contain field and meta information for all the record types, and each table will have a last modified timestamp. The Data Storage component will first query for the existence of a given table and the Schema will return the table name and the last modified date (perhaps with some additional indexing data) if said table is found. The Data Storage will then download the table for that record type if it has not cached it, or if the timestamp differs from the one it currently has. If the timestamp does not differ and the Data Storage already has the table for the given record type, it will use it's cached copy. If the table requested by Data Storage is unknown to the Schema, it will return an error to the caller and log the parameters of the search with a low severity level. The Schema will also allow for a NULL parameter which will return a list of the tables currently stored in the schema.

The Data Storage component communicates with the Schema as documented above. It communicates with the Data Entry component when the Data Entry sends it a record table/row/field to commit. It responds to the Data Entry component with an OK if the record commit succeeded, or an ERROR if it failed. If there is an Error, it is logged with a severity dependant upon what failed. Data Storage communicates with the Query component when the Query sends it



Component Diagram

Legend:
	i = upward communication
	I = downward communication


		 ______________
		/              \
		|  schema	|
		\______________/
			iI
		 _______iI_____
		/              \
 remote		| data storage	|	remote
		\______________/
               iI              Ii
============= iI                Ii ================================
	 ____iI________		 Ii____________  
	/              \        /              \  
	|  query	|iiiiii|    entry      |
	\______________/IIIIIIII\______________/
             iI                  iI
 local       iI                 iI         local
	 ____iI________         iI
	/              \       iI
	|  reporting	|      iI
	\______________/      iI
		iI	      iI
                 iI          iI
                  iI         iI
		 _iI________iI_
		/              \
		|    UI 	|
		\______________/