Evaluator — Tổng quan
Phạm vi áp dụng
✅ Bravo 8 · ✅ Bravo 10
Evaluator là “động cơ” xử lý của Bravo. Mọi phép tính, gán giá trị, gọi thủ tục, mở màn hình, điều khiển control… đều thực hiện qua Evaluator.
Từ tài liệu gốc
Tất cả các xử lý ở
ServerConstraint,LinkCommand,bindingMembers(của Bravo 7) đều được đưa vào xử lý trong các<Evaluator_X>.
Cấu trúc một Evaluator
<Eval_Ten_Evaluator>
<ClassName>BravoXxxEvaluator</ClassName> <!-- loại xử lý -->
<DataMember>Cột / bảng tác động</DataMember>
<Expr>Điều kiện chạy</Expr>
<scopeType>Phạm vi</scopeType>
<allowRunning>Khi nào chạy</allowRunning>
<!-- các thẻ riêng theo ClassName -->
</Eval_Ten_Evaluator>Ba trục điều khiển
flowchart TD E["Evaluator"] E --> S["scopeType<br/>CHẠY TRÊN DÒNG NÀO"] E --> A["allowRunning<br/>CHẠY KHI NÀO"] E --> X["Expr / zScopeExpr<br/>CHẠY VỚI ĐIỀU KIỆN GÌ"]
| Thẻ | Câu hỏi trả lời |
|---|---|
| scopeType | Evaluator chạy trên những dòng nào? |
| allowRunning | Chạy khi nào — lồng nhau, lần đầu, dòng đầu/cuối? |
| zScopeExpr | Lọc tiếp dòng nào trong phạm vi? |
| Expr | Điều kiện cuối cùng để chạy |
| bSuppressChangeEvents | Có kích hoạt sự kiện dây chuyền không? |
| bSuppressLookupEvents | Có kích hoạt lookup không? |
Danh sách ClassName
Nhóm cốt lõi — dùng hằng ngày
| ClassName | Chức năng | B8 | B10 |
|---|---|---|---|
| BravoEvaluator | Định nghĩa giá trị cho cột hoặc điều khiển control (mặc định) | ✅ | ✅ |
| BravoCopyValue | Copy giá trị giữa các bảng | ✅ | ✅ |
| BravoBindingMember | Tự động lấy thông tin như binding trong lookup | ✅ | ✅ |
| BravoMoneyEvaluator | Tính toán trên các cột tiền | ✅ | ✅ |
| BravoServerConstraint | Đẩy dữ liệu trả về từ thủ tục vào cột / bảng | ✅ | ✅ |
| BravoCommandKey | Thực thi một lệnh / mở màn hình | ✅ | ✅ |
Nhóm thao tác dòng
| ClassName | Chức năng | B8 | B10 |
|---|---|---|---|
| BravoAddRowEvaluator | Thêm một dòng mới vào một bảng | ✅ | ✅ |
| BravoDeleteRowEvaluator | Xóa dòng chi tiết | ✅ | ✅ |
| BravoSelectRowEvaluator | Chỉ định bảng / bản ghi được chọn | ✅ | ✅ |
| BravoTableOrderer | Đánh số thứ tự các dòng | ✅ | ✅ |
| BravoTableAggregator | Tập hợp (gộp nhóm) các dòng trước khi lưu | ✅ | ✅ |
| BravoAllocationEvaluator | Phân bổ cho các dòng chi tiết | ✅ | ✅ |
Nhóm tích hợp thiết bị & dịch vụ ngoài
| ClassName | Chức năng | B8 | B10 |
|---|---|---|---|
| [[BravoFileWriter | BravoFileWriter / BravoReadFile]] | Ghi / đọc nội dung text hoặc binary ra file | ✅ |
| BravoAddFileEvaluator | Đọc nhiều file và thêm dòng tương ứng vào bảng con | ✅ | ✅ |
| [[BravoPortSIPVoIPEvaluator | BravoPortSIPVoIPEvaluator / BravoPortSIPVoIPInviteIncomingEvaluator]] | Gọi / nhận cuộc gọi VoIP qua tổng đài PortSIP | ✅ |
| BravoTimeAttendanceEvaluator | Lấy dữ liệu máy chấm công Dahua, Zkemkeeper | ✅ | ✅ |
| BravoOauth2ResponseTypeCode | Ký số / xác thực OAuth2 với ngân hàng điện tử | ✅ | ✅ |
| BravoSendMailEvaluator | Gửi mail tại máy trạm | ✅ | ✅ |
| BravoSendDataChange | Gửi thông báo dữ liệu thay đổi cho các client khác | ✅ | ✅ |
| BravoPasswordPolicyValidator | Kiểm tra mật khẩu có đáp ứng chính sách bảo mật | ✅ | ✅ |
| BravoPosPromotionProgram | Tính các chương trình khuyến mại | ❌ | ✅ |
| BravoDataServiceEvaluator | Lấy thông tin doanh nghiệp theo mã số thuế | ❌ | ✅ |
Ghi chú chung quan trọng
Thứ tự khởi tạo control
Khi Load form, các Eval bảng mẹ có khai báo thẻ controls được ưu tiên thực hiện trước. Eval thiết lập control ở bảng con / cháu phải đặt ở bảng Parent — đặt trong ServerLoaded hay RowAdded của bảng con đều vô tác dụng.
Quy ước đặt tên
Eval_<Tên bảng chi tiết>_<Tên trường tác động>_<Ghi chú>
Liên quan
Evaluator_X · Evaluators · EvaluatorGroups · Validator Overview · Vòng đời sự kiện Editor