Standards, best practices and how-tos for developing OutSystems applications
Reusable services around business concepts, exporting entities, business rules and web-blocks
Layer | SubLayer | Suffix | Description | Example |
---|---|---|---|---|
Core Modules | API | _API | Wrapper that expose an API for External consumers (REST/SOAP) to the OutSystems platform, supporting multiple versions. | Pricing_API |
_OAPI | Wrapper that exposes an API for internal consumers(Service Actions) (OutSystem API) to Internal Consumers, keeping core services system agnostic and supporting multiple versions of the API | Pricing_OAPI | ||
Core Widgets | _CW,_MCW | Isolated Core Widgets (Blocks), to manage complexity, composition or to have its own lifecycle | Customer_CW | |
Composite logic | _BL, MBL | Isolated Business Logic (Actions) to manage complexity, composition or to have its own lifecycle | Pricing_BL | |
_Eng | A BL becomes a Calculation Engine if it performs complex calculations, (e.g. an invoice calculation engine or an insurance simulator). Engines are usually subject to versions | Pricing_Eng | ||
_Sync | Logic to Synchronize data in CSs with an external system. Isolating this logic makes the CS completely system agnostic and it’s easier to decouple or replace the external system | Field_Sync | ||
Core Services | _CS,_MCS | Reusable Core Services with public entities, actions and web blocks | Customer_CS, Field_CS, SupplierAudit_CS, StoreAudit_CS |
Note: An “M” indicates a Mobile only module, like _MCS, _MBL or _MCW
Non Functional requirements or integration modules, reusable in any business context
Sub-layer | Prefix | Description | Example |
---|---|---|---|
Style guide | _Pat,_MPat | Reusable UI Patterns for layout and display only - no Business logic | UserExtension_Pat, Backoffice_Pat |
_Th | Theme, look & feel elements, menu, … | Internal_Th, Supplier_Th, Backoffice_Th | |
Template_ | Theme templates | Template_Backoffice, Template_Internal | |
Foundation Services | _IS | Integration Services - technical wrapper to consume and normalize an external service | SoccerField_IS |
_FS | Foundations Services to support NFR’s (e.g. Audit trailing) | ||
_Drv | Driver module - to have several integration services with different systems, performing the same type of operation (e.g. printers) you can create several drivers exposing the same API, with specialized implementations (like the transparency services pattern) | ||
_Lib | A generic module of type Library | CipherUtils_Lib |
An “M” indicates a Mobile only module, like _MPat,
Type | Name | Acronym |
---|---|---|
Domain | Soccer Fields | SF |
Application | SF Soccer Fields App | SF |
Application | SF Field Core Services | FLC |
Application | SF Soccer Fields Core | SFC |
Module | SoccerFields | |
Module | SF_Th | |
Module | SFC_Booking_CS | |
Module | SFC_Player_CS | |
Module | FLC_Field_CS | |
Module | FLC_Field_IS | |
Module | FLC_Field_Sync |
Review the following OutSystems documentation on module types: