Odoo is a multitenant, three-tier architecture: application tier for processing, presentation tier for user interface and database tier for data storage. The applying tier itself is written as a core, multiple further modules may be put in to make a selected configuration of Odoo architecture.
The core of Odoo architecture and its modules are written in Python. The practicality of a module is exposed through XML-RPC (and/or NET-RPC betting on the server’s configuration). Modules generally build use of Odoo’s ORM to persist their knowledge during an electronic information service (PostgreSQL). Modules will insert knowledge within the information throughout installation by providing XML, CSV, or YML files.
At Oodles ERP, we provide Odoo integration services using APIs to extend the functionalities of the existing ERP system. Our developers have more than 6 years of experience in implementing and customizing Odoo solutions to fulfill the unique requirements of businesses.
The Odoo server
Odoo provides an Associate in Nursing application server on that specific business applications may be engineered. it’s conjointly a whole development framework, providing a variety of options to write down those applications. The salient options are a versatile ORM, Associate in Nursing MVC design, protractile knowledge models and views, completely different report engines, all tied along during a coherent, network-accessible framework.
a) Server-side Programming Language: Python three
c) Markup Language: HTML5
d) Character Encoding: UTF-8
e) Image File Formats: PNG, JPEG, GIF, SVG
f) Site Elements: External CSS, Embedded CSS, Inline CSS, Session Cookies, protocol solely Cookies, Non-HttpOnly Cookies, Non-Secure Cookies, Gzip Compression, Default protocol https.
g) Traffic Analysis Tool: Google Analytics
h) Database: PostgreSQL information
Clients will communicate with Associate in Nursing Odoo server victimization XML-RPC. A custom, quicker protocol referred to as NET-RPC is additionally provided however can shortly disappear, replaced by JSON-RPC. XML-RPC, as JSON-RPC within the future, makes it attainable to write down purchasers for Odoo during a kind of programming language. Odoo S.A. develops 2 completely different consumers: a desktop client, written with the wide used GTK+ graphical toolkit, and an online consumer that ought to run in any fashionable applications program.
Relational database server and ORM
The data tier of Odoo Architecture is provided by a PostgreSQL electronic information service.
The ORM is one in all the salient options mentioned on top of it. the info models are represented in Python and Odoo creates the underlying information tables. All the advantages of RDBMS (unique constraints, relative integrity, economical querying, …) are used once attainable and completed by Python flexibility. for example, impulsive constraints written in Python may be added to any model.
To outline knowledge models and otherwise pursue any work with the associated knowledge, Odoo as several ORMs uses the conception of ‘model’. A model is an Associate in Nursing authoritative specification of however some knowledge is structured, affected, and manipulated. I observe a model is written as a Python category. the category encapsulates something there’s to understand concerning the model: the various fields composing the model, default values to be used once making new records, constraints, and so on. It conjointly holds the dynamic side of the info it controls: strategies on the category may be written to implement any business wants (for instance, what to try to upon user action, or upon progress transitions).
There are 2 completely different models. One is solely referred to as ‘model’, and also the second is termed ‘transient model’. the 2 models give an equivalent capability with one difference: transient models are mechanically cleared from the information (they may be cleansed once some limit on the number of records is reached, or once they are untouched for a few times).
Odoo architecture supports a standard approach each from a development perspective and a preparation purpose of reading. In essence, a module teams everything associated with one concern in one purposeful entity. it’s comprised of models, views, workflows, and wizards.
Services and WSGI:
Everything in Odoo architecture and model strategies, especially, are exposed via the network and a security layer. Access to the info model is, in fact, a ‘service’ and it’s attainable to show new services. for example, a WebDAV service Associate in Nursing an FTP service is offered.
The access to the models makes conjointly use of the WSGI stack. this could be done victimization the XML-RPC protocol, and JSON-RPC is going to be added presently.
Server – Base distribution:
We use a distributed communication mechanism within the Odoo server. Our engine supports most typically distributed patterns: request/reply, publish/subscribe, monitoring, triggers/callback, …
Different business objects may be in numerous computers or equivalent objects may be on multiple computers to perform load-balancing.
Server – Object relative Mapping (ORM):
This layer provides further object practicality on prime of PostgreSQL
* Consistency: powerful validity checks,
* Work with objects (methods, references, …)
* Row-level security (per user/group/role)
* Complex actions on a bunch of resources
Server – Web-Services:
The web-service module offers a standard interface for all web-services
Server – progress Engine:
Workflows are graphs portrayed by business objects that describe the dynamics of the corporate. Workflows are accustomed to tracking processes that evolve over time.
Server – Report Engine:
Reports in Odoo architecture may be rendered in numerous ways:
Those reports may be directly created via the consumer interface, no programming needed. Those reports are portrayed by business objects (ir.report.custom)
High-quality personalized reports victimization open report: no programming needed however you’ve got to write down two tiny XML files:
a model that indicates the info you intend to report
a) XSL: RML stylesheet
b) Hardcoded reports
c) Nearly all reports are created in PDF with the employment of wkhtmltopdf.
Client – Wizards:
Wizards are graphs of actions/windows that the user will perform throughout a session.
Client – Widgets:
All common widgets are supported:
entries, textboxes, floating purpose numbers, dates (with calendar), checkboxes.
And conjointly all special widgets:
* Buttons that decision actions
* References widgets
* One2many in list
Rules of thumb
Activate a multi-worker to use your fancy hardware!
How many workers processes? 1 per CPU core, x2 for recycling
Min = 6
(typical browser keepalive pool size)
Worker soft memory limit
RAM = 24GB
= 24 workers
Soft limit = 1GB
How many requests/second? ~ 6-7 x Workers e.g. 24 workers = 160 r/s
How many users? ~ 5-10 per Worker
e.g. 24 active workers = 180 users
Odoo is a popular open-source ERP platform that enables businesses to streamline and automate their day-to-day tasks. Apart from its basic modules like accounting, point of sale, inventory, warehouse management, customer relationship management, and human resource, Odoo architecture has 14,000+ third-party apps/plugins available in its app store. Each plugin/app can be customized as per the user requirements.
Apart from its basic modules, Odoo has more than 14,000 third party Apps/Plugins available in its app store. Each of them is custom-built for different user needs. Today, Odoo is one of the widely used open-source ERP solutions in the market.
Get in touch with our ERP team to schedule a discussion!