Logo Docs

Cogover Scripting

Cogover Scripting là ngôn ngữ lập trình dựa trên Java của Cogover, cho phép xây dựng logic tùy chỉnh và xử lý dữ liệu sử dụng các kiểu như chuỗi, số, mảng, đối tượng và ngày giờ. Với cú pháp rõ ràng và tích hợp sâu, công cụ hỗ trợ phát triển ứng dụng, báo cáo và quy trình phức tạp, tối ưu hóa tương tác với API và dịch vụ trong hệ sinh thái nền tảng quản trị doanh nghiệp hợp nhất Cogover.

Bài viết sẽ hướng dẫn người dùng sử dụng Cogover Scripting qua các nội dung:

Cú pháp Cogover Scripting cơ bản

Cú pháp cơ bản

  • Dấu chấm phẩy ; Dùng ngăn cách các câu lệnh.
  • Dấu ngoặc đơn (): Dùng để nhóm các biểu thức, truyền tham số cho hàm, hay chỉ định thứ tự thực hiện trong phép tính.
  • Dấu ngoặc nhọn {}: Dùng để tạo ra một khối lệnh điều kiện hoặc khai báo danh sách các cặp key-value.
  • Dấu ngoặc vuông []: Dùng để khai báo danh sách các phần tử (list) hoặc truy cập phần tử của list.
  • Cogover Scripting có phân biệt chữ hoa và chữ thường.

Biến và hằng số

  • Biến: Giống như "hộp chứa" lưu trữ dữ liệu như chuỗi, số, map, list… Cogover Scripting là ngôn ngữ động, tự xác định kiểu dựa trên giá trị lưu trữ, và giá trị biến có thể thay đổi sau khi khởi tạo.

    Cú pháp: var {tên biến} = {giá trị của biến};

    // Ví dụ
    var age = 25;  
    var name = "Cogover";
  • Hằng số: Hằng lưu trữ dữ liệu như biến, nhưng sau khi khởi tạo, giá trị không thể thay đổi. Tuy nhiên, nếu hằng số chứa list hay map, các phần tử bên trong vẫn có thể được thay đổi.

    Cú pháp: const {tên hằng} = {giá trị của hằng};

    // Ví dụ
    const PI = 3.14;

Quy tắt đặt tên biến/hằng

  • Chỉ được bắt đầu bằng chữ cái, dấu _ hoặc ký tự $.
  • Phân biệt chữ hoa và chữ thường (Ví dụ: Cogover khác với COGOVER).
  • Nên đặt tên có ý nghĩa, phản ánh nội dung hoặc mục đích của dữ liệu.

Các kiểu dữ liệu cơ bản

Cogover Scripting có các kiểu dữ liệu nguyên thủy sau:

  • Text: Chuỗi ký tự, giá trị được nằm trong dấu nháy kép "".
    // Ví dụ
    var name = "Cogover";
  • Number: Số, bao gồm số nguyên và số thực.
    // Ví dụ
    var age = 25;
    var price = 9.99;
  • Boolean: Giá trị luận lý, là một trong hai giá trị true (đúng) hoặc false (sai).
    // Ví dụ
    var isActive = true;
    var isDeactive = false;
  • nullundefined: Đại diện cho giá trị rỗng và chưa được gán giá trị.
    // Ví dụ
    // null:
    var value = null;
    // undefined:
    var result;
  • List: Danh sách lưu trữ các giá trị. Lưu ý, sau phần tử cuối cùng của danh sách phải kết thúc bằng dấu ... (ba chấm).
    // Ví dụ
    var numbers = [1, 2, 3, 4,...];
  • Map: Danh sách lưu trữ các cặp key-value.
    // Ví dụ
    var person = { name: "Bob", age: 30 };
  • Date: Dữ liệu là định dạng ngày.
    // Ví dụ
    var today = Date.today();
    return today;
     
    // Kết quả
    // today = 26/02/2025
  • DateRange: Dữ liệu là định dạng khoảng ngày.
    // Ví dụ
    var date1 = Date.date(2025, 2, 26);
    var date2 = Date.date(2025, 8, 26);
    var daterange = DateRange.of(date1, date2);
     
    // Kết quả
    // daterange = 26/02/2025 - 26/08/2025
  • Datetime: Dữ liệu là định dạng ngày giờ.
    // Ví dụ
    var now = Datetime.now();
    return now;
     
    // Kết quả
    // now = 26/02/2025 14:49:12
  • DatetimeRange: Dữ liệu là định dạng khoảng ngày giờ.
    // Ví dụ
    var datetime1 = Datetime.valueOfWithAccountTimeZone("27/02/2025 20:10:25", "dd/MM/yyyy HH:mm:ss");
    var datetime2 = Datetime.valueOfWithAccountTimeZone("05/03/2025 19:45:59", "dd/MM/yyyy HH:mm:ss");
    var datetimeRange = DatetimeRange.of(datetime1, datetime2);
    return datetimeRange;
     
    // Kết quả
    // datetimeRange = 27/02/2025 20:10:25 - 05/03/2025 19:45:59

