Điều kiện trong Shopify Flow
Điều kiện tiếp tục một dòng công việc khi đáp ứng được các quy tắc nhất định, chẳng hạn như phần mở đầu của câu lệnh if-then. Khi thiết lập điều kiện, bạn chọn tiêu chí từ các trường trong GraphQL Admin API (chẳng hạn như product.title), toán tử logic (chẳng hạn như equal to) và giá trị đối chiếu (chẳng hạn như Blue jeans). Khi một dòng công việc đánh giá một điều kiện, Flow sẽ kiểm tra giá trị được xác định trong dòng công việc với giá trị trả về cho cửa hàng, sau đó hiển thị kết quả trong lần chạy dòng công việc. Để hiểu rõ hơn về các trường và giá trị có sẵn dùng để xác định điều kiện, hãy tìm hiểu cách xem trước dữ liệu cửa hàng.
Tìm hiểu thêm về hiểu kiến thức cơ bản về điều kiện.
Trên trang này
Loại dữ liệu dùng với Flow
Khi bạn thiết lập điều kiện, bạn chọn một tiêu chí từ các trường có sẵn trong Admin API và Flow sẽ đánh giá so với giá trị trả về cho cửa hàng của bạn.
Flow hỗ trợ các loại dữ liệu sau:
- Số thực: Giá trị số thực là các số có phần thập phân. Ví dụ: 4,25.
- Số nguyên: Giá trị số nguyên là các số nguyên không có phần thập phân. Ví dụ: 42.
- Ngày: Giá trị ngày là cách biểu thị ngày tháng bằng chữ số. Ví dụ: 01012021.
- Chuỗi: Giá trị chuỗi là văn bản. Việc so sánh bằng giá trị chuỗi không phân biệt chữ hoa chữ thường.
- Boolean: Giá trị Boolean có thể là đúng hoặc sai.
- Enum: Giá trị Enum là các tập dữ liệu cho phép một biến trở thành tập hợp các hằng số được xác định trước.
Toán tử logic
Toán tử logic xác định cách áp dụng điều kiện của bạn. Điều kiện có thể kiểm tra các thuộc tính đơn giản như tổng giá trị đơn hàng có lớn hơn một số tiền nhất định hay không, hoặc khách hàng có chấp nhận tiếp thị hay không. Toán tử logic cũng có thể kiểm tra các thuộc tính phức tạp hơn.
Toán tử có thể là toán tử cấp trường, chẳng hạn như bằng hoặc không bằng, hoặc toán tử danh sách, chẳng hạn như có ít nhất một trong hoặc không có trong.
Toán tử cấp trường
Toán tử cấp trường được dùng để so sánh 2 giá trị. Flow có thể sử dụng các toán tử sau:
| Toán tử | Mô tả | Ví dụ |
|---|---|---|
| Bằng | So sánh các giá trị để kiểm tra xem chúng có giống nhau hay không. |
Giá trị cho order.currentTotalDiscountsSet.shopMoney.amount được lấy từ dữ liệu cửa hàng của bạn và so sánh với giá trị thứ hai là 50.Nếu tổng khoản giảm giá của đơn hàng bằng chính xác 50, thì điều kiện là đúng. |
| Không bằng | So sánh các giá trị để kiểm tra xem chúng có khác nhau hay không. |
Giá trị cho order.currentTotalDiscountsSet.shopMoney.amount được lấy từ dữ liệu cửa hàng của bạn và so sánh với giá trị thứ hai là 50.Nếu tổng khoản giảm giá của đơn hàng không bằng chính xác 50, thì điều kiện là đúng. |
| Lớn hơn và Lớn hơn hoặc bằng | So sánh các giá trị để kiểm tra xem giá trị đầu tiên có lớn hơn, hoặc lớn hơn hay bằng giá trị thứ hai hay không. |
Giá trị cho order.currentTotalDiscountsSet.shopMoney.amount được lấy từ dữ liệu cửa hàng của bạn và so sánh với giá trị thứ hai là 50.Nếu giá trị tổng khoản giảm giá của đơn hàng là 137, thì điều kiện là đúng, vì 137 lớn hơn 50. |
| Nhỏ hơn và Nhỏ hơn hoặc bằng | So sánh các giá trị để kiểm tra xem giá trị thứ nhất có nhỏ hơn, hoặc nhỏ hơn hoặc bằng giá trị thứ hai hay không. |
Giá trị cho order.currentTotalDiscountsSet.shopMoney.amount được lấy từ dữ liệu cửa hàng của bạn và so sánh với giá trị thứ hai là 50.Nếu tổng khoản giảm giá của đơn hàng là 47, thì điều kiện là đúng, vì 47 nhỏ hơn hoặc bằng 50. |
| Ít nhất một trong số | Kiểm tra xem trường có bằng giá trị nào trong danh sách được cung cấp hay không. Bạn phải nhập riêng từng giá trị rồi nhấn phím Enter (tương tự như thẻ). Việc sử dụng trên mảng trống sẽ cho kết quả đánh giá sai. |
Giá trị cho order.lineitem.product.title được so sánh với: pineapple, guava, kiwi.Nếu tên sản phẩm của mục hàng là guava, thì điều kiện là đúng, vì "guava" nằm trong danh sách bạn đã cung cấp. |
| Không thuộc bất kỳ mục nào trong số | Kiểm tra xem trường không bằng bất kỳ giá trị nào trong danh sách đã cung cấp hay không. |
Giá trị cho order.lineitem.product.title được so sánh với: pineapple, guava, kiwi.Nếu tên sản phẩm của mục hàng là raspberry, thì điều kiện là đúng, vì "raspberry" không nằm trong danh sách bạn đã cung cấp. |
| Bao gồm | So sánh các giá trị để kiểm tra xem thông tin nhập của giá trị thứ nhất có bao gồm dữ liệu trong thông tin nhập của giá trị thứ hai hay không. |
Giá trị cho order.lineitem.product.title được so sánh với: berry.Nếu tên sản phẩm của mục hàng là strawberry, thì điều kiện là đúng, vì "berry" nằm trong "strawberry". |
| Không bao gồm | So sánh các giá trị để kiểm tra xem thông tin nhập của giá trị thứ nhất có không bao gồm dữ liệu trong thông tin nhập của giá trị thứ hai hay không. |
Giá trị của order.lineitem.product.title được so sánh với: berry.Nếu tên sản phẩm của mục hàng là apple, thì điều kiện sẽ đúng, vì "berry" không có trong "apple". |
| Bắt đầu bằng | So sánh các giá trị để kiểm tra xem giá trị thứ nhất có bắt đầu bằng dữ liệu trong giá trị thứ hai hay không. |
Giá trị của order.shippingAddress.country được so sánh với: United.Nếu quốc gia trong địa chỉ giao hàng của đơn hàng là United Kingdom, thì điều kiện sẽ đúng, vì "United Kingdom" bắt đầu bằng "United". |
| Không bắt đầu bằng | So sánh các giá trị để kiểm tra xem giá trị thứ nhất không bắt đầu bằng dữ liệu trong giá trị thứ hai hay không. |
Giá trị của order.shippingAddress.country được so sánh với: United.Nếu quốc gia trong địa chỉ giao hàng của đơn hàng là Canada, thì điều kiện sẽ đúng, vì "United Kingdom" không bắt đầu bằng "Canada". |
| Kết thúc bằng | So sánh các giá trị để kiểm tra xem giá trị thứ nhất có kết thúc bằng dữ liệu trong giá trị thứ hai hay không. |
Giá trị của order.lineitems.product.title được so sánh với: pie.Nếu tên sản phẩm của mục hàng là key lime pie, thì điều kiện sẽ đúng, vì "key lime pie" kết thúc bằng "pie". |
| Không kết thúc bằng | So sánh các giá trị để kiểm tra xem giá trị thứ nhất không kết thúc bằng dữ liệu trong giá trị thứ hai hay không. |
Giá trị của order.lineitems.product.title được so sánh với: pie.Nếu tên sản phẩm của mục hàng là chocolate cake, thì điều kiện sẽ đúng, vì "chocolate cake" không kết thúc bằng "pie". |
Toán tử null hoặc trống
| Toán tử | Mô tả | Điều kiện đúng/sai |
|---|---|---|
| Trống hoặc không tồn tại | Kiểm tra xem một trường có trống (không có giá trị) hay không tồn tại (là null) hay không. |
Trả về đúng khi trường trống hoặc null và sai nếu trường có tồn tại.
|
| Không trống và tồn tại | Kiểm tra xem một trường có tồn tại và không trống hoặc null hay không. | Trả về đúng khi trường này không trống và tồn tại, trả về sai khi trường này trống. |
Toán tử danh sách
Toán tử danh sách được kết hợp với các toán tử ở cấp độ trường để cho phép bạn kiểm tra điều kiện trên dữ liệu có trong danh sách.
Như trong ví dụ "ít nhất một", bạn có thể muốn kiểm tra xem đơn hàng có chứa sản phẩm cụ thể (nằm trong order.lineItems) kèm thẻ cụ thể (danh sách thuộc order.lineItems.product.tags) hay không. Trong cả hai trường hợp, ví dụ sử dụng toán tử danh sách ít nhất một trong số.
Flow cung cấp 3 toán tử để xử lý danh sách: Ít nhất một trong số, Không có mục nào trong số và Tất cả trong số.
| Toán tử | Mô tả | Ví dụ sử dụng |
|---|---|---|
| Ít nhất một trong số | Kiểm tra xem có bất kỳ mục nào trong danh sách khớp với điều kiện đã chỉ định hay không. Trả về true nếu có bất kỳ mục nào trong danh sách khớp. Nếu danh sách trống hoặc không có mục nào khớp, thì trả về false. | Kiểm tra xem đơn hàng có chứa sản phẩm kèm thẻ cụ thể hay không bằng cách sử dụng Ít nhất một trong số order line items.product.tags bằng tagname. |
| Không có mục nào trong số | Kiểm tra để đảm bảo không có mục nào trong danh sách khớp với điều kiện đã chỉ định. Trả về true nếu không có mục nào khớp với điều kiện. Nếu danh sách trống, thì trả về true. | Kiểm tra xem một sản phẩm không có thẻ presale hay không bằng cách sử dụng None of product tags is equal to presale.Một lỗi thường gặp là cố gắng phủ định toán tử bằng cách sử dụng is not equal to. Việc sử dụng phủ định kép, None of product tags is not equal to presale, khiến điều kiện vừa khó hiểu vừa không hợp lệ.
|
| Tất cả | Kiểm tra để đảm bảo tất cả các mục trong danh sách đều khớp với điều kiện đã chỉ định. Trả về true nếu mọi mục trong danh sách đều khớp với điều kiện. | Kiểm tra xem tất cả mặt hàng trong đơn hàng có một nhà cung cấp sản phẩm cụ thể tên là Acme hay không bằng cách sử dụng All of order line items have a product.vendor equal to Acme. |
Sắp xếp thứ tự các điều kiện
Bạn có thể tạo các dòng công việc có nhiều điều kiện, mỗi điều kiện có thể dẫn đến các thao tác khác nhau. Thứ tự của các điều kiện rất quan trọng. Quá trình kiểm tra điều kiện bắt đầu từ đầu dòng công việc và tiến hành có hệ thống qua từng điều kiện. Quá trình kiểm tra sẽ dừng lại khi đáp ứng một điều kiện.
Ví dụ này sử dụng nhiều điều kiện để kiểm tra xem khách hàng có đủ điều kiện tham gia chương trình khách hàng thân thiết dựa trên tổng số tiền họ đã chi tiêu tại cửa hàng hay không. Các điều kiện được kiểm tra theo thứ tự hiển thị:
- Nếu tổng giá lớn hơn 1000 USD và khách hàng đồng ý nhận thông tin tiếp thị, hãy gắn thẻ
Goldcho họ. - Nếu tổng giá nhỏ hơn 1000 USD nhưng lớn hơn 500 USD và khách hàng đồng ý nhận thông tin tiếp thị, hãy gắn thẻ
Silvercho họ. - Nếu tổng giá nhỏ hơn 500 USD nhưng lớn hơn 200 USD và khách hàng đồng ý nhận thông tin tiếp thị, hãy gắn thẻ
Bronzecho họ.

