We will go through:
- Frameset structure
- Page structure
- Main communication protocol between browser and server
- Business logic architecture
- Acumatica ORM architecture.
Acumatica is based on ASP.NET technology, so the main thing under main page is Frameset
Green part is customizable using sitemap, localization, access rights and some settings.
Orange part is customizable using Customization Manager, access rights, localization, and many different settings.. Also you can develop new pages using Acumatica Framework.
Welcome tho this article, if you want to see more!
Basic Acumatica Page consists of:
- Page Title with menu
- Data source with actions
- Status Bar
Client-Server CommunicationsWhen you use browser, UI sends and receives information from server part. Acumatica has its own data communication protocol what is based on Callbacks.
- All UI controls (forms, grids, fields) are mapped to server controls (PXFormView, PXGrid, PXSelector)
- For all pages system will do several requests. First request for getting HTML, second for sending data.
- Scripts are cached in the frameset, so they are the same for all pages.
- During callbacks system sends just XML with data, states and other information.
- There is not any events here except Get and Post commands.
- System will not trigger callbacks every-time, just if it is designed by developer (CommitChanges=true)
- All synchronization can be done only from client, there is no way to refresh UI form server side.
Business Logic Level ArchitectureOn server side all pages are connected to Business Logic Container (BLC, Graph) through the datasource. All container controls (forms, grids, tabs) are linked to Data Views by datamember property.
BLC contains all business logic code and the relations between tables.
Dataviews maintains changes, selects data from the database and triggers business logic.
Container controls triggers business logic through Insert/Update/Delete/Select methods.
Here you can find the flow how UI triggers server event sequences.
Data Access Level Architecture
Data members are connected to database through Data Access Classes (DAC) by name. DACs are specified within BQL statements.