the world according to the app layer. what the app layer does * facilitate the flow of information...
TRANSCRIPT
The World according to the App layer
What the App layer does
* Facilitate the flow of information between view and data representations (which have different requirements).
* Presenting information as to the configuration of the system to the UI and service layers, and receive information from them.
* Allowing a point of extension and integration in terms of extra data feeds and storage mechanisms, extendible through a plugin-like mechanism.
The Code
CSPi vs CSP
The app layer is split into
CSP = CollectionSpace PluginsCSPi = CollectionSpace Plugin implementations
The use of implementations allow the App layer to easily grow and accommodate multiple data sources and structures
CSPi Schema
Parses cspace-config.xml and makes it available to all areas of the App layer
CSPI-Schema / Spec
cspace-config.xml
CSPi WebUI
Deals with all calls from the UI and works out what to do with them
CSPi-WebUI/WebUI.java
CSPi-WebUI / WebLoginStatus
CSPi-WebUI / UISpec
CSPi-WebUI / RecordRead
RecordRead.java
/chain/objects/ef505766-b2be-49bc-bfe8
WebUI Spec
Cspace-config.xml
TermsUsed RecordDataRelatedObjects
/relations/subject/*/
/relations/csid
/{recordtype}/{csid}
/{recordtype}/{csid}/authorityrefs
/{recordtype}/{authcsid}/items/{itemscsid}
/{csid}
JSONObject
JSONObject
/chain/objects/ef505766-b2be-49bc-bfe8
APP LAYER
RESTFul toService Layer in CSPi-Services
JSONObjectJSONObject
CSPi Services
Talks to the service layer and finds out everything the UI needs to know
CSPi-Services / ServiceStorageGenerator
CSPi-Services / RecordStorage
Storage
XmlJsonConversion
A more complex example
Important to note that that filePath sent from the webUI is not necessarily the URL that the service layer needs and is more like a flag which helps the app layer decide what to do with it once it hits CSPi Services as sometimes we need to make multiple calls to the Service Layers RestFul services to get all the information needed
CSPi-WebUI/ RecordRead
CSPi-WebUI/ RecordRead
In Summary
Data Flow
Berkeley
Services
Toronto UI
MagicCSPi-
Services
CSPi-WebUI
RESTful XML/cspace-services/xxx/x
JSON/chain/xxx/xxx
App Layer
CSPi-Schema
cspace-config.xml
CSPi-Schema
This is responsible for maintaining the "core" configuration.
Many plugins will just be able to use the configuration managed by this plugin, and not have their own extensions at all.
Spec.java is the main class and is initialised only once at the startup and will parse the config against a set of “rules”.
Rules can be added in any class, any where in the system – which means that you can override specific rules for different implementations if needed.
CSPi-WebUI Main
WebUI.java maps urls to classes
Record/authority/relate/userroles/userdetails
All Fundamentally the same
Have 4 classes
CreateUpdate Delete Read Search
Nuispec
Magic that makes the uispecs for the UI layer from the config.
CSPi-Services XXXStorage
AutocreateJSON
UpdateJSON
DeleteJSON
GetPathsJSON
Everything else is mostly to do with caching, mini records and differences between the structure of XML that the service layer sends us for different data type
MiniRecords are summary records created (hopefully) only from the subset of data pulled when retrieving lists of data from the service layer. This should be enough data to populate RH columns and Search results.
The app layer internally talks to itself with JSON(hence why all the functions have JSON in the name)