Hướng dẫn AgentFlow

Quy tắc bản ghi

Tối đa 50 quy tắc từ chối lưu trên một Thực thể — vì sao điều kiện phải mô tả điều bị từ chối chứ không phải điều đúng, trường neo thông báo, xem trước trên dữ liệu hiện có, và hộp thoại xác nhận khi bật.

Ràng buộc trường (Trường dữ liệu) nói về một giá trị: giá trị này phải có dạng như thế này. Quy tắc bản ghi nói về cả bản ghi: bản ghi này phải hợp lý. Nếu câu bạn muốn diễn đạt cần tới từ "trường khác" — "ngày kết thúc phải sau ngày bắt đầu" — hoặc chỉ áp dụng lúc tạo mới hay khi một trường vừa đổi, đó là việc của quy tắc bản ghi.

Mở Thực thể, chọn thực thể, sang tab Quy tắc.

Tab Quy tắc chỉ hiện với người nắm năng lực Thiết kế trên chính thực thể đó — cùng điều kiện hiển thị với tab Quyền truy cập. Không có phiên bản mờ đi; không đủ quyền thì tab không tồn tại.

Bẫy đảo cực: điều kiện mô tả điều bị từ chối

Đây là điều quan trọng nhất trên trang này, và là điều dễ làm sai nhất khi soạn một quy tắc lần đầu.

Một quy tắc từ chối lưu khi điều kiện của nó đúng. Nghe tự nhiên thì ngược với câu bạn nghĩ trong đầu: muốn nói "số tiền phải lớn hơn không", bạn gõ điều kiện "Số tiền > 0" — và vừa tạo ra một quy tắc từ chối mọi bản ghi có số tiền dương, tức là mọi bản ghi đúng. Điều kiện phải mô tả đúng cái sai, không phải cái đúng: "Số tiền ≤ 0".

Toàn bộ phần còn lại của trang này tồn tại để bắt lỗi này trước khi nó chạm tới ai:

  • Câu đọc lại ở đầu điều kiện — "Chặn khi lưu nếu: …" — nói ra bằng lời điều bạn vừa soạn, để bạn tự đối chiếu với câu mình định diễn đạt.
  • Xem trước trên dữ liệu hiện có (mục dưới đây) đếm xem điều kiện này sẽ từ chối bao nhiêu trong số những bản ghi đang có — một quy tắc từ chối gần hết dữ liệu đang lưu gần như chắc chắn đã bị đảo cực.
  • Hộp thoại xác nhận khi bật buộc bạn nhìn con số đó một lần nữa, ngay trước khi quy tắc bắt đầu có hiệu lực.

Không có mức "cảnh báo" nhẹ hơn "chặn". Một quy tắc đang bật hoặc từ chối lưu, hoặc không làm gì — không có quy tắc nào chỉ nhắc nhở rồi vẫn cho lưu.

Xem trước trên dữ liệu hiện có

Nút Kiểm tra trên dữ liệu hiện có đếm, trong số các bản ghi đã lưu, có bao nhiêu bản ghi sẽ bị chính điều kiện đang soạn từ chối — mà không lưu hay đổi gì cả. Kết quả là một tỉ lệ, luôn kèm mẫu số: "3 trên 40 bản ghi", không bao giờ chỉ "3" — một con số đứng một mình không nói lên điều kiện đang chặn nhiều hay ít so với dữ liệu thật.

Bên cạnh số Sẽ bị từ chối còn có số Sẽ bị bỏ qua:

Sẽ bị bỏ qua không phải là "thỏa mãn quy tắc". Đây là những bản ghi mà điều kiện đọc tới một dữ liệu chúng không có — ví dụ so sánh với một trường qua tham chiếu mà bản ghi đó chưa trỏ tới đâu cả — nên quy tắc không có câu trả lời và bỏ qua chúng: lần lưu tiếp theo của chúng đi qua mà không được kiểm tra, không phải vì chúng đúng.

Nếu lần quét dừng ở một giới hạn số bản ghi, cả hai con số chỉ là mức sàn — ít nhất là bấy nhiêu, có thể còn nhiều hơn — và trang nói rõ điều này thay vì để hai con số trông như một câu trả lời trọn vẹn.

Hai câu cảnh báo tự động xuất hiện khi tỉ lệ đáng ngờ:

  • Từ chối mọi bản ghi đã kiểm tra — nêu thẳng đây là dấu hiệu của một điều kiện bị đảo cực: nó đang mô tả một bản ghi đúng, trong khi quy tắc lại từ chối đúng những gì khớp với nó.
  • Từ chối phần lớn bản ghi — một quy tắc thường chỉ bắt trường hợp ngoại lệ, nên tỉ lệ cao là dấu hiệu nên đọc lại điều kiện.

Một quy tắc chỉ đọc về lần lưu (mục "Ba lá về lần lưu" dưới đây) không có gì để xem trước — không bản ghi nào đã lưu trả lời được câu hỏi "bản ghi này có phải mới không", nên nút xem trước không xuất hiện với loại quy tắc này.

Bật một quy tắc: xác nhận trước khi ghi

Bật một quy tắc — bằng công tắc trên thẻ, hoặc bằng nút Lưu khi quy tắc đang bật và điều kiện vừa đổi — lấy đúng con số ở mục trên ngay tại thời điểm bấm, rồi hỏi lại trước khi ghi:

