Sistem Sumber Daya
Sistem sumber daya adalah salah satu konsep arsitektur paling penting di Chamilo 2.0. Sistem ini menyediakan abstraksi terpadu untuk semua konten kursus — dokumen, latihan, jalur pembelajaran, posting di forum, dan banyak lagi.
Konsep Inti
Setiap bagian dari konten kursus diwakili oleh sebuah ResourceNode. Ini memberikan serangkaian kemampuan umum untuk semua jenis konten:
Kontrol visibilitas — Tampilkan/sembunyikan untuk siswa
Kontrol akses — Pemilih keamanan memeriksa izin melalui ResourceNode
Penyimpanan berkas — Berkas yang dilampirkan disimpan melalui ResourceFile
Struktur pohon — ResourceNodes membentuk pohon (hubungan induk-anak)
Jejak audit — Pencipta, tanggal pembuatan, pelacakan modifikasi
Entitas Utama
ResourceNode (src/CoreBundle/Entity/ResourceNode.php)
src/CoreBundle/Entity/ResourceNode.php)Entitas pusat. Setiap entitas konten memiliki hubungan satu-ke-satu dengan sebuah ResourceNode.
Kolom utama:
id
integer
Kunci utama
uuid
UUID v4
Pengenal unik untuk penggunaan di API
title
string
Judul yang ditampilkan
creator
User
Pengguna yang membuat sumber daya ini
resourceFile
ResourceFile
Berkas yang dilampirkan (jika ada)
resourceType
ResourceType
Jenis sumber daya (dokumen, kuis, dll.)
parent
ResourceNode
Induk dalam pohon sumber daya
children
Collection
ResourceNodes anak
resourceLinks
Collection
Tautan visibilitas dan akses
Pohon ini menggunakan strategi materialized path dari Gedmo untuk kueri hierarkis yang efisien.
ResourceFile (src/CoreBundle/Entity/ResourceFile.php)
src/CoreBundle/Entity/ResourceFile.php)Menyimpan data berkas aktual untuk sebuah sumber daya:
id
integer
Kunci utama
title
string
Nama asli berkas
mimeType
string
Tipe MIME
originalName
string
Nama asli saat diunggah
size
integer
Ukuran berkas dalam byte
crop
string
Data pemotongan (untuk gambar)
Penyimpanan berkas dikelola oleh Flysystem, memungkinkan berkas disimpan di disk lokal, S3, Azure, atau GCS, tergantung pada konfigurasi.
ResourceLink
Mengontrol visibilitas dan akses berdasarkan konteks. Ada 3 jenis konteks utama:
Kursus
Sesi
Grup (dalam sebuah kursus)
Dengan demikian, entitas ResourceLink mencerminkan kombinasi dari ketiga jenis konteks ini dan menetapkan visibilitas untuk konteks lengkap tersebut:
course
Course
Kursus mana yang menjadi milik sumber daya ini
session
Session
Sesi mana (kosong untuk kursus dasar)
group
CGroup
Grup mana (kosong untuk seluruh kursus)
visibility
integer
Terlihat, tidak terlihat, atau dihapus
Ini memungkinkan ResourceNode yang sama memiliki visibilitas berbeda di konteks yang berbeda (misalnya, terlihat di satu sesi, tetapi disembunyikan di sesi lain).
Ini ditetapkan secara otomatis saat menggunakan antarmuka dan memutuskan, misalnya, bahwa sebuah sumber daya khusus untuk sebuah sesi, menjadi terlihat untuk semua grup dalam kursus tertentu pada sesi tertentu, tetapi tidak terlihat di kursus dasar atau sesi lain.
Secara default, sumber daya yang terlihat di kursus dasar juga terlihat di semua sesi kursus tersebut, tetapi tutor kursus dapat memutuskan untuk menyembunyikan sumber daya dari sesi tertentu. Dalam kasus ini, kami akan mengambil visibilitas spesifik untuk sumber daya tersebut di sesi ini dan melihat bahwa visibilitasnya adalah 0, sehingga item tersebut tidak akan muncul untuk siswa di sesi ini, sementara kurangnya visibilitas spesifik sesi di sesi lain akan membuat sumber daya menggunakan visibilitas kursus dasar (dan sumber daya akan ditampilkan untuk siswa).
Integrasi dengan API Platform
ResourceNode diekspos sebagai sumber daya API Platform dengan keamanan:
Bagaimana Entitas Konten Terhubung
Entitas konten kursus (CDocument, CQuiz, CLp, dll.) memperluas AbstractResource atau mengimplementasikan ResourceInterface, yang memberikan mereka hubungan resourceNode:
Ketika Anda membuat sebuah CDocument, sebuah ResourceNode secara otomatis dibuat bersamanya, memberikan pengelolaan sumber daya yang terpadu.
Implikasi Praktis
Saat bekerja dengan konten kursus:
Pembuatan konten — Buat baik entitas konten maupun ResourceNode-nya
Pemeriksaan izin — Gunakan pemilih keamanan dari ResourceNode
Pengelolaan berkas — Lampirkan berkas melalui ResourceFile
Kontrol visibilitas — Buat/modifikasi ResourceLinks
Pembangunan struktur pohon — Gunakan hubungan induk-anak di ResourceNode untuk struktur folder (misalnya, folder dokumen)
Terakhir diperbarui
Apakah ini membantu?