Cú pháp bộ lọc

Trang này giải thích cú pháp mà bạn phải sử dụng để lọc tài khoản.

Cú pháp

Bạn phải đặt tất cả các giá trị không phải số nguyên trong dấu ngoặc kép ("). Người nhận để tìm hiểu xem một trường cụ thể chấp nhận những giá trị nào, hãy xem tài liệu tham khảo cho trường đó.

Bạn có thể sử dụng AND để lọc nhiều trường trong cùng một truy vấn. Bạn cũng có thể sử dụng AND để kết hợp nhiều bộ lọc relationship(...)service(...). Sau đây là ví dụ về việc kết hợp nhiều relationship(...)service(...) bộ lọc:

(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))

Ví dụ này trả về các tài khoản sau:

  • Tất cả tài khoản có mối quan hệ quản lý tài khoản với một tài khoản khác, và một mối quan hệ bổ sung đang chờ chấp nhận.

  • Tất cả tài khoản có tên hiển thị là "store" và có mối quan hệ với các tài khoản khác.

Bạn không thể sử dụng AND để lọc nhiều giá trị trong cùng một trường. Cho ví dụ: bạn không thể sử dụng accountName = "*A*" AND accountName = "*B*".

Bạn có thể sử dụng OR để lọc hai trường trong cùng một truy vấn. Đóng bộ lọc tiêu chí ở mỗi bên của toán tử OR có dấu ngoặc đơn. Ví dụ: (accountName = "storeA") OR (accountName = "storeB")

Bạn chỉ có thể sử dụng OR để kết hợp 2 trường. Ví dụ: bạn không thể sử dụng (accountName = "storeA") OR (accountName = "storeB") OR (accountName = "storeC").

Không được dùng dấu ngoặc đơn trừ khi dùng toán tử ANDOR, và trong các lệnh gọi hàm, như relationship(...)service(...).

Đối với các trường chuỗi như accountNameaccountIdAlias, bạn có thể lọc cho các giá trị có chứa một từ hoặc chuỗi ký tự nhất định bằng cách đặt ký tự trình tự trong dấu hoa thị (*). Ví dụ: accountName = "*foo*" trả về tất cả các tài khoản có accountName chứa foo, chẳng hạn như "storeFoo".

Bạn có thể lọc các giá trị không chứa một trình tự nhất định bằng cách sử dụng !=*. Ví dụ: accountName != "*foo*" trả về tất cả tài khoản có accountName không chứa foo.

Khoảng trắng thừa sẽ bị bỏ qua. Ví dụ: foo AND bar giống với foo AND bar.

Thông số kỹ thuật

Các bộ lọc tuân theo một tập con của bộ lọc AIPEBNF chính thức ngữ pháp:

filter
    : accountFilterDisj
    | accountFilterConj
    ;
accountFilterDisj
    : "(" accountFilterConj " OR " accountFilterConj ")"
    ;
accountFilterConj
    : accountFilter {" AND " accountFilter}
    ;
accountFilter
    : displayNameFilter | relationshipFn
    ;
displayNameFilter
    : "displayName" comparator value
    ;
relationshipFn
    : "relationship(" relationshipConj ")"
    ;
relationshipConj
    : relationshipFilter {" AND " relationshipFilter}
    ;
relationshipFilter
    : "providerId = " numValue
    | "callerHasAccessToProviderFilter()"
    | "externalAccountId" comparator value
    | "accountIdAlias" comparator value
    | serviceFn
    ;
serviceFn
    : "service(" serviceConj ")"
    ;
serviceConj
    : serviceFilter {" AND " serviceFilter}
    ;
serviceFilter
    : handshakeStateFilter
    | typeFilter
    ;
handshakeStateFilter
    : "handshakeState = " value
    ;
typeFilter
    : "type = " value
    ;
comparator
    : " = " | " != "
    ;