Điều kiện trong Shopify Flow

Shopify Flow sử dụng các điều kiện để xác định đường dẫn trong quy trình làm việc, thường để kiểm soát xem thao tác có được thực hiện hay không. Khi đặt điều kiện, bạn cần chọn trường dữ liệu để kiểm tra (ví dụ như tiêu đề sản phẩm), toán tử logic (ví dụ như equal to) và giá trị cần kiểm tra (Blue jeans).

Điều kiện ví dụ

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 trình bày một điều kiện điển hình để kiểm tra xem có ít nhất một mặt hàng trong danh sách khớp với giá trị nhất định hay không.

Trong trường hợp này, điều kiện sẽ 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 cần chọn order / lineItems / product / tags. Theo mặc định, Flow chọn toán tử logic là at least one of:

If at least one of order / lineItems:
  If at least one of lineItem_item / product / tags
    tags_item
    is equal to
    presale

Những phần at least one oftoán tử liệt kê và được dùng để xử lý so khớp giữa nhiều mục trong danh sách. Phần is equal totoán tử của trường xác định xem từng mục trong danh sách có khớp hay không.

Kiểm tra xem có phải không mục nào trong danh sách khớp với điều kiện hay không

Ví dụ này trình bày một điều kiện điển hình để kiểm tra nếu không có mục nào trong danh sách khớp với một giá trị nhất định. Một vấn đề thường gặp 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ử liệt kê (trong trường hợp này là none of) xử lý.

Trong trường hợp này, điều kiện sẽ kiểm tra nếu không có thẻ sản phẩm nào bằng foo:

If none of product / tags:
  tag_item
  is equal to
  foo

Điều kiện sẽ trả về true nếu (1) không có thẻ sản phẩm 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ục trong danh sách có khớp với nhiều tiêu chí không

Ví dụ này trình bày một điều kiện điển hình để kiểm tra nếu có ít nhất một mục trong danh sách khớp với hai tiêu chí riêng biệt.

Trong trường hợp này, điều kiện sẽ kiểm tra nếu một trong các sản phẩm của đơn hàng có thẻ presale và sản phẩm đó có productType là clothing.

If at least one of order / lineItems:
  If at least one of lineItem_item / product / tags
    tags_item
    is equal to
    presale
  AND
  If lineItem_item / product
    productType
    is equal to
    clothing

Để tạo điều kiện này, bạn cần:

  1. Chọn tiêu chí đầu tiên là order / lineItems / product / tags.
  2. Chọn Thêm tiêu chí cho cùng mục trong danh sách lineItems. Lưu ý: Lỗi thường gặp ở bước này là chọn nhầm mục trong danh sách.
  3. Chọn lineItems_item làm đối tượng ưu tiên hàng đầu, sau đó là product / productType cho tiêu chí thứ hai. Lưu ý: Lỗi thường gặp ở bước này cũng là chọn nhầm đối tượng.
  4. Chọn AND để kết hợp hai tiêu chí.
  5. Nhập giá trị presaleclothing cho hai tiêu chí.

Kiểu dữ liệu được sử dụng trong Flow

Giá trị đầu tiên trong mọi điều kiện Flow là dữ liệu từ cửa hàng của bạn và API quản trị GraphQL.

Flow hỗ trợ các kiểu dữ liệu sau:

  • Float: Giá trị float là số có phần thập phân. Ví dụ: 4,25.
  • Integer: Giá trị interger là số nguyên không có phần thập phân. Ví dụ: 42.
  • Date: Giá trị date là số biểu thị ngày. Ví dụ: 01012021.
  • String: Giá trị string là văn bản. Phép so sánh sử dụng giá trị chuỗi không phân biệt chữ hoa chữ thường.
  • Boolean: Giá trị boolean là true hoặc false.
  • Enum: Giá trị enum là tập hợp dữ liệu cho phép biến là một tập hợp các hằng số định sẵn.

Toán tử logic

Toán tử logic xác định cách áp dụng điều kiệ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 không hay khách hàng có chấp nhận thông tin tiếp thị không. Ngoài ra, toán tử logic còn 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ủa trường như equal to hay not equal to, hoặc toán tử liệt kê như at least one of hay none of.

Toán tử của trường

