# TRANG 3: Phân tích Logic Đánh giá Cron Expression (JS Engine)

### 3.1. Tại sao cần JavaScript?

WSO2 MI mặc định không có hàm so sánh thời gian với biểu thức Cron phức tạp (như `0 0/15 * * * ?`). Do đó, dự án sử dụng **JavaScript (Nashorn Engine)** để gọi trực tiếp các thư viện Java của Quarkz.

### 3.2. Chi tiết mã nguồn Evaluator

Tại `EvaluateSingleTaskSequence.xml`, hệ thống thực hiện các bước:

1. Lấy `cron_expression` và `last_run` (chuỗi string) từ Database.
2. Chuyển đổi `last_run` sang đối tượng `Date` của Java.
3. Sử dụng class `org.quartz.CronExpression` để tính toán thời điểm chạy tiếp theo (`nextRun`).
4. **So sánh:** Nếu `nextRun` nhỏ hơn hoặc bằng thời gian hiện tại (`now`), hệ thống xác định Task này đã đến hạn chạy (`shouldRun = true`).