Danh sách quy đổi trường dữ liệu của đối tượng ra kiểu dữ liệu Cogover Scripting

Kiểu dữ liệu Trường dữ liệu tương ứng
Text Văn bản ngắn
Văn bản dài
Nhãn
Đường dẫn liên kết URL
Email
Số điện thoại
Đánh số tự động
Biểu thức chính qui
Số điện thoại
Number Số
Phần trăm
Tiền tệ
Thời gian (Thời lượng, trả về đơn vị giây)
Boolean Boolean
Date Thời gian (Ngày)
Datetime Thời gian (Ngày giờ)
DateRange Thời gian (Ngày là khoảng thời gian)
DatetimeRange Thời gian (Ngày giờ là khoảng thời gian)
List Trường dữ liệu được cấu hình là trường nhiều giá trị
SelectList Tương tự List, là kiểu dữ liệu xử lý riêng cho 3 trường dữ liệu sau:
Lựa chọn đơn
Lựa chọn nhiều
Cây thư mục
Map Tra cứu thường
Tra cứu phụ thuộc

Toán tử

Toán tử tính toán

  • Toán tử gán =: Gán giá trị cho biến.
    // Ví dụ
    var a = 5;
  • Toán tử cộng +: Cộng các giá trị số học hoặc cộng chuỗi ký tự.
    // Ví dụ
    var sum = 5 + 3; // Kết quả sum = 8
    var text = "Hello " + "Cogover!"; // Kết quả text = "Hello Cogover!"
  • Toán tử trừ -: Cộng các giá trị số học hoặc cộng chuỗi ký tự.
    // Ví dụ
    var diff = 5 - 3; // Kết quả diff = 2
    var text = "Hello Cogover" - "Hello"; // Kết quả text = "Cogover"
  • Toán tử nhân *: Nhân các giá trị số học với nhau.
    // Ví dụ
    var multi = 2 * 5 * 10; // Kết quả multi = 100
  • Toán tử chia:
    • Chia lấy phần nguyên /: Chia giá trị số nguyên, kết quả trả về sẽ là phần nguyên của phép chia.
      // Ví dụ
      var division = 5 / 3; // Kết quả division = 1
    • Chia lấy phần dư %: Chia hai giá trị số, kết quả trả về sẽ là phần dư của phép chia.
      // Ví dụ
      var division = 5 % 3; // Kết quả division = 2
    • Chia số thực: /: Chia giá trị số thực, kết quả trả về sẽ là kết quả số thực của phép chia.
      // Ví dụ
      var division = 5.2 / 3.4; // Kết quả division = 1.52941