Sử dụng toán tử của trường để so sánh hai giá trị. Flow có thể sử dụng các toán tử sau:

Bằng

Toán tử Equal to so sánh các giá trị xem có giống nhau hay không. Trong ví dụ sau đây, giá trị order.currentTotalDiscountsSet.shopMoney.amount được truy xuất từ dữ liệu cửa hàng và so sánh với giá trị thứ hai là 50.

Ví dụ về quy trình làm việc sử dụng toán tử logic bằng để hủy đơn hàng nếu dữ liệu truy xuất bằng 50

Nếu giá trị đầu tiên bằng 50 thì điều kiện là true. Đơn hàng sẽ bị hủy.

Khác

Toán tử Not equal to so sánh các giá trị xem có khác nhau hay không. Trong ví dụ sau đây, giá trị order.currentTotalDiscountsSet.shopMoney.amount được truy xuất từ dữ liệu cửa hàng và so sánh với giá trị thứ hai là 50.

Ví dụ về quy trình làm việc sử dụng toán tử logic khác để hủy đơn hàng nếu dữ liệu truy xuất khác 50

Nếu giá trị đầu tiên bằng 93 thì điều kiện là true. Đơn hàng sẽ bị hủy.

Lớn hơn và Lớn hơn hoặc bằng

Các toán tử Greater thanGreater than or equal to so sánh các giá trị xem giá trị thứ nhất lớn hơn hay lớn hơn hoặc bằng giá trị thứ hai. Trong ví dụ sau đây, giá trị order.currentTotalDiscountsSet.shopMoney.amount được truy xuất từ dữ liệu cửa hàng và so sánh với giá trị thứ hai là 50.

Ví dụ về quy trình làm việc sử dụng toán tử logic lớn hơn để hủy đơn hàng nếu dữ liệu truy xuất lớn hơn 50

Nếu giá trị từ cửa hàng là 137 thì điều kiện là true, vì 137 lớn hơn 50. Đơn hàng sẽ bị hủy.

Nhỏ hơn và Nhỏ hơn hoặc bằng

Toán tử Less thanLess than or equal to so sánh các giá trị xem giá trị thứ nhất nhỏ hơn hay nhỏ hơn hoặc bằng giá trị thứ hai. Trong ví dụ sau đây, giá trị order.currentTotalDiscountsSet.shopMoney.amount được truy xuất từ dữ liệu cửa hàng và so sánh với giá trị thứ hai là 50.

Ví dụ về quy trình làm việc sử dụng toán tử logic nhỏ hơn hoặc bằng để hủy đơn hàng nếu dữ liệu truy xuất nhỏ hơn hoặc bằng 50

Nếu giá trị từ cửa hàng là 47 thì điều kiện là true, vì 47 nhỏ hơn hoặc bằng 50. Đơn hàng sẽ bị hủy.

At least one of

Toán tử At least one of kiểm tra xem trường có bằng giá trị bất kỳ trong danh sách được cung cấp hay không. Phải nhập riêng từng giá trị cần kiểm tra, sau đó nhấn phím enter (tương tự như thẻ). Nếu sử dụng toán tử At least one of trên mảng trống, kết quả đánh giá sẽ không chính xác. Trong ví dụ sau đây, giá trị order.lineitem.product.title được truy xuất từ dữ liệu cửa hàng và so sánh với tập hợp giá trị thứ hai: pineapple, guava, kiwi.

Ví dụ về quy trình làm việc sử dụng toán tử logic At least one of để hủy đơn hàng nếu dữ liệu truy xuất được bao gồm pineapple, guava hay kiwi

Nếu giá trị từ cửa hàng là guava thì điều kiện là true, vì guava nằm trong mảng pineapple, guava, kiwi. Đơn hàng sẽ bị hủy.

Not any of

Toán tử Not any of kiểm tra xem trường có khác với giá trị bất kỳ trong danh sách được cung cấp hay không. Phải nhập riêng từng giá trị cần kiểm tra, sau đó nhấn phím enter (tương tự như thẻ). Trong ví dụ sau đây, giá trị order.lineitem.product.title được truy xuất từ dữ liệu cửa hàng và so sánh với tập hợp giá trị thứ hai: pineapple, guava, kiwi.

