Sự kiện Transaction

Phạm vi áp dụng

✅ Bravo 8 · ✅ Bravo 10

Nhóm sự kiện chạy quanh transaction lưu dữ liệu.

Toàn cảnh

flowchart TD
    A["BeforeTransaction / ServerUpdating<br/>CLIENT · evaluator"] --> B["Gửi lên backend"]
    B --> C["INSERT / UPDATE / DELETE"]
    C --> D["ServerUpdated<br/>evaluator sau khi lưu"]
    D --> E["BeforeCommit<br/>BACKEND · thủ tục"]
    E --> F["COMMIT"]
    F --> G["AfterCommit<br/>BACKEND · evaluator/thủ tục"]
    G --> H["AfterTransaction<br/>CLIENT · evaluator"]
Sự kiệnChạy ởChứa gìB8B10
ServerUpdatingClientEvaluator✅❌
BeforeTransactionClientEvaluator❌✅
BeforeCommitBackendThủ tục✅✅
AfterCommitBackendEvaluator / thủ tục✅✅
AfterTransactionClientEvaluator❌✅

BeforeCommit

Khai báo thủ tục được thực thi cùng transaction với việc lưu dữ liệu vào bảng chi tiết.

Ràng buộc

<ServerCommand>
  <BeforeCommit>
    <Command>usp_B30AccDoc_Post</Command>
    <Parameters>BranchCode,Stt,DocDate,DocCode,DocStatus</Parameters>
  </BeforeCommit>
</ServerCommand>

Vì sao quan trọng?

Việc đưa các sự kiện trong quá trình lưu vào cùng một transaction đảm bảo tính toàn vẹn dữ liệu, tránh dữ liệu lưu không đồng bộ khi gặp sự cố.

Bravo 10: “Danh sách các thủ tục được kích hoạt tại backend sau khi dữ liệu đã được cập nhật thành công nhưng trước khi commit transaction.”


AfterCommit

Khai báo các Evaluator được thực thi sau khi lưu dữ liệu.

Chỉ áp dụng cho bảng mẹ.

<ServerCommand>
  <AfterCommit>
    <Eval_AutoPrintVoucher>
      <ClassName>BravoCommandKey</ClassName>
      <CommandKey>AccDocViewer_PX
        AutoRun=True;StartupCommandKey=QuickPrint;PrimaryKeyValue={=Id};</CommandKey>
      <commandFormState>Minimized</commandFormState>
      <Expr>ISNULL(AutoPrintVoucher,False)=True</Expr>
    </Eval_AutoPrintVoucher>
  </AfterCommit>
</ServerCommand>

Bravo 10: “Danh sách các thủ tục được kích hoạt tại backend sau khi transaction được committed thành công.”

Bị bỏ qua khi import

Các evaluator trong AfterCommit sẽ bị bỏ qua khi import → Chức năng Import

Ở các màn hình khác

Màn hìnhVai trò của AfterCommit
ReporterEvaluator chạy sau khi thủ tục báo cáo xong và transaction committed
DashboardEvaluator chạy sau khi thủ tục Dashboard thực hiện xong

AfterTransaction

❌ Bravo 8 · ✅ Bravo 10

Danh sách các evaluator được kích hoạt tại client, sau khi quá trình cập nhật dữ liệu tại backend thành công.

<AfterTransaction>
  <!-- Danh sách Evaluator -->
</AfterTransaction>

Khác AfterCommit ở chỗ nào?

AfterCommitAfterTransaction
Chạy ởBackendClient
Dùng đểXử lý dữ liệu phía serverCập nhật giao diện, mở form, thông báo

Liên quan

ServerCommand · BeforeTransaction · ServerUpdating · ServerUpdated · Vòng đời sự kiện Editor · BravoCommandKey