Toán tử so sánh

  • Toán tử so sánh bằng ==: Kiểm tra tính trùng khớp (bằng nhau) của hai giá trị, nếu có giá trị là true, nếu không giá trị là false.

    var isEqual = (16 == 16);
    return isEqual;
     
    // Kết quả
    // isEqual = true
    var isEqual = (16 == 15);
    return isEqual;
     
    // Kết quả
    // isEqual = false
  • Toán tử so sánh khác !==: Kiểm tra tính không trùng khớp (khác nhau), nếu có giá trị là true, nếu không giá trị là false.

    var isNotEqual = (16 != 16);
    return isNotEqual;
     
    // Kết quả
    // isNotEqual = false
    var isNotEqual = (16 != 15);
    return isNotEqual;
        
    // Kết quả
    // isNotEqual = true
  • Toán tử so sánh lớn hơn >: Kiểm tra tính lớn hơn của giá trị với một giá trị khác. Kết quả trả về true nếu lớn hơn, false nếu không lớn hơn.

    var isGreater = (16 > 15);
    return isGreater;
     
    // Kết quả
    // isGreater = true
    var isGreater = (16 > 17);
    return isGreater;
        
    // Kết quả
    // isGreater = false
  • Toán tử so sánh nhỏ hơn <: Kiểm tra tính nhỏ hơn của giá trị với một giá trị khác. Kết quả trả về true nếu nhỏ hơn, false nếu không nhỏ hơn.

    var isLess = (16 < 15);
    return isLess;
     
    // Kết quả
    // isLess = false
    var isLess = (16 < 17);
    return isLess;
     
    // Kết quả        
    // isLess = true
  • Toán tử so sánh lớn hơn hoặc bằng >=: Kiểm tra tính lớn hơn hoặc bằng của giá trị với một giá trị khác. Kết quả trả về true nếu lớn hơn hoặc bằng, false nếu nhỏ hơn.

    var isGreaterOrEqual = (16 >= 15);
    return isGreaterOrEqual;
     
    // Kết quả
    // isGreaterOrEqual = true
    var isGreaterOrEqual = (16 >= 17);
    return isGreaterOrEqual;
        
    // Kết quả
    // isGreaterOrEqual = false
  • Toán tử so sánh nhỏ hơn hoặc bằng <=: Kiểm tra tính nhỏ hơn hoặc bằng của giá trị với một giá trị khác. Kết quả trả về true nếu nhỏ hơn hoặc bằng, false nếu lớn hơn.

    var isLessOrEqual = (16 <= 15);
    return isLessOrEqual;
     
    // Kết quả
    // isLessOrEqual = false
    var isLessOrEqual = (16 <= 17);
    return isLessOrEqual;
        
    // Kết quả
    // isLessOrEqual = true

Toán tử logic

  • Toán tử logic và (AND) &&: Kiểm tra hai hoặc nhiều điều kiện, nếu tất cả điều kiện đúng sẽ trả về true, ít nhất một điều kiện sai sẽ trả về false.

    var result = true && true && true;
    return result;
     
    // Kết quả
    // result = true
    var result = true && false && true;
    return result;
        
    // Kết quả
    // result = false
  • Toán tử logic hoặc (OR) ||: Kiểm tra hai hoặc nhiều điều kiện, nếu tất cả điều kiện sai sẽ trả về false, ít nhất một điều kiện đúng sẽ trả về true.

    var result = false || false || false;
    return result;
     
    // Kết quả
    // result = false
    var result = false || false || true;
    return result;
     
    // Kết quả
    // result = true
  • Toán tử logic không (NOT) !: Đảo ngược giá trị boolean của một biểu thức hoặc biến. Nếu giá trị ban đầu là true, thì sẽ trả về false và ngược lại.

    var result = !false;
    return result;
     
    // Kết quả
    // result = true
    var result = !true;
    return result;
        
    // Kết quả
    // result = false

Câu lệnh rẽ nhánh

Câu lệnh rẽ nhánh if...else trong Cogover Scripting là cấu trúc điều khiển cơ bản giúp chương trình quyết định thực thi khối lệnh nào dựa trên điều kiện logic được đánh giá là đúng true hoặc sai false.

Cú pháp if...else

if (điều kiện) {
    // Khối các lệnh cần chạy nếu điều kiện đúng (true)
} else {
    // Khối các lệnh cần chạy nếu điều kiện sai (false)
}
// Ví dụ: Mức hoa hồng của hợp đồng thay đổi theo năm kinh nghiệm (làm tại công ty), dưới 5 năm là 5%, từ đủ 5 năm trở lên là 10%.
 
var soNamKinhNghiem = 6;  // Số năm kinh nghiệm của nhân viên
 
if (soNamKinhNghiem >= 5) {
    var hoaHong = 0.10; // hoa hồng khi làm từ đủ 5 năm trở lên
} else {
    var hoaHong = 0.05; // hoa hồng khi làm dưới 5 năm
}
 
return hoaHong;
 
// Kết quả
// hoaHong = 0.10 (10%)

Cú pháp if...else if... else

