The A12 architecture puts a strong emphasis on simplifying client-side application development. It features a pre-configured build setup, engines for working with models and widgets for reusable UI components.
Standards where possible – Individual solutions where necessary
All parts of A12 – BAP Client, Engines, Widgets, and Plasma– are designed for extensibility and customizability. A12 aims at providing stable solutions for recurring problems while allowing for individual application-specific additions where necessary:
- Application-specific UI parts can use Plasma directly
- Application-specific components can coexist and interact with Widgets and Engines on the same screen
Plasma, Widgets and Engines provide structures and conventions, which can be used and applied to project-specific components and code.
The BAP core and extensions (blue boxes in Fig 1) provide all means to develop applications. The core is central for a working application and extends Redux with some useful abstractions:
- The application model specifies UI interactions, menus, routing and UI component resolution. It can be defined in a UI tool editor.
- Activities as an abstraction for units of work in the client. Activities can depend on each other but also run in parallel. This abstraction provides the foundation for master/detail, multitasking etc.
- Application frame and a flexible UI architecture around layouts, regions and views. Regions can be nested and use a layout to show its sub-regions and views. Engines, widgets and any UI containers are rendered in the views. The UI can is driven by the application model based on which activities are currently running. Activities drive views.
- The Data Hub is responsible for loading data for the activities, like a data document to edit in a form, or the list of search results in a list view. It is completely decoupled from the UI and runs in the background. Actual data loading/saving is delegated to registered data loader components.
The BAP core supports modularization (bottom-up construction of an app made of modules).
The BAP client extensions is a collection of features that extend the core functionality, including dirty handling, showing static pages (like FAQ, help), deep linking, notifications, the connector for the A12 services, fully automated presentation of lists, forms, and relationships between data documents including loading, validation and saving.