Kết hợp nhiều tiêu chí trong một điều kiện
Khi tạo một điều kiện, bạn có thể thiết lập một số tiêu chí. Bạn có thể chọn cách kết hợp các tiêu chí riêng biệt này để xác định xem điều kiện tổng thể là đúng (true) hay sai (false).
Nếu đáp ứng tất cả tiêu chí
Việc chọn AND chỉ dẫn đến phản hồi là đúng nếu mọi tiêu chí bạn đã thiết lập đều đúng.
Ví dụ: bạn tạo một dòng công việc để gắn thẻ những khách hàng ở Canada và chi tiêu hơn 500 USD cho một đơn hàng.

Dòng công việc chỉ gắn thẻ khách hàng nếu khách hàng ở Canada và họ chi tiêu hơn 500 USD cho đơn hàng đó. Nếu một trong hai điều kiện này là sai thì khách hàng sẽ không được gắn thẻ.
Nếu đáp ứng tiêu chí bất kỳ
Việc chọn OR sẽ dẫn đến phản hồi là đúng nếu một trong bất kỳ tiêu chí nào bạn đã thiết lập là đúng.
Ví dụ: bạn tạo một dòng công việc để gắn thẻ đơn hàng có đề xuất về rủi ro là Cancel (Hủy) hoặc Investigate (Điều tra). Miễn là một trong các điều kiện đó đúng, đơn hàng sẽ được gắn thẻ.