Khi có nhiều điều kiện cần kiểm tra, người dùng có thể kết hợp với else if để xử lý từng trường hợp riêng biệt. Lệnh sẽ chỉ thực hiện khối lệnh của điều kiện đúng (true) đầu tiên theo thứ tự từ trên xuống dưới.

if (điều kiện 1) {
    // Khối các lệnh cần chạy nếu điều kiện 1 đúng (true)
} else if (điều kiện 2) {
    // Khối các lệnh cần chạy nếu điều kiện 2 đúng (true)
} else {
    // Thực hiện khi không có điều kiện nào đúng
}
// Ví dụ
var doanhSo = 168;  // Doanh số bán hàng của nhân viên trong tháng (đơn vị: triệu đồng)
var xepLoai = "";
 
if (doanhSo >= 200) {
    // Nếu doanh số từ 200 triệu đồng trở lên: nhân viên xuất sắc và nhận hoa hồng cao nhất
    xepLoai = "Xuất sắc - Hoa hồng 15%";
} else if (doanhSo >= 150) {
    // Nếu doanh số từ 150 triệu đồng đến dưới 200 triệu đồng: nhân viên tốt và nhận hoa hồng 10%
    xepLoai = "Tốt - Hoa hồng 10%";
} else if (doanhSo >= 100) {
    // Nếu doanh số từ 100 triệu đồng đến dưới 150 triệu đồng: nhân viên trung bình và nhận hoa hồng 5%
    xepLoai = "Trung bình - Hoa hồng 5%";
} else {
    // Nếu doanh số dưới 100 triệu đồng: nhân viên cần cải thiện hiệu suất
    xepLoai = "Cần cải thiện - Hoa hồng 2%";
}
 
return xepLoai;
 
// Kết quả 
// xepLoai = "Tốt - Hoa hồng 10%"

Biến hệ thống

Cogover Scripting cung cấp các biến hệ thống chỉ đọc để truy xuất nhanh thông tin về bản ghi, người dùng, quy trình và trình duyệt. Hai biến hệ thống có sẵn là $record$currentUser.

Biến $record

  • Định nghĩa: Đại diện cho bản ghi hiện tại, dùng trong Công thức để truy xuất dữ liệu.
  • Trường đơn giá trị:
    • $record.name: Lấy tên bản ghi.
    • $record.id: Lấy ID bản ghi.
  • Trường nhiều giá trị (List):
    • $record.email[0]: Lấy email thứ nhất.
    • $record.email[1]: Lấy email thứ hai.
    • $record.email[n]: Lấy email thứ n-1.
  • Trường lookup:
    • $$record.created_by.account_email: Lấy email của người tạo, với created_by là slug của trường trong bản ghi và account_email là slug của trường ở đối tượng được lookup.

Biến $currentUser

  • Định nghĩa: Đại diện cho người dùng hiện tại trong Workspace, dùng trong Tài nguyên loại Công thức tính của quy trình để truy xuất thông tin người dùng.
  • Ví dụ:
    • $currentUser.account_email: Lấy địa chỉ email của người dùng hiện tại.

Các hàm Cogover Scripting hỗ trợ

Cogover Scripting cung cấp các hàm cho ClassInstance để thực hiện các tác vụ xử lý dữ liệu.

Phân biệt Class và Instance

  • Class: Là bản thiết kế (template) định nghĩa cấu trúc và hành vi chung cho một nhóm đối tượng. Class quy định:

    • Các trường dữ liệu (Text, Number, Date, v.v.)
    • Quan hệ với các Class khác
    • Các phương thức xử lý chung (Hàm của Class)

    Ví dụ: Class Khách hàng định nghĩa các trường như Tên, Email, Số điện thoại, Doanh số và các hàm tính toán tổng doanh thu.

  • Instance: Là bản ghi cụ thể được tạo ra từ một Class, chứa dữ liệu riêng phản ánh thông tin của đối tượng thực tế.

    Ví dụ: Từ class Khách hàng, có các instance như:

    • Tên: "Nguyễn Văn A", Email: "nguyenvana@xyz.com", Số điện thoại: 036969xxxx, Doanh số: 10000.
    • Tên: "Nguyễn Văn B", Email: "nguyenvanb@xyz.com", Số điện thoại: 037659xxxx, Doanh số: 15000.

Chi tiết các hàm

© 2025 Cogover LLC