Ví dụ về quy trình làm việc sử dụng toán tử logic không phải bất kỳ để hủy đơn hàng nếu dữ liệu truy xuất không bao gồm pineapple, guava, hay kiwi

Nếu giá trị từ cửa hàng là raspberry thì điều kiện là true, vì raspberry không nằm trong mảng pineapple, guava, kiwi. Đơn hàng sẽ bị hủy.

Bao gồm

Toán tử Includes so sánh các giá trị xem có dữ liệu đầu vào nào của giá trị thứ nhất bao gồm dữ liệu đầu vào của giá trị thứ hai không. Trong ví dụ sau đây, giá trị order.lineitem.product.title được truy xuất từ dữ liệu cửa hàng và so sánh với giá trị thứ hai là scrape.

Ví dụ về quy trình làm việc sử dụng toán tử logic bao gồm để hủy đơn hàng nếu dữ liệu truy xuất bao gồm chuỗi scrape

Nếu giá trị từ dữ liệu cửa hàng là skyscraper thì điều kiện là true, vì chuỗi scrape hoàn toàn nằm trong chuỗi skyscraper. Đơn hàng sẽ bị hủy.

Không bao gồm

Toán tử Does not include so sánh các giá trị xem có dữ liệu đầu vào nào của giá trị thứ nhất không bao gồm dữ liệu đầu vào của giá trị thứ hai hay không. Trong ví dụ sau đây, giá trị order.lineitem.product.title được truy xuất từ dữ liệu cửa hàng và so sánh với giá trị thứ hai là scrape.

Ví dụ về quy trình làm việc sử dụng toán tử logic không bao gồm để hủy đơn hàng nếu dữ liệu truy xuất không bao gồm chuỗi scrape

Nếu giá trị lấy từ dữ liệu cửa hàng là scrap-metal thì điều kiện là true, vì chuỗi scrape hoàn toàn không nằm trong chuỗi scrap-metal. Đơn hàng sẽ bị hủy.

Bắt đầu bằng

Toán tử Bắt đầu bằng so sánh các giá trị xem giá trị thứ nhất có bắt đầu bằng dữ liệu trong giá trị thứ hai không. Trong ví dụ sau đây, giá trị order.shippingAddress.country được truy xuất từ dữ liệu cửa hàng và so sánh với giá trị thứ hai là United.

Ví dụ về quy trình làm việc sử dụng toán tử logic bắt đầu bằng để hủy đơn hàng nếu dữ liệu truy xuất bắt đầu bằng chuỗi United

Nếu giá trị từ cửa hàng là United Kingdom thì điều kiện là true, vì chuỗi United bắt đầu chuỗi United Kingdom. Đơn hàng sẽ bị hủy.

Không bắt đầu bằng

Toán tử Does not start with so sánh các giá trị xem có phải giá trị thứ nhất không bắt đầu bằng dữ liệu trong giá trị thứ hai hay không. Trong ví dụ sau đây, giá trị order.shippingAddress.country được truy xuất từ dữ liệu cửa hàng và so sánh với giá trị thứ hai là United.

Ví dụ về quy trình làm việc sử dụng toán tử logic không bắt đầu bằng để hủy đơn hàng nếu dữ liệu truy xuất không bắt đầu bằng chuỗi United

Nếu giá trị từ cửa hàng là Canada thì điều kiện là true, vì chuỗi Canada không bắt đầu chuỗi United Kingdom. Đơn hàng sẽ bị hủy.

Kết thúc bằng

Toán tử Ends with so sánh các giá trị xem giá trị thứ nhất có kết thúc bằng dữ liệu trong giá trị thứ hai hay không. Trong ví dụ sau đây, giá trị order.lineitems.product.title được truy xuất từ dữ liệu cửa hàng và so sánh với giá trị thứ hai là last-available.

Ví dụ về quy trình làm việc sử dụng toán tử logic kết thúc bằng để hủy đơn hàng nếu dữ liệu truy xuất kết thúc bằng chuỗi last-available

Nếu giá trị từ cửa hàng là athletic socks last-available thì điều kiện có giá trị true, vì chuỗi athletic socks last-available kết thúc bằng chuỗi last-available. Đơn hàng sẽ bị hủy.

Không kết thúc bằng

