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ác kiểu dữ liệu cơ bản dùng trong Cogover Scripting
- Danh sách quy đổi trường dữ liệu của đối tượng ra kiểu dữ liệu Cogover Scripting
- Danh sách toán tử
- Câu lệnh sử dụng điều kiện để rẽ nhánh
- Các biến hệ thống
- Các hàm Cogover Scripting hỗ trợ
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
haymap
, 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ớiCOGOVER
). - 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;
- null và undefined: Đạ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 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
- Chia lấy phần nguyên
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
và $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ớicreated_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 Class và Instance để 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
Rate this page
On this page