Auto Folder Creation (Document Library)
Modul: DMS Reference, Auto Folder Creation. Ia menentukan di mana auto-publish Document Routing mengarsipkan salinan yang sudah direview. Mati secara default.
Cara halaman ini diverifikasi
Ditelusuri di Medco pada Juni 2026. Pada 2026-09-06 layar admin, daftar tipe referensi, flag gating dan fungsi saat publish diperiksa ulang di master dan big five.
Ringkasan
Auto Folder Creation membiarkan admin menentukan, per project, struktur subfolder Document Library bersarang tempat dokumen yang sudah direview diarsipkan otomatis saat dipublikasikan pada sign-off approver. Admin memilih daftar terurut tipe referensi metadata dokumen (Area, Discipline, Document Type, dan seterusnya). Itu menjadi level folder, dan setiap dokumen yang dipublikasikan mengarsipkan dirinya ke cabang yang cocok dengan metadatanya sendiri.
Ia menggantikan pendekatan hard-coded yang lama, di mana hierarki folder adalah salah satu dari tiga bentuk tetap yang ditentukan satu integer, ts_projects.project_east_java (Ophir / East Java / Medco), diterapkan saat upload oleh getLibCodeAutoGenerateFromDocMaster(). Strukturnya sekarang ditentukan data dan bisa diedit per project, dan pengarsipan pindah ke auto-publish routing. Lihat Upload, folder library dan Sign Off.
Hanya master, Jadestone dan Medco yang punya
JOTRE dan Timas tidak punya layar admin, tidak punya key autopublish_auto_folder_creation, dan tidak punya getProjectAutoFolderSettings(). Mereka masih punya flag subfolder kustom generik, jadi pohon default dari subfolder_custom_default adalah satu-satunya yang bisa mereka bangun.
Yang dikonfigurasi admin
Di DMS Reference, Auto Folder Creation (autopublish_auto_folder_creation.php), per project, admin memilih dan mengurutkan subset apa pun dari tipe referensi di $referencesCode. Daftarnya berbeda per fork:
| Kode tersimpan | Label | Master | Jadestone | Medco |
|---|---|---|---|---|
areanumber | Area Code | ya | ya | ya |
discipline | Discipline Code | ya | ya | ya |
doctype | Document Type Code | ya | ya | ya |
doccat | Document Category Code | ya | ya | ya |
function_code | Function Code | ya | ya | ya |
doc_classification | Classification Code | ya | ya | ya |
field_code, group_code, contract_no | Referensi khusus Jadestone | — | ya | — |
business_unit, region, location, system_code, vendor_package, code_package_identifier, sdrl_code, drawing_category, originator | Himpunan tambahan Medco | — | — | ya |
Daftar yang dipilih, sesuai urutan, adalah pohon folder. Misalnya ["areanumber", "discipline", "doctype"] mengarsipkan dokumen ke .../<Area>/<Discipline>/<Doc Type>/.
Aksi di layar:
- Load setting project saat ini (
cmd=get_settings). - Save daftar referensi yang dipilih (
act=save_settingsmenulists_auto_creation_folder_settings.settings_datasebagai array JSON). - Copy dari project lain (
act=copyAutoFolderSetting). - Project tanpa baris mendapat default
['discipline'].
Penyimpanan dan seeding
Tabel
ts_auto_creation_folder_settings, satu baris per project:project_id,settings_data(array JSON kode tipe referensi).Hanya Medco: skrip sekali jalan,
migrations/scripts/MIG-013_ts_auto_creation_folder_settings.php, mengisi setiap project dari nilaiproject_east_javalegacy-nya supaya tidak ada yang berubah sampai admin mengeditnya:project_east_javalegacysettings_datahasil seed0(Ophir)areanumber, originator, discipline, doctype, system_code, drawing_category1(East Java)areanumber, discipline2(Medco)business_unit, region, areanumber, discipline, doctype, location, system_code, vendor_package, code_package_identifier, sdrl_codeIdempoten (TRUNCATE plus insert); project dengan
project_east_javaNULL atau di luar rentang dilewati untuk diatur admin secara manual. Master dan Jadestone tidak punya seed seperti itu; project mereka mulai dari default['discipline'].
Cara berjalannya, saat auto-publish
Struktur diterapkan saat sign-off approver memublikasikan salinan yang sudah direview, bukan saat upload, di dalam autoPublishDocumentToCustomSubfoler() di routing.inc.php. Fungsinya ada di kelima fork. Di master urutan pemeriksaannya:
- Arsipkan dokumen ke folder root Deliverables project (
getLibCodeDeliverablesByProjectCode()). - Hanya kalau
enable_autocreation_subfolder_custom = '1'ia membangun subfolder bersarang. Ia mulai dari pohon default,DOCLIB_SUBFOLDER[subfolder_custom_default].tree, dan, kalauautopublish_auto_folder_creation = '1', menimpanya dengan pohon per project darigetProjectAutoFolderSettings($projectId, true)["tree"]. - Untuk setiap tipe referensi di pohon, ia menyelesaikan nilai dokumen (
label_combined_code_desc) dan mencari atau membuat subfolder itu. Level yang flag referensi DMS-nya (enable_*) mati dilewati.originatortidak punya flagenable_*dan selalu disertakan di posisinya di daftar. - Kalau nilai level wajib mana pun kosong, ia membatalkan penempatan subfolder (
validToSetInSubFolder = false) dan dokumen tetap di root Deliverables. - Kalau
library_folder_access_default = '1', ia juga memberikan akses folder ke resource group project.
Flag config yang menjadi ketergantungannya
| Flag | Peran | Ada di seed |
|---|---|---|
autopublish_auto_folder_creation | Saklar utama fitur ini: pakai pohon per project, kalau tidak pakai pohon default. Default 0. | master, Jadestone, Medco |
enable_autocreation_subfolder_custom | Harus 1 supaya subfolder kustom apa pun dibangun sama sekali. Default 0. | kelima fork |
subfolder_custom_default | Menamai pohon cadangan yang dipakai saat fitur per project mati. | kelima fork |
library_folder_access_default | Memberi akses folder otomatis ke resource group. | kelima fork |
enable_* DMS (misalnya enable_discipline) | Level pohon dilewati kalau flag referensinya mati. | per fork, lihat inweb_config |
Kedua saklar harus menyala
autopublish_auto_folder_creation sendirian tidak berbuat apa-apa kecuali enable_autocreation_subfolder_custom juga 1. Pohon per project hanya dibaca di dalam cabang subfolder kustom. Keduanya default 0, jadi fitur ini mati sejak awal.
Tabel database yang terpengaruh
| Tabel | Operasi | Catatan |
|---|---|---|
ts_auto_creation_folder_settings | insert / update / delete | pohon per project (layar admin) |
ts_doc_library | insert / select | cari atau buat setiap subfolder saat publish |
ts_map_documents_library | insert | memetakan dokumen yang dipublikasikan ke folder daunnya |
ts_projects | select | project_east_java, hanya seed Medco |
Hal yang perlu diwaspadai
- Mati secara default dan dijaga dua lapis. Mudah dikira rusak padahal hanya belum diaktifkan.
- Medco masih menyimpan jalur legacy juga.
getLibCodeAutoGenerateFromDocMaster()(project_east_java) masih ada dan dipanggil diactMultipleProcessNew()Medco. Fork lain sudah tidak punya fungsi itu. Pastikan mana yang mengatur pengarsipan di build Medco. - Diam-diam kembali ke root Deliverables saat nilai level pohon mana pun kosong di dokumen. Tanpa error; dokumennya hanya tidak bersarang.
- Berlaku saat publish, bukan upload. Dokumen yang baru diunggah dan belum disetujui ada di folder Deliverables sampai salinan
_Ryang sudah direview dipublikasikan.
Perbedaan antar instance
Diperiksa pada 2026-09-06.
| Instance | Perbedaan |
|---|---|
| Jadestone | Daftar referensi menambah field_code, group_code dan contract_no. |
| Medco | Daftar referensi punya 15 entri. Skrip seed project_east_java legacy dan fungsi pengarsipan legacy sama-sama ada. |
| JOTRE | Tidak ada layar admin, tidak ada key autopublish_auto_folder_creation, tidak ada getProjectAutoFolderSettings(). Hanya pohon default. |
| Timas | Sama dengan JOTRE. |
Terkait
- Upload hanya mengarsipkan ke folder Deliverables.
- Sign Off adalah langkah auto-publish yang memicu pembuatan folder.
- inweb_config mencantumkan flag-flag di atas.