Toán tử Does not end with so sánh các giá trị xem có phải giá trị thứ nhất không kết thúc bằng dữ liệu trong giá trị thứ hai hay không. Trong ví dụ sau đây, giá trị order.lineitems.product.title được truy xuất từ dữ liệu cửa hàng và so sánh với giá trị thứ hai là last-available.

Ví dụ về quy trình làm việc sử dụng toán tử logic không kết thúc bằng để hủy đơn hàng nếu dữ liệu truy xuất không kết thúc bằng chuỗi last-available

Nếu giá trị từ cửa hàng là athletic socks new thì điều kiện là true, vì chuỗi athletic socks new không kết thúc bằng chuỗi last-available. Đơn hàng sẽ bị hủy.

Toán tử null hoặc empty

Empty or does not exist

Một số trường trong dữ liệu có thể trống. Ví dụ: order.cancelReason sẽ trả về null nếu đơn hàng không bị hủy. Sử dụng empty or does not exist nếu bạn muốn trả về true khi một trường trống hoặc nullfalse nếu trường không trống.

Not empty and exists

Một số trường trong dữ liệu có thể trống. Ví dụ: order.cancelReason sẽ trả về null nếu đơn hàng không bị hủy. Sử dụng Not empty and exists nếu bạn muốn trả về true khi một trường không trống và false nếu trường trống.

Toán tử liệt kê

Toán tử liệt kê được kết hợp với toán tử của trường cho phép bạn kiểm tra các điều kiện về dữ liệu có trong danh sách.

