Giới thiệu

File dictionary (*.dic) được sử dụng rộng rãi trong wak để khai báo cấu hình, dịch đa ngôn ngữ, thiết kế giao diện người dùng …
Nội dung file dictionary là một cấu trúc dữ liệu giống xml hay json nhưng dễ hơn cho con người để đọc hiểu và ngắn gọn hơn khi khai báo.
Hầu hết các giao diện người dùng trong wak được tạo nên bằng cách khai báo file dic.

Quy tắc cơ bản

Hầu hết file dic có phần mở rộng là .dic, một số trường hợp file cấu hình có phần mở rộng là .conf
Nội dung file dic gồm nhiều node

  • Các node chứa thông tin tên và giá trị
  • Một node có thể chứa nhiều node con

File .dic sử dụng ký tự tab (\t) và ký tự xuống dòng (\n) để xác định phạm vi của node.
Ký tự # dùng để điền ghi chú vào file dic.
Ví dụ nội dung 1 file dic


Một node bất kỳ có thể được truy xuất bằng đường dẫn đến node đó. Dấu chấm (.) là ký tự ngăn cách giữa các phần trong đường dẫn.
Ví dụ để truy xuất node TableName ở ví dụ trên, đường dẫn sẽ là Parameter.BackupSetting.1.TableName

Quy tắc đặc biệt

Khai báo giá trị động với ký tự !

Hầu hết các chức năng CRUD trên wak sẽ coi nội dung sau ký tự ! là code javascript và chạy script này.
Kết quả trả về sau khi chạy sẽ được sử dụng làm giá trị của node.
Ví dụ với khai báo

Value==!java.lang.System.currentTimeMillis() + ""

Giá trị của node sẽ là giá trị giờ hiện tại.

Khai báo giá trị cho node

Dùng dấu ==

  • Cú pháp
<Tên node>==<Nội dung>
  • Ví dụ
StartupType==2

Cách khai báo này có các yêu cầu bắt buộc sau
  • Tên node và giá trị khai báo trên cùng 1 dòng
  • Do khai báo cùng dòng nên nội dung nếu có ký tự xác định phạm vi (dấu tab và dấu xuống dòng) thì ký tự này cần được mã hóa với ký tự \
    • Ký tự tab mã hóa thành \t
    • Ký tự xuống dòng mã hóa thành \n
    • Ký tự \ khi đó sẽ mã hóa thành \\

Dùng dấu =:

  • Cú pháp
<Tên node>=:
:{
    <Nội dung>
:}
  • Ví dụ
Description=:
:{
    - Backup data
    - Truncate old data
:}

Cách khai báo này thường dùng khi khai báo nội dung node là một đoạn văn bản dài hoặc nội dung chứa nhiều ký tự đặc biệt. Khai báo cách này, nội dung node không cần đáp ứng yêu cầu về mã hóa như khi khai báo bằng dấu == . Bạn có thể khai báo nhiều dòng, dùng dấu tab và các ký tự đặc biệt.

Dùng dấu =>

Khi trong file dic cần khai nhiều nội dung trùng lặp bạn có thể khai báo nội dung trùng lặp ở một nơi và dùng ký tự => để liên kết node đến nội dung đó.

  • Cú pháp
<Tên node>==<Đường dẫn đến node đích>
  • Ví dụ
ModuleLogBackupSetting=>Parameter.BackupSetting.1

Dùng cách khai báo này, bạn thậm chí có thể liên kết đến một node ở file dic khác
  • Dùng đường dẫn file tuyệt đối
ModuleLogBackupSetting=>/com/ftl/wak/Common.dic!Parameter.BackupSetting.1
  • Dùng đường dẫn file tương đối
ModuleLogBackupSetting=>../wak/Common.dic!Parameter.BackupSetting.1

Liên kết đến một file dic khác

Đầu file dic, bạn có thể khai báo liên kết đến file dic khác bằng các cách sau

#include

Copy toàn bộ nội dung của file liên kết vào file hiện tại

  • Ví dụ
#include /resource/com/ftl/wak/CommonVN.dic

#reference

Trộn nội dung của file liên kết với file hiện tại. Ưu tiên các khai báo trong file hiện tại.

  • Ví dụ
#reference /resource/com/ftl/wak/CommonVN.dic

#reverseReference

Trộn nội dung của file liên kết với file hiện tại. Ưu tiên các khai báo trong file liên kết.

#reverseReference /resource/com/ftl/wak/CommonVN.dic

Chú ý: bạn có thể copy, trộn 1 node cụ thể trong file liên kết.
Ví dụ chỉ muốn trộn node Parameter ta có thể khai như sau
#reference /resource/com/ftl/wak/CommonVN.dic!Parameter