Bật quy tắc này? 3 trên 40 bản ghi đã lưu sẽ bị quy tắc này từ chối. Khi đã bật, mọi lần lưu khớp với điều kiện này đều bị từ chối, với tất cả mọi người.

[ Hủy ] [ Bật ]

Không cần bấm Kiểm tra trên dữ liệu hiện có trước — việc đếm diễn ra ngay trong thao tác bật, không phải một điều kiện phải làm trước mới bật được.

Một vài điều kiện không đếm được — ví dụ so sánh một giá trị mà cách lưu trữ của nó không dịch được sang một phép so sánh trên dữ liệu. Khi đó hộp thoại nói rõ "Không đếm được quy tắc này — …" kèm lý do, và bạn vẫn bật được. Không đếm được không có nghĩa là quy tắc sai; chỉ là bạn bật mà không có con số đi kèm.

Tắt một quy tắc thì không hỏi gì cả — bấm là tắt ngay. Một quy tắc đang từ chối lưu sai chỗ phải tắt được trong một cú bấm, không phải đi qua một bước xác nhận nào.

Trường neo thông báo

Mỗi quy tắc có một ô Hiển thị từ chối tại, chọn trường mà thông báo sẽ hiện ngay dưới nó khi bị từ chối. Không chọn gì thì thông báo áp dụng cho toàn bộ bản ghi thay vì một ô cụ thể — chọn khi điều kiện thật sự chỉ nói về một trường (ví dụ ràng buộc "Số tiền không vượt hạn mức" nên neo vào Số tiền), để lại trống khi điều kiện so sánh nhiều trường và không trường nào là "thủ phạm" rõ ràng hơn trường nào.

Điều kiện: so sánh trường, và ba lá về lần lưu

Điều kiện là một nhóm Tất cả / Bất kỳ các điều kiện con — Tất cả nghĩa là mọi điều kiện con đều đúng thì cả nhóm mới đúng; Bất kỳ nghĩa là một điều kiện con đúng là đủ.

Mỗi điều kiện con so sánh một trường với:

  • Một giá trị cố định bạn gõ vào.
  • Một trường khác cùng kiểu trên chính bản ghi — ví dụ Ngày kết thúc < Ngày bắt đầu.
  • Một mốc tương đối, tính từ ngày lưu — ví dụ Ngày sinh sau 18 năm trước để chặn hồ sơ của người chưa đủ tuổi.

Bên cạnh so sánh trường, một điều kiện con còn có thể là một trong ba lá về lần lưu — những câu hỏi không nói về hình dạng bản ghi mà nói về chính hành động lưu:

LáHỏi gì
là bản ghi mớiLần lưu này có phải là tạo mới không, khác với sửa một bản ghi đã có
một trường thay đổiTrường đã chọn có bị đổi giá trị trong lần lưu này không
giá trị trước đây của một trườngSo sánh giá trị trường đó trước lần lưu này với một điều kiện — ví dụ chặn việc đổi một trạng thái đã "Đã duyệt" trở lại "Nháp"

Dùng ba lá này khi quy tắc phải phân biệt tạo-mới với sửa, hoặc phải biết một trường vừa đổi — một so sánh trường thường không phân biệt được hai lần lưu cho cùng một giá trị cuối, còn ba lá này thì có.

Một quy tắc chỉ gồm lá về lần lưu (không so sánh trường nào) không có xem trước, vì lý do đã nói ở mục trên.

Một điều kiện chứa tối đa 20 điều kiện con.

Mọi quy tắc đang bật chạy cùng lúc

Mọi quy tắc đang bật đều chạy trên mỗi lần lưu, và người lưu thấy tất cả thông báo cùng lúc chứ không phải chỉ thông báo đầu tiên. Không có quy tắc nào chạy trước quy tắc nào — thứ tự các thẻ trên trang này không quyết định gì về việc quy tắc nào được kiểm tra trước.

Quy tắc là nơi duy nhất ghi lại lý do một lần lưu bị từ chối, và xóa một quy tắc không thể hoàn tác. Mọi lần lưu nó đang chặn sẽ đi qua ngay từ lúc xóa.

Giới hạn 50 quy tắc

Mỗi thực thể có tối đa 50 quy tắc. Chạm giới hạn thì phải xóa bớt một quy tắc trước khi thêm quy tắc mới.

Ví dụ

Thực thể Đơn hàng cần một quy tắc: đơn hàng không được vượt hạn mức tín dụng của khách hàng, đọc qua trường tham chiếu Khách hàng.

Bản năng đầu tiên là gõ đúng câu nghĩ trong đầu: Số tiền ≤ Khách hàng → Hạn mức tín dụng. Nhấn Kiểm tra trên dữ liệu hiện có: 40 trên 40 bản ghi — kèm cảnh báo "Quy tắc này sẽ từ chối mọi bản ghi đã kiểm tra." Đây chính là bẫy đảo cực: câu vừa gõ mô tả đơn hàng hợp lệ, nên quy tắc lại từ chối đúng những đơn hàng đúng.

Đảo lại điều kiện thành Số tiền > Khách hàng → Hạn mức tín dụng — giờ nó mô tả đúng cái sai. Kiểm tra lại: 3 trên 40 bản ghi, không còn cảnh báo. Đặt trường neo là Số tiền, viết thông báo "Đơn hàng vượt hạn mức tín dụng của khách hàng này.", bật công tắc — hộp thoại hỏi lại đúng ba con số vừa thấy, xác nhận Bật.

Xem thêm

On this page