Như trong ví dụ "at least one", bạn cần kiểm tra xem đơn hàng có chứa sản phẩm cụ thể (ở order.lineItems) có thẻ cụ thể (danh sách trong 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 at least one of.

Flow cung cấp 3 toán tử để sử dụng cho danh sách: At least one of, None ofAll of.

At least one of

Hầu hết các điều kiện có danh sách sẽ muốn sử dụng toán tử At least one of. Toán tử này sẽ trả về true nếu có bất kỳ mục nào trong danh sách khớp với điều kiện. Ví dụ: Nếu muốn kiểm tra xem đơn hàng có chứa sản phẩm kèm theo thẻ cụ thể hay không, bạn sẽ sử dụng toán tử At least one of. Khi danh sách trống hoặc khi không đáp ứng điều kiện, điều kiện sẽ trả về false.

None of

Trong một số trường hợp, bạn cần kiểm tra xem có mục nào không nằm trong danh sách không. Cách tốt nhất để tạo điều kiện này là thay đổi toán tử liệt kê thành None of. Toán tử này sẽ trả về true nếu không mục nào trong danh sách khớp với điều kiện. Lưu ý rằng nếu danh sách trống, danh sách cũng trả về true. Ví dụ: Nếu muốn kiểm tra xem sản phẩm không chứa thẻ presale hay không, bạn sẽ sử dụng None of product tags is equal to presale.

All of

Trong một số trường hợp, bạn cần kiểm tra xem tất cả mục trong danh sách có khớp với điều kiện không. Ví dụ: Bạn cần kiểm tra xem tất cả mặt hàng trong đơn hàng có nhà cung cấp sản phẩm cụ thể mang tên Acme hay không. Để làm được điều này, bạn cần sử dụng All of order line items have a product.vendor equal to Acme.

Điều kiện đặt hàng

Bạn có thể tạo quy trình làm việc có nhiều điều kiện, trong đó mỗi điều kiện có thể dẫn đến các thao tác khác nhau. Thứ tự điều kiện có vai trò quan trọng. Hoạt động kiểm tra điều kiện bắt đầu vào đầu quy trình làm việc và tiến hành qua từng điều kiện theo cách có hệ thống. Hoạt động kiểm tra này sẽ dừng lại khi một điều kiện được đáp ứng.

Kết hợp nhiều tiêu chí trong một điều kiện

Khi tạo điều kiện, bạn có thể đặt ra nhiều tiêu chí. Bạn có thể chọn cách kết hợp các tiêu chí riêng biệt với nhau.

Nếu đáp ứng tất cả điều kiện

Thao tác chọn If all conditions are met chỉ trả về phản hồi true nếu mọi tiêu chí bạn đặt ra là true. Tùy chọn này tương tự như câu lệnh AND trong lập trình.

Ví dụ: Bạn tạo một quy trình làm việc để gắn thẻ khách hàng ở Canada và chi tiêu trên 500 USD cho một đơn hàng.

Ví dụ về quy trình làm việc sử dụng điều kiện và

Quy trình làm việc này chỉ gắn thẻ khách hàng khi khách hàng ở Canada và chi tiêu trên $500 cho đơn hàng. Nếu một trong hai điều kiện này có giá trị false, khách hàng sẽ không được gắn thẻ.

Nếu đáp ứng điều kiện bất kỳ

Thao tác chọn Nếu đáp ứng điều kiện bất kỳ sẽ trả về phản hồi true nếu bất kỳ tiêu chí nào bạn đặt ra có giá trị true. Tùy chọn này tương tự như câu lệnh OR trong lập trình.

Ví dụ: Bạn tạo một quy trình làm việc để gắn thẻ các đơn hàng được cho là có mức độ rủi ro cao hoặc trung bình.

Ví dụ về quy trình làm việc sử dụng điều kiện hoặc

Quy trình làm việc này sẽ gắn thẻ đơn hàng nếu có mức độ rủi ro cao hoặc trung bình. Chỉ cần một trong hai điều kiện đó là true, đơn hàng sẽ được gắn thẻ.

Kết hợp điều kiện và thao tác

Bạn có thể kết hợp các điều kiện với nhau để tạo ra một điều kiện lớn. Khi kết hợp, tất cả các điều kiện phải được đáp ứng để đảm bảo điều kiện tổng thể là true. Nếu có bất kỳ điều kiện nào không được đáp ứng, điều kiện tổng thể sẽ là false. Trong ví dụ sau đây, khách hàng phải chấp nhận tài liệu tiếp thị và tổng giá trị của đơn hàng phải đáp ứng một ngưỡng nhất định.

Ví dụ về quy trình làm việc kiểm tra tổng số tiền đã chi tiêu của khách hàng và thêm thẻ

Tương tự, bạn có thể kết hợp các thao tác với nhau để chạy nhiều thao tác. Ví dụ trê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 hay không dựa trên tổng số tiền khách hàng đã chi tiêu trong cửa hàng. Trong ví dụ trên, các điều kiện sau đây được kiểm tra theo thứ tự xuất hiện:

  1. Gắn cho khách hàng thẻ Vàng nếu tổng giá trị lớn hơn 1.000 USD và khách hàng đồng ý nhận thông tin tiếp thị.
  2. Gắn cho khách hàng thẻ Bạc nếu tổng giá trị nhỏ hơn 1.000 USD nhưng lớn hơn 500 USD và khách hàng đồng ý nhận thông tin tiếp thị.
  3. Gắn cho khách hàng thẻ Đồng nếu khách hàng đã chi tiêu hơn 200 USD và đồng ý nhận thông tin tiếp thị.

Dữ liệu tĩnh và động trong điều kiện

Thông thường, giá trị thứ hai trong điều kiện là giá trị tĩnh được nhập thủ công (ví dụ như product.title == "your title"). Giá trị này sẽ giữ nguyên mỗi khi quy trình làm việc chạy.

Bạn cũng có thể sử dụng giá trị động nếu trường của 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 quy trình làm việc chạy. Nếu muốn 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. Không phải trường nào cũng có thể sử dụng giá trị động.

Ví dụ: Bạn tạo một quy trình làm 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.

Ví dụ về quy trình làm việc gắn thẻ đơn hàng bằng dữ liệu RHS để kiểm tra đảm bảo quốc gia thanh toán và quốc gia vận chuyển của khách hàng là giống nhau.

Trong ví dụ này, cả giá trị thứ nhất và thứ hai đều lấy từ dữ liệu cửa hàng thay vì chỉ định thủ công một chuỗi tĩnh để kiểm tra giá trị thứ hai. Nếu quốc gia trong địa chỉ thanh toán mà 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à true 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 kiểu. Ví dụ: Bạn 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 Chạy mã để chuyển đổi dữ liệu sang kiểu chính xác.

Bạn đã sẵn sàng bán hàng với Shopify?

Dùng thử miễn phí