Arsitektur Odoo didasarkan pada pola Model-View-Controller (MVC) yang memungkinkan pengembangan aplikasi berbasis web yang modular, terstruktur, dan mudah diperluas. Berikut adalah gambaran umum komponen utama dalam arsitektur Odoo:
1. Model
Model di Odoo mewakili data dan logika bisnis aplikasi. Biasanya, model ini dikaitkan dengan tabel-tabel dalam database dan berfungsi untuk mengelola interaksi dengan data tersebut. Di dalam Odoo, model didefinisikan sebagai kelas Python yang diturunkan dari models.Model. Kelas ini menangani penciptaan, pembaruan, penghapusan, dan pengambilan data.
Fitur penting dalam model adalah:
- Fields: Kolom-kolom dalam tabel yang menyimpan data, seperti Char, Integer, Float, Boolean, dll.
- Methods: Fungsi-fungsi Python yang mengatur logika bisnis dan manipulasi data.
2. View
View di Odoo mengatur tampilan antarmuka pengguna (UI) dan cara data disajikan kepada pengguna. Ada berbagai jenis tampilan (view) di Odoo:
- Form View: Digunakan untuk menampilkan satu record dalam bentuk formulir yang bisa diisi atau diperbarui.
- Tree View: Digunakan untuk menampilkan data dalam format daftar atau tabel.
- Kanban View: Digunakan untuk menampilkan data dalam format kartu yang bisa dipindah-pindah antar status atau kategori.
- Calendar View: Digunakan untuk menampilkan data dalam format kalender.
- Graph View: Digunakan untuk menampilkan data dalam format grafik.
View di Odoo didefinisikan menggunakan XML. Setiap view menghubungkan model dengan tampilan yang akan dilihat oleh pengguna.
3. Controller
Controller bertanggung jawab untuk menangani permintaan dari pengguna dan memberikan respons yang sesuai. Dalam Odoo, controller biasanya digunakan untuk menangani permintaan HTTP dan memberikan respons dalam bentuk tampilan (view). Controller berfungsi sebagai jembatan antara model dan view, menangani logika untuk menerima data dari pengguna dan mengembalikannya dalam format yang sesuai.
Di Odoo, controller ditangani melalui file Python dengan menggunakan dekorator seperti @http.route untuk menghubungkan URL dengan fungsi controller tertentu.
4. Security
Odoo memiliki sistem keamanan yang sangat terintegrasi dengan model dan tampilan. Keamanan di Odoo mencakup pengaturan akses ke data dan operasi yang bisa dilakukan oleh pengguna berdasarkan peran mereka. Keamanan ditangani menggunakan aturan akses (Access Control List, ACL) dan aturan record (Record Rules).
- Access Control Lists (ACLs): Mengatur siapa yang dapat membaca, menulis, atau menghapus data berdasarkan grup pengguna.
- Record Rules: Menentukan akses tingkat lebih lanjut, seperti mengizinkan pengguna hanya mengakses data yang terkait dengan mereka (misalnya, hanya dapat melihat tugas mereka sendiri).
5. Workflow
Odoo menyediakan sistem workflow untuk menangani alur proses bisnis, seperti validasi data, pengalihan tugas, dan pemberian izin. Workflow di Odoo bisa dikelola melalui otomatisasi seperti Automated Actions atau Server Actions untuk memastikan bahwa data dan proses bisnis diatur dengan benar sepanjang siklus hidupnya.
6. Module
Odoo dibangun sebagai sistem berbasis modul. Setiap fitur atau aplikasi di Odoo disusun dalam bentuk modul yang terpisah. Sebagai contoh, Odoo memiliki modul untuk Penjualan (Sales), Pembelian (Purchase), Manufaktur (Manufacturing), Keuangan (Accounting), dan banyak lainnya.
Modul-modul ini dapat diinstal, diperbarui, atau dihapus secara terpisah tanpa mengganggu sistem utama. Modifikasi atau penyesuaian fungsi biasanya dilakukan dengan membuat modul baru atau menyesuaikan modul yang ada.
7. Database
Odoo menggunakan sistem manajemen basis data relasional (RDBMS) seperti PostgreSQL untuk menyimpan data. Semua data aplikasi, termasuk model, tampilan, dan pengaturan, disimpan dalam basis data ini. Setiap pengguna atau organisasi memiliki basis data terpisah di Odoo.
8. Assets dan Static Files
Odoo juga mengelola berkas statis seperti CSS, JavaScript, dan gambar, yang digunakan dalam tampilan aplikasi. Berkas-berkas ini disimpan di dalam modul dan disajikan secara efisien untuk mendukung performa UI.
9. Reporting
Odoo mendukung pembuatan laporan dengan berbagai format, seperti PDF, Excel, atau grafik. Sistem pelaporan ini terintegrasi langsung dengan model data dan memungkinkan pengguna untuk mengonfigurasi laporan kustom sesuai kebutuhan mereka.
Diagram Arsitektur Odoo
pgsql
CopyEdit
+-----------------+ | Web UI | +-----------------+ | v +-----------------+ +---------------------+ | Controller | <-- | HTTP Requests | +-----------------+ +---------------------+ | v +-----------------+ | Model | +-----------------+ | v +-----------------+ | Database | +-----------------+
Dalam arsitektur ini, pengguna berinteraksi dengan Odoo melalui antarmuka web (UI). Permintaan pengguna diteruskan ke controller, yang kemudian mengakses model untuk mendapatkan atau mengubah data di dalam database. Setelah data diproses, hasilnya ditampilkan kembali kepada pengguna melalui view.
Odoo memiliki struktur modular yang sangat fleksibel, memungkinkan pengguna untuk menambahkan atau mengubah fungsionalitas tanpa mengubah sistem utama. Arsitektur ini memungkinkan pengembangan aplikasi yang cepat dan dapat disesuaikan, menjadikannya pilihan yang populer untuk bisnis dari berbagai ukuran.