Dữ liệu tĩnh và động trong điều kiện
Thông thường, giá trị thứ hai trong một điều kiện là một giá trị tĩnh, được nhập thủ công (chẳng hạn như product.title == "your title"). Giá trị này không đổi mỗi khi dòng công việc chạy.
Bạn cũng có thể sử dụng giá trị động nếu trường cho giá trị thứ hai hiển thị biểu tượng . Giá trị động được lấy từ dữ liệu cửa hàng mỗi khi dòng công việc chạy. Để sử dụng giá trị động, hãy nhấp vào biểu tượng
và chọn giá trị bạn muốn kiểm tra đối chiếu. Giá trị động không khả dụng đối với tất cả các trường.
Ví dụ: bạn tạo một dòng công việc gắn thẻ đơn hàng nếu quốc gia trong địa chỉ thanh toán của đơn hàng khớp với quốc gia trong địa chỉ giao hàng.

Trong ví dụ này, cả giá trị đầu tiên và thứ hai đều được lấy từ dữ liệu của cửa hàng, thay vì chỉ định thủ công một chuỗi tĩnh để kiểm tra đối chiếu cho giá trị thứ hai. Nếu quốc gia trong địa chỉ thanh toán do khách hàng cung cấp giống với quốc gia khách hàng cung cấp trong địa chỉ giao hàng thì điều kiện là đúng và đơn hàng sẽ được gắn thẻ.
Đôi khi, bạn có thể cần sử dụng dữ liệu động không đúng định dạng. Ví dụ: bạn có thể cần so sánh một số được lưu dưới dạng chuỗi với một số khác. Trong trường hợp này, bạn có thể sử dụng tùy chọn Run code để chuyển đổi dữ liệu sang đúng định dạng.
Mẫu
Hầu hết các mẫu trong thư viện mẫu đều chứa điều kiện.
Ví dụ về điều kiện
Kiểm tra xem có ít nhất một mục trong danh sách khớp với điều kiện hay không
Ví dụ này hiển thị một điều kiện điển hình để kiểm tra xem có ít nhất một mục trong danh sách khớp với một giá trị nhất định hay không.
Trong trường hợp này, điều kiện kiểm tra xem một trong các sản phẩm của đơn hàng có thẻ presale hay không. Để tạo điều kiện này, bạn sẽ chọn order / lineItems / product / tags. Theo mặc định, Flow chọn at least one of làm toán tử logic:

