EvaluatorGroups
Phạm vi áp dụng
✅ Bravo 8 · ✅ Bravo 10
Ý nghĩa
Khai báo danh sách các Evaluator sẽ cùng được thực thi khi EvaluatorGroup được gọi. Giúp gom một chuỗi xử lý liên quan thành một khối gọi được từ nhiều nơi.
Cú pháp
<root>
<Tables>
<Ten_bang>
<EvaluatorGroups>
<EvaluatorGroup_X>
<!-- Danh sách các Evaluator -->
</EvaluatorGroup_X>
</EvaluatorGroups>
</Ten_bang>
</Tables>
</root>Ví dụ
Trong Editor của Hóa đơn, khi gõ lại Mã thuế sẽ phải tính lại tiền thuế, tổng tiền thuế, thay đổi các giá trị về tài khoản Nợ/Có thuế… → gom chung vào một nhóm và gọi ở ColumnChanged của ô TaxType:
<EvaluatorGroups>
<EvaluatorGroup_TaxType>
<Eval_TotalOriginalAmount3 />
<Eval_TotalAmount3 />
<Eval_DebitAccount3_DefaultValue />
<Eval_CreditAccount3_DefaultValue />
<Eval_TaxRegNo_DefaultValue />
<Eval_TaxRegName_DefaultValue />
</EvaluatorGroup_TaxType>
</EvaluatorGroups>Gọi có điều kiện
Có thể đặt biểu thức điều kiện ngay trong thẻ gọi Eval:
<EvaluatorGroup_ExchangeRate>
<Eval_Ct0_UnitPrice />
<Eval_Ct0_Amount4>TotalAmount4<>0</Eval_Ct0_Amount4>
<Eval_Ct0_Amount />
</EvaluatorGroup_ExchangeRate>→ Eval_Ct0_Amount4 chỉ chạy khi TotalAmount4 <> 0
Ghi chú
- Chương trình thực thi lần lượt các Evaluator theo thứ tự khai báo
- Việc thực thi tuần tự dễ gây gọi lồng nhau → dùng allowRunning với giá trị
Nonnestedđể tránh chạy thừa
Mẫu tối ưu hiệu năng
Nếu
Eval_Ct0_UnitPricechắc chắn làm thay đổi cộtAmount→ sẽ kích hoạt ColumnChanged củaAmount. Khai báo<allowRunning>Nonnested</allowRunning>choEval_Ct0_Amountđể nó không bị gọi lại khi chạy trong Group.