Kiến trúc tổng quan về Odoo – ERP

17/02/2023 - lượt xem
Chia sẻ
 
4.5/5 - (22 bình chọn)

Bạn đang cần tìm hiểu về 1 ERP đầy đủ tính năng, mã nguồn mở, dễ tiếp cận… chính xác điều bạn cần là Odoo ERP. Odoo là phần mềm khá nổi tiếng trong những năm gần đây bởi những hiệu quả nó mang lại. Trong seri bài viết này chúng ta sẽ cùng nhau tìm hiểu về ERP Odoo. Các kiến thức được chia sẻ là kiến thức dành cho lập trình viên, nếu bạn không phải lập trình viên, hi vọng nó cũng giúp được bạn 1 phần nào đó.

Cũng tương tự như những bài viết trước đây. CodeTuTam đang cần tìm hiểu về Odoo ERP để phục vụ công việc. Và seri bài viết này cũng như một tổng hợp lại các kiến thức trong quá trình học và làm. Chính vì vậy, bài viết không tránh khỏi sai sót hay nhầm lẫn. Hi vọng các bạn xem, ủng hộ cũng như góp ý cho CodeTuTam.

Bài viết đầu tiên chúng ta sẽ cùng nhau tìm hiểu về Kiến trúc tổng quan của Odoo.

Multitier Application – ứng dụng đa tầng

Odoo được phát triển theo mô hình kiến trúc đa tầng, nghĩa là có các tầng: tầng giao diện, xử lý logic và lưu trữ dữ liệu. Các tầng này được tổ chức riêng rẽ, tách biệt. Cụ thể hơn Odoo sử dụng kiến trúc 3 tầng.

Odoo sử dụng mô hình 3 lớp
Odoo sử dụng mô hình 3 lớp

Tầng giao diện là kết hợp của HTML5, Javascript và Css. Tầng logic được viết bởi Python, trong khi tầng dữ liệu chỉ hỗ trợ PostgreSQL – cơ sở dữ liệu quan hệ.

Dựa vào phạm vi yêu cầu module của bạn, Phát triển Odoo có thể hoàn thành trong bất kì tầng nào. Có thể xem thêm hướng dẫn về python tại: https://docs.python.org/3.7/tutorial/

Chú ý:

Từ Odoo 15, Odoo đang nỗ lực chueyern đổi sang OWL Framework như là 1 phần của tầng giao diện. Framework javascript cũ vẫn sẽ được hỗ trợ trước khi ngừng hỗ trợ trong tương lai. OWL Framework cũng giống như Vue hay React, tuy nhiên đội ngũ phát triển của Odoo cũng đưa ra những lý do họ không sử dụng các framework có sẵn mà phải phát triển lại trên Github.

Odoo modules

Cả extension server và client đều được đóng gói dưới dạng module và tùy chọn tải từ trong database. Một Module là tập hợp function và dữ liệu để xử lý một mục tiêu nhất định

Các module odoo có thể thêm logic nghiệp vụ hoàn toàn mới vào hệ thống Odoo hoặc thay đổi, mở roognj phần logic nghiệp vụ đã có. Một module có thể tạo thêm các quy tắc kế toán cho quốc gia của bạn vào phần hỗ trợ kế toán chung của Odoo, trong khi 1 module khác có thể thêm hỗ trợ phần trực quan hóa đội xe theo thời gian thực

Hãy nhớ rằng, mọi thứ trong Odoo bắt đầu và kết thúc đều với module.

Ghi chú về khái niệm Apps

Các dev nhóm các tính năng nghiệp vụ trong các module Odoo. Các module chính hướng tới người dùng được gắn cờ và hiển thị dưới dạng ứng dụng (Apps), nhưng phần lớn các module không phải ứng dụng. Module có thể được gọi là addons và thư mục mà Odoo server chứ các addons này là addons_path.

Composition of a module – Thành phần 1 module

Một module odoo có thể chứa một số thành phần như sau:

Business objects – https://www.odoo.com/documentation/16.0/developer/reference/backend/orm.html#reference-orm

Một Business Object (ví dụ 1 invoice) được khai báo là 1 class Python. Các trường định nghĩa trong class tự động map với các column trong database (nhờ có lớp ORM)

Object views

Định nghĩa giao diện hiển thị

Data files

File XML hoặc CSV  khai báo dữ liệu model:

Web controllers

Tiếp nhận xử lý các request từ trình duyệt web

Static web data

Hình ảnh, css, javscript được sử dụng cho giao diện hay website

Không có yếu tố nào trong này là bắt buộc. Một số module chỉ có thể thêm các tệp dữ liệu (ví dụ cấu hình kế toán cho các quốc gia cụ thể), trong khi những module khác chỉ thêm các đối tượng business (nghiệp vụ)

Cấu trúc module

Mỗi module là 1 thư mục trong thư mục module (module directory). Các thư mục module được khai báo thông qua option –addons-path.

Một module được khai báo bởi manifest,

Khi 1 module chứa các đối tượng nghiệp vụ (business) (ví dụ các file python), chúng sẽ được tổ chức như là Python Package với file __init__.py. File này chứa các chỉ dẫn import

Ví dụ về thư mục module

module
├── models
│   ├── *.py
│   └── __init__.py
├── data
│   └── *.xml
├── __init__.py
└── __manifest__.py

Odoo Editions

Odoo có 2 phiên bản là Enterprise và Community. Phiên bản enterprise có thêm các dịch vụ về hỗ trợ và nâng cấp, ngoài ra có thêm các tính năng cao cấp hơn – khía cạnh nào đó thì là các tính năng mở rộng so với bản Community.

Đối với các dự án mà bản thân CodeTuTam hay ở VN sử dụng thường sẽ làm việc với bản Community. Các bài viết trong seri về Odoo này dựa trên kiến thức cung cấp trên trang Document của Odoo phiên bản 16, cùng với đó kinh nghiệm, trải nghiệm của CodeTuTam trong quá trình học và làm.

Hi vọng với nội dung tổng hợp trên đây các bạn hiểu được phần nào cơ bản về Kiến trúc của Odoo. Điều này sẽ giúp bạn dễ dàng hơn trong quá trình tiếp cận với lập trình Odoo. Điều này có ý nghĩa vô cùng lớn đặc biệt với những người ngoại đạo về Python nói chung và Odoo nói riêng như CodeTuTam

 

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    4.5/5 - (22 bình chọn)

    Xem thêm nhiều bài tin mới nhất về Odoo

    Xem thêm