Các phần at least one of là toán tử danh sách và được dùng để xử lý thao tác khớp trên nhiều mục trong danh sách. Phần is equal to là toán tử cấp độ trường xác định xem một mục duy nhất trong danh sách có khớp hay không.
Kiểm tra xem không có mục nào trong danh sách khớp với điều kiện
Ví dụ này hiển thị một điều kiện điển hình để kiểm tra xem có phải không có mục nào trong danh sách khớp với một giá trị nhất định hay không. Một vấn đề phổ biến cần cân nhắc là danh sách có thể trống. Khi danh sách trống, điều kiện sẽ do toán tử danh sách xử lý (trong trường hợp này là none of).
Trong trường hợp này, điều kiện kiểm tra xem có phải không có thẻ sản phẩm nào bằng foo hay không:

Điều kiện sẽ trả về true nếu (1) không có thẻ sản phẩm nào hoặc (2) không có thẻ nào là foo. Nếu không, điều kiện sẽ trả về false.
Kiểm tra xem một mục trong danh sách có khớp với nhiều tiêu chí không
Ví dụ này hiển thị một điều kiện điển hình để kiểm tra xem có ít nhất một mục trong danh sách khớp với hai tiêu chí riêng biệt hay không.
Trong trường hợp này, điều kiện kiểm tra xem một trong các sản phẩm của đơn hàng có thẻ là presale và có productType là clothing hay không.

Để tạo điều kiện này, bạn nên:
- Chọn order / lineItems / product / tags cho tiêu chí đầu tiên.
- Chọn Add criteria for same item trong danh sách lineItems. Lưu ý: Chọn sai mục danh sách ở đây là một lỗi phổ biến.
- Chọn lineItems_item làm đối tượng cấp cao nhất, sau đó chọn product / productType` cho tiêu chí thứ hai. Lưu ý: Chọn sai đối tượng ở đây cũng là một lỗi phổ biến.
- Chọn AND để kết hợp hai tiêu chí.
- Nhập các giá trị
presalevàclothingcho